没有合适的资源?快使用搜索试试~ 我知道了~
线性方程组多种方法求解(c语言实现),文档报告完整,代码可移除实现
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 8 下载量 192 浏览量
2022-06-02
15:57:39
上传
评论 1
收藏 128KB DOC 举报
温馨提示
试读
11页
用迭代法解线性方程组AX=y,首先进行等价变换。构造同解线性方程组X=MX+g(对AX=y可构造各种等价的方程组,分解A=N-P,N可逆,则由AX=y得到X=N-1PX+N-1y=MX+g,以此构造迭代关系。 本文分别用了雅克比迭代法、赛德尔迭代法、超松弛迭代法解决此类问题。 本文将线性方程组的求解过程用计算机实现,本文的编写有以下几个要求: 1.用多种方法和思想求解线性方程组。 2.对问题进行简洁易懂的理论证明,突出了线性代数的理论和基本思想,使数学方法更加利于理解掌握。 3.简单明了的看出算法的计算效果、稳定性、收敛效果、计算精度以及优劣性。
资源推荐
资源详情
资源评论
一.问题描述
用迭代法解线性方程组 AX=y,首先进行等价变换。构造同解线性方程组 X=MX+g
(对 AX=y 可构造各种等价的方程组,分解 A=N-P,N 可逆,则由 AX=y 得到 X=N-
1PX+N-1y=MX+g,以此构造迭代关系。 本文分别用了雅克比迭代法、赛德尔迭代法、
超松弛迭代法解决此类问题。
二.基本要求
本文将线性方程组的求解过程用计算机实现,本文的编写有以下几个要求:
1.用多种方法和思想求解线性方程组。
2.对问题进行简洁易懂的理论证明,突出了线性代数的理论和基本思想,使数学方法
更加利于理解掌握。
3.简单明了的看出算法的计算效果、稳定性、收敛效果、计算精度以及优劣性。
三 .程序说明
1.算法分析
高斯列主元消去法:高斯顺序消去法的基本思想是:对线性代数方程组所对应的增广
矩阵(A|b)进行一系列“把某一行的非零常数倍加到另一行上”的初等变换,使得(A|b)
中 A 的对角线一下的元素全变为 0,从而使原方程组等价的转化为容易求解的上三角形线
性代数方程组,再通过回代得到上三角形线性代数方程组的解,即可求得原方程组的解。
其中回代求解为: Error: Reference source not found (k=n-1,…,2,1)
雅克比迭代法:迭代法求解线性方程组 Ax=b,先给定解 x 的近似初始值 x(0),然
后产生一系列向量{x(k)}(k=0,1,2,3,...)。迭代法首先把方程组 Ax=b 转化成具有
x=Bx+f 形式的等 价方程组 后,对于 给定的初 值 x(0 ) 由 x (k+1)=Bx( k )
+f(k=0,1,2,3,...).
其中第 i 个方程根求解第 i 个分量:
( 1`)
( )
1
( )
k
n
ii j
k
i
i
j
ii ii
j i
a x
b
x
a a
解雅克比迭代法的计算公式为:
( k=0,1,2 , … … :i=1,2,3,
……..n)
1
得到一系列近似解的向量。再给定精度 确定解得精度。
赛德迭代法:方法同上,分量形式改为:
1
( ) ( ) ( 1)
1 1
1
i n
k k k
i ii j ii j i
j j i
ii
x a x a x b
a
2.模块中的主函数
· void liezhuyuan(),高斯列主元消去法
· void gaosixiaoyuan(),一般高斯消元法
· void yakebi(),雅克比迭代法
· void gaisisaidai(), 高斯赛代迭代法
· main(),主函数,用 while 循环和 switch 选择结构进行进行循环交互性操作。
四.源程序
#include<stdio.h>
#include<math.h>
#include<process.h>
void liezhuyuan(double A[][100],double b[],int size)//列主元
{
double x[100]={0};
double Aik,S,temp;
int i,j,k;
double max;//列主元的绝对值
int col;//列主元所在的行
//-------消去过程---------
for(k=0;k<size-1;k++)
{
max=fabs(A[k][k]);
col=k;
//查找最大元素所在的行
for(i=k;i<size;i++)
{
if(max<fabs(A[i][k]))
{
2
max=fabs(A[i][k]);
col=i;
}
}
for(j=k;j<size;j++)
{
temp=A[col][j];
A[col][j]=A[k][j];
A[k][j]=temp;
}
temp=b[col];b[col]=b[k];b[k]=temp;
for(i=k+1;i<size;i++)
{
Aik=A[i][k]/A[k][k];
for(j=k;j<size;j++)
{
A[i][j]=A[i][j]-Aik*A[k][j];
}
b[i]=b[i]-Aik*b[k];
}
}
//回代过程
x[size-1]=b[size-1]/A[size-1][size-1];
for(k=size-2;k>=0;k--)
{
S=b[k];
for(j=k+1;j<size;j++)
{
S=S-A[k][j]*x[j];
}
x[k]=S/A[k][k];
}
//solution
printf("The solution x[]=\n");
3
剩余10页未读,继续阅读
wei3411
- 粉丝: 2
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页