雅可比(jacobi)迭代法,c語言實現
阿新 • • 發佈:2018-12-15
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <bits/stdc++.h> using namespace std; double A[1010][1010]; double B[1010]; double X[1010]; double X2[1010]; int main() { //freopen("ceshi","r",stdin); //檔案輸入; //freopen("b.txt","w",stdout); //檔案輸出; int n; printf("請輸入矩陣階數:\n"); while(~scanf("%d",&n)) { for(int i=1; i<=n; i++) //輸入A矩陣; { printf("請輸入矩陣第%d行:\n",i); for(int j=1; j<=n; j++) { scanf("%lf",&A[i][j]); } } printf("請輸入行列式B:\n"); for(int i=1; i<=n; i++) //輸入B行列式; { scanf("%lf",&B[i]); } memset(X,0,sizeof(X)); memset(X2,0,sizeof(X)); for(int i=0; i<13; i++) //雅可比迭代; { for(int j=1; j<=n; j++) { for(int k=1; k<=n; k++) { if(j!=k) { X[j]+=(-1)*(A[j][k]/A[j][j])*X2[k]; } } X[j]+=B[j]/A[j][j]; } printf("第%d次迭代結果\n",i+1); for(int j=1; j<=n; j++) { X2[j]=X[j]; X[j]=0; printf("%.4f ",X2[j]); } printf("\n"); } printf("請輸入下一個矩陣階數:\n"); } return 0; }