c语言解线性方程组的编程题 【做的好会多给分】

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:41:49
这么一道矩阵题,(跟在字母后面的数为下标,因为打起来费事,所以偷懒这样写了)
a11*x1+a12*x2+……+a1n*xn=b1
a21*x1+a22*x2+……+a2n*xn=b2
……………………………………
……………………………………
an1*x1+an2*x2+……+ann*xn=bn

由以上n个方程组成的方程组,要求当给a11,a12……ann赋上n*n个值,给b1--bn赋上n个值后,求出x1,x2,x3……xn。编写此程序

不管是你复制别处的程序还是你自己编写的程序,麻烦你先运行一遍,没问题了再写上来。如果做的没问题,我会加分的
匿名的那位,我运行了你的程序,好像还是有个错误。在result那行。
还有ilovelyi,我运行了你的程序,没发现错误,我还要再验证一下它的正确性以及语言的意义。如果没问题,我就把分给你了。你能把你的程序稍微做点注释吗,我好看懂一点,谢谢。看来你是高手哇 。
这题目老师说了要考虑到无解的情况,我还没研究你的程序,不知道你考虑到了吗

以下算法的适用条件:A的各阶主子式不为零
另外还可以采用
直接法:
消元法:Gauss-Jordan消元法,
分解法:Dolittle分解 (我用的是Courant分解法),追赶法,对称正定矩阵的LDL‘分解
----------
迭代法:
Jacobi迭代
Gauss-Seidel迭代
松弛迭代
-----------------
你上网可以搜索一下,或者看看数值计算方面的书

OK, 你看看这个, 另外还加了注释 :
Courant分解算法:
aX = b, 作 A=LU, L是下三角矩阵, U是上三角矩阵
即L =
| L11
| L21 L22
| L31 L32 L33
| ..............
| Ln1 Ln2 ........Lnn

U =
| 1 U12 ..... U1n
| 空格 1 ..... U2n
| 空格 空格 ........
| 空格 空格 空格 空格 空格1
---------------------------------------------------
aX = b -----> LUX = b
记 UX = y,
由Ly = b得到
因为无法输出数学符号,以下采用[i, j]Ai 表示对Ai从i到j求和
yi = (bi - [j=1, i-1]Lij yj) / Lii i = 1, 2, ..., n
由UX = y得到
xi = yi - [j=i+1, n]uij xj j = n, n-1, ..., 2, 1
你在纸上验证一下就明白了
--------------------------------------------------------------

以下采用Courant分解 解 aX = b, 经检查,程序运行正确
这是运行结果: