[算法][雅可比迭代解方程组]
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 #define maxn 50 5 int n;//维数 6 double a[maxn][maxn];//系数矩阵 7 double b[maxn];//b向量 8 double kc=0.000001;//精度控制常数 9 double x[maxn];//x向量 10 double y[maxn]; 11 double e; 12 int N0;//最大迭代次数 13 //e=||x-(k+1)-x(k)||.inf.;当e<kc时计算终止;N0为最大迭代次数; 14 //t用于暂时存放Xi的原值,以便计算Xi-(k)-Xi(k-1) 15 int i,j,k; 16 bool read(){ 17 cout<<"|----------------------------------------|\n"; 18 cout<<"请输入矩阵规模n:= "; 19 cin>>n; 20 cout<<"请输入系数矩阵A:= \n"; 21 for(i=1;i<=n;i++)//输入a[][] 22 for(j=1;j<=n;j++) 23 cin>>a[i][j]; 24 cout<<"请输入b向量b:= \n"; 25 for(i=1;i<=n;i++)cin>>b[i];//输入b[] 26 cout<<"请输入x向量的初始值x:= \n"; 27 for(i=1;i<=n;i++)cin>>x[i];//输入x[]初始值 28 cout<<"请输入估计最大迭代次数N0:= \n"; 29 cin>>N0; 30 return 1; 31 } 32 int main(){ 33 while(read()){ 34 for(k=1;k<=N0;k++){ 35 e=-1; 36 for(i=1;i<=n;i++){ 37 y[i]=b[i]; 38 for(j=1;j<=n;j++)if(i!=j){ 39 y[i]-=a[i][j]*x[j]; 40 } 41 y[i]/=a[i][i]; 42 if(fabs(x[i]-y[i])>e)e=fabs(x[i]-y[i]); 43 }if(e<kc){//输出 44 cout<<"|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n"; 45 cout<<"最大迭代次数 k = "<<k<<'\n'; 46 for(i=1;i<=n;i++)cout<<"x["<<i<<"]="<<y[i]<<'\n'; 47 goto END; 48 }else{ 49 for(i=1;i<=n;i++)x[i]=y[i]; 50 } 51 } 52 cout<<"|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n"; 53 cout<<"失败\n"; 54 END:; 55 cout<<"|----------------------------------------|\n\n"; 56 }return 0; 57 } 58 /* 59 6 60 61 4 -1 0 -1 0 0 62 -1 4 -1 0 -1 0 63 0 -1 4 -1 0 -1 64 -1 0 -1 4 -1 0 65 0 -1 0 -1 4 -1 66 0 0 -1 0 -1 4 67 68 0 5 -2 5 -2 6 69 70 0 0 0 0 0 0 71 72 50 73 */
分类:
算法_算法与数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?