您现在的位置:首页 > 教案格式 > 正文

c语言解三元一次方程组/* 2013 年 4 月 9 日

2019-04-25 18:12 网络整理 教案网

c语言解三元一次方程组_三元一次方程_解三元一次方程组的基本思想是

c语言解三元一次方程

/* 2013 年 4 月 9 日 12:23:20 功能: 已知有一三元一次方程组如下,方程系数由键盘输入, 求其 3 个根。 */ # include <stdio.h> int main(void) { int i, j, m, n, r, k=0, t; //i,j,m,k,t 作为循环计数变量; n 表示有 n 个未知数, 即n 元; r 表示有 r 个方程组成方程组。 // n = r = 3; printf("请输入未知数个数 n 和方程的个数:\n"); scanf("%d %d", &n, &r); //n 表示有 n 个未知数, 即 n 元; r 表示有 r 个方程组成方程组。 float a[11][20];//用二维数组存储方程组参数。 11 和 100 课改动。 这里的程序限 10 元 20 个方程的方程组。 float b[200];//原来存放之间变量。 printf("请输入方程组参数\n"); for(j=0; j<n; j++) for(i=0; i<r+1; i++) scanf("%f", &a[j][i]); /* for(j=0; j<n; j++) //此段程序作为检测该程序正确性的试数作用。c语言解三元一次方程组

c语言解三元一次方程组_三元一次方程_解三元一次方程组的基本思想是

{ for(i=0; i<n+1; i++) printf("%f ", a[j][i]); printf("\n"); }float a[10][20]={ { 2,2,-1,6} ,{ 1,-2,4,3} ,{ 5,7,1,28} } ; */ if(r<n) printf("方程有无穷解\n"); if(r==n) { printf("方程有唯一解\n"); for(t=0; t<n-1; t++)//循环次数: 当 t=0 时, 仅将a[1][0],a[2][0],a[2][1]的值转换为 0; t=1 时, 才将其转换成最简型阶梯矩阵。 {for(m=0; m<n; m++) //m 表示第 m 列for(j=0; j<n; j++)//j 表示第 j 行if(j!=m){b[k] = a[j][m]/a[m][m];for(i=0; i<n+1; i++) //因为一行的每个元素均要进行运算等式两边才会相等。

c语言解三元一次方程组_解三元一次方程组的基本思想是_三元一次方程

a[j][i] -= a[m][i]* b[k];b[k]=0;//此处是必不可少的。 因为内存中会有垃圾值, 必须要处理。k++;} } for(j=0; j<n; j++)//为了将其转换成单位矩阵, 见《线性代数》 第98 页。 {a[j][n] /= a[j][j]; a[j][j] /=a[j][j]; }} for(j=0; j<r; j++) printf("x[%d] = %f\n", j, a[j][n]); //输出最终结果, 即未知数 x,y,z...的值。for(j=0; j<n; j++) { for(i=0; i<n+1; i++) printf("%f ", a[j][i]); printf("\n"); } return 0; } /* 输入为: 2 2 -1 6 1 -2 4 3 5 7 1 28 即方程组为: 2x+2y- z=6x-2y+4z=3 5x+7y+ z=28 其正确结果是: x=1,y=3,z=2 在 VC++6.0 中的输出结果是: —————————————————————— 请输入未知数个数 n 和方程的个数: 3 3 请输入方程组参数 2 2 -1 6 1 -2 4 3 5 7 1 28 方程有唯一解 x[0] = 1.000000 x[1] = 3.000000 x[2] = 2.000000 1.000000 -0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 3.000000 0.000000 0.000000 1.000000 2.000000 */