对于输入的方程系数,求二元一次方程组的解.用PASCAL
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/31 03:55:01
对于输入的方程系数,求二元一次方程组的解.用PASCAL
对于输入的方程系数,求二元一次方程组的解.
用PASCAL
对于输入的方程系数,求二元一次方程组的解.用PASCAL
刚在上一个问题上答完,给你再贴过来吧.
只不过那里只讲了做法,没有具体用算法实现.要用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认识),如果编译时出错,把它们删掉