⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 雅可比迭代.cpp

📁 雅可比迭代它也是数值分析中的经典的算法
💻 CPP
字号:
//雅可比迭代的C语言实现
#include<iostream.h>
#include<stdio.h>
#include<math.h>
#define T 100
void main()
{int n,N,i,j,k;
float a[T][T],b[T],x0[T],x[T],sum,e;
double max;
cout<<"//雅可比迭代程序实例//"<<endl;
md:printf("输入维数,最大迭数以及精确度:\n");
scanf("%d %d %f",&n,&N,&e);
cout<<"输入矩阵A的值"<<endl;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"请输入矩阵b的值"<<endl;
for(i=1;i<=n;i++)
cin>>b[i];
cout<<"请输入初值x0"<<endl;
 
  for(j=1;j<=n;j++)
cin>>x0[j];

k=1;
while(k<=N)
{
  for(i=1;i<=n;i++)
  { sum=0;
    for(j=1;j<=n;j++)
     { if(i!=j)
       sum+=a[i][j]*x0[j];
      }
 x[i]=(b[i]-sum)/a[i][i];
   }
 max=fabs(x[1]-x0[1]);
for(i=1;i<=n;i++)
 {if(fabs(x[i]-x0[i])>max)
  max=fabs(x[i]-x0[i]);
  }

if(max<e)
{cout<<"经过"<<k<<"次雅可比迭代,结果为:"<<endl;
	for(i=1;i<=n;i++)
	{ printf("x%d=%-6.10f\n",i,x[i]); 
	}
	cout<<endl<<endl;
	goto md;
	k=N+1;
}
else if(k<N) {  k++;
        for(i=1;i<=n;i++)
        x0[i]=x[i];
}
else {
	cout<<"迭代次数太少,达不到此精确度!"<<endl<<endl;
	goto md;
     k=N+1;
}
   } 

}


//郑重声明:此程序解释权归吴贺,任何人不得将其用于其它领域。//
 
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -