[算法][雅可比迭代解方程组]

复制代码
 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 */
复制代码

 

 

 

 

posted @   beautifulzzzz  阅读(2340)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示