雅可比迭代法(c++ 数值分析)

本文介绍了一个使用C++实现的雅可比迭代法程序,该程序用于求解线性方程组。通过输入系数矩阵a和常数项向量b,程序能够逐步迭代直至收敛到方程组的解。雅可比迭代法是一种数值分析中常见的求解线性方程组的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
const int n=4;
int main()
{
 float a[n][n],b[n];
 int i,j;
    void yacobi(float a[][n],float b[n]);          //声明
 cout<<"please input a[i][j]:"<<endl;
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   cin>>a[i][j];
 cout<<endl;
 cout<<"please input b[i]:"<<endl;
 for(i=0;i<n;i++)
  cin>>b[i];
 cout<<'/n';
 yacobi(a,b);                                   //调用
 return 0;
}


void yacobi(float a[][n],float b[n])
{int i,j;
 float x1[n],x2[n],sum,max,cha;
 for(i=0;i<n;i++)
  x1[i]=1/a[i][i]*b[i];
 do
 {
      for(i=0;i<n;i++)
   {
             sum=0;
             for(j=0;j<n;j++)
           sum+=a[i][j]*x1[j];
       x2[i]=x1[i]+1/a[i][i]*(b[i]-sum);
    cout<<setw(15)<<x2[i];
   }
   cout<<endl;
      max=fabs(x1[0]-x2[0]);
   for(i=1;i<n;i++)
    if(max<(cha=fabs(x1[i]-x2[i]))) 
       max=cha;
   for(i=0;i<n;i++)
    x1[i]=x2[i];
 }while(max>0.00001);
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值