雅可比迭代法

来源:互联网 发布:鹊桥淘宝佣金怎么撤回 编辑:程序博客网 时间:2024/04/28 23:27

这里写图片描述

这里写图片描述

//节省时间不设置精度//ps:注意收敛条件#include <stdio.h>#include <stdlib.h>int n = 3;//3阶行列式 double sum(int i,int a[3][3],double x0[3]){    double result = 0.0;    for(int j = 0 ; j < n ; j++){        if( j != i){            result += a[i][j] * x0[j];        }    }    return  result;}int main(){    int A[3][3] = {5, 1, 2, 3, 8, -4, -3, 2, 7};    int b[3] = {21, -23, 15};    //输出A和b     printf("A:\n");    for(int i = 0; i < n; i++){        for(int j = 0; j < n; j++){            printf("%d\t", A[i][j]);        }        printf("\n");    }    printf("b:\n");    for(int i = 0; i < n; i++){        printf("%d\t", b[i]);    }    printf("\n");//  double e;    double x0[3] = {0,0,0};//初始化向量     double t[3] = {0,0,0};//临时变量     double x[3] = {0,0,0};//k+1    int times = 20;//迭代次数     for(int  k = 0; k < times; k++){        for(int i = 0; i < n; i++){        x[i] =  (b[i] - sum(i,A,x0)) / A[i][i] ;        t[i] = x[i];            }        printf("\n第%d次迭代:\n",k+1);        for(int j = 0; j < n; j++){            x0[j] = t[j];            printf("x0[%d]=%.6lf\t",j,t[j]);        }   //更新x0里的值并输出     }    return 0;}

测试结果:

这里写图片描述

原创粉丝点击