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

简介:


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



相关文章
|
7月前
|
机器学习/深度学习 传感器 算法
【物理应用】基于FDM 和_Gauss Seidel 迭代求解器半(渗漏)承压含水层中二维地下水流方程附matlab代码
【物理应用】基于FDM 和_Gauss Seidel 迭代求解器半(渗漏)承压含水层中二维地下水流方程附matlab代码
|
9月前
|
机器学习/深度学习 Python
|
算法
秒懂算法 | 递推方程求解方法
时间复杂度和空间复杂度表示为递推方程的两种求解方法。
201 1
秒懂算法 | 递推方程求解方法
【矩阵分析】矩阵幂级数 发散 条件 || 幂级数 与 解析函数 的关系 || 幂级数 收敛半径r 的求法
【矩阵分析】矩阵幂级数 发散 条件 || 幂级数 与 解析函数 的关系 || 幂级数 收敛半径r 的求法
【矩阵分析】矩阵幂级数 发散 条件 || 幂级数 与 解析函数 的关系 || 幂级数 收敛半径r 的求法
|
机器学习/深度学习 算法
《最优化方法》——无约束具体算法以及KK
《最优化方法》——无约束具体算法以及KK
285 0
《最优化方法》——无约束具体算法以及KK
|
JavaScript 算法 前端开发
【算法】[困难]-直方图的水量-动态规划
给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。
【算法】[困难]-直方图的水量-动态规划
【组合数学】递推方程 ( 有重根递推方程求解问题 | 问题提出 )
【组合数学】递推方程 ( 有重根递推方程求解问题 | 问题提出 )
141 0
|
机器学习/深度学习
【组合数学】递推方程 ( 常系数线性非齐次递推方程 的 非齐次部分是 多项式 与 指数 组合方式 | 通解的四种情况 )
【组合数学】递推方程 ( 常系数线性非齐次递推方程 的 非齐次部分是 多项式 与 指数 组合方式 | 通解的四种情况 )
172 0
|
机器学习/深度学习
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
185 0
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
|
机器学习/深度学习
【组合数学】递推方程 ( 非齐次部分是指数的情况 | 非齐次部分是指数的情况示例 )
【组合数学】递推方程 ( 非齐次部分是指数的情况 | 非齐次部分是指数的情况示例 )
113 0