对于输入的方程系数,求二元一次方程组的解.
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 05:48:00
对于输入的方程系数,求二元一次方程组的解.
用PASCAL
用PASCAL
![对于输入的方程系数,求二元一次方程组的解.](/uploads/image/z/2295637-61-7.jpg?t=%E5%AF%B9%E4%BA%8E%E8%BE%93%E5%85%A5%E7%9A%84%E6%96%B9%E7%A8%8B%E7%B3%BB%E6%95%B0%2C%E6%B1%82%E4%BA%8C%E5%85%83%E4%B8%80%E6%AC%A1%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84%E8%A7%A3.)
刚在上一个问题上答完,给你再贴过来吧.
只不过那里只讲了做法,没有具体用算法实现.要用pascal编程也简单,把各系数存入一个二维数组中(对于二元一次方程组,数组大小为 3 * 2,三元一次方程组为 4 * 3,等等),然后按所介绍的方法进行就可以了.
下面是我刚刚编完的,请参考一下:
program SolveEquation;
const //为数组的行数与列数,你可以修改它以适应其它元数的方程组
Rows = 2;
Cols = 3;
var
C:array[1..Rows,1..Cols] of Real; //系数及常数项
R1,R2:Real;
m,n,i:Integer;
begin
// 输入
Writeln('The Equation is ax + by = c:');
Write(' Input the coefficients (a,b,c) of the 1st equation:');
Readln(C[1,1],C[1,2],C[1,3]);
Write(' Input the coefficients (a,b,c) of the 2nd equation:');
Readln(C[2,1],C[2,2],C[2,3]);
//高斯消元
for n := 1 to Rows do
begin
R1 := C[n,n];
for m := 1 to Cols do C[n,m] := C[n,m] / R1; //使每个方程对角线上的系数为1
for i := 1 to Rows do if i n then //依次对其它方程的第n项进行消元
begin
R2 := C[i,n];
for m := 1 to Cols do C[i,m] := C[i,m] - C[n,m]*R2;
end;
end;
Writeln('The result is:');
Writeln(' x = ',C[1,3],' y = ',C[2,3]);
Readln;
end.
其实解二元一次方程组可以简单一些,这个程序主要是为了演示一下高斯消元
注释使用了双斜杠,这种C++风格的注释老的版本的pascal编译器不认识 (Free pascal和Delphi认识),如果编译时出错,把它们删掉
只不过那里只讲了做法,没有具体用算法实现.要用pascal编程也简单,把各系数存入一个二维数组中(对于二元一次方程组,数组大小为 3 * 2,三元一次方程组为 4 * 3,等等),然后按所介绍的方法进行就可以了.
下面是我刚刚编完的,请参考一下:
program SolveEquation;
const //为数组的行数与列数,你可以修改它以适应其它元数的方程组
Rows = 2;
Cols = 3;
var
C:array[1..Rows,1..Cols] of Real; //系数及常数项
R1,R2:Real;
m,n,i:Integer;
begin
// 输入
Writeln('The Equation is ax + by = c:');
Write(' Input the coefficients (a,b,c) of the 1st equation:');
Readln(C[1,1],C[1,2],C[1,3]);
Write(' Input the coefficients (a,b,c) of the 2nd equation:');
Readln(C[2,1],C[2,2],C[2,3]);
//高斯消元
for n := 1 to Rows do
begin
R1 := C[n,n];
for m := 1 to Cols do C[n,m] := C[n,m] / R1; //使每个方程对角线上的系数为1
for i := 1 to Rows do if i n then //依次对其它方程的第n项进行消元
begin
R2 := C[i,n];
for m := 1 to Cols do C[i,m] := C[i,m] - C[n,m]*R2;
end;
end;
Writeln('The result is:');
Writeln(' x = ',C[1,3],' y = ',C[2,3]);
Readln;
end.
其实解二元一次方程组可以简单一些,这个程序主要是为了演示一下高斯消元
注释使用了双斜杠,这种C++风格的注释老的版本的pascal编译器不认识 (Free pascal和Delphi认识),如果编译时出错,把它们删掉