好文档 - 专业文书写作范文服务资料分享网站

雅克比迭代法

天下 分享 时间: 加入收藏 我要投稿 点赞

雅克比迭代法

上机题目:

用雅克比迭代法解线性方程组 上机程序:

#include #include main() {

printf(\此线性方程组的增广矩阵如下: \\n \// 下面循环是输出增广矩阵(A, b)

printf(\此方程组的精确解为 x=(-4, 3, 2),\\n\显示精确解以便于对比

// 输出初始迭代向量

printf(\迭代的初始值x^0=(\for (i=0;i

// 输出增广矩阵(A, b)完

for (k=0;k

for (i=0;i

printf(\

double A[3][3]={{5,2,1},{-1,4,2},{2,-3,10}},b[3]={-12,20,3}; // 输入系数矩阵A 和 右端向量b double n=3, tol=1.0e-3,x[3]={-3,1,1}; // 输入方程大小n,误差限tol, 和初始向量 x double y[3]; // 记录每次迭代产生的新的近似解

double maxerr; // maxerr 记录相邻两个数值解想x 与 y 的差的绝对值的最大的那个分量。

int k,i,j;

// 输出初始迭代向量完

printf(\误差限是%f \\n\输出误差限

printf(\ Jacobi迭代解序列X^(k) max|x^(k+1)-x^(k)| \\n \printf(\

for(i=0;i

printf(\ \

printf(\// Jacobi迭代 k=0;

//求相邻两个数值解想x 与 y 的差的绝对值的最大的那个分量

printf(\ }

for(i=0;i

for(i=0;i

x[i]=y[i];

maxerr=fabs(y[0]-x[0]); for (j=1;j

{ if (maxerr

maxerr=fabs(y[j]-x[j]);

{ for(i=0;i

double T=0.0; { }

y[i]=(b[i]-T)/A[i][i];

if(j==i)continue;

for(j=0;j

T=T+A[i][j]*x[j];

// Jacobi迭代完

//求相邻两个数值解想x 与 y 的差的绝对值的最大的那个分量完

k=k+1;

printf(\

}while(maxerr>tol);

运行结果:

雅克比迭代法

雅克比迭代法上机题目:用雅克比迭代法解线性方程组上机程序:#include#includemain(){printf(\此线性方程组的增广矩阵如下:\\n\//下面循环是输出增广矩阵(A,b)pr
推荐度:
点击下载文档文档为doc格式
6e0a61ny8v9uewu2s0h44x67j2pwjr01eah
领取福利

微信扫码领取福利

微信扫码分享