• 雅可比迭代法和高斯赛德尔迭代法


    刚学 Jacobi算法和Gauss_Siedel算法不久,觉的对以后学习会有帮助,所以记下来,希望感兴趣的朋友共勉!

    雅克比迭代
    #include<iostream>
    #include
    "math.h"
    using namespace std;
    #define n 3
    double a[n][n]={{5,2,1},{-1,4,2},{2,-3,10}}, x[n]={-3,2,1}, b[n]={-12,20,3}, c[n];
    int i=0,j,k=0,counter=15;
    int main()
    {

    int k=0,i=0;
    double num1,E;
    float y[n];
    do
    {
    E
    =0;
    for(j=0;j<n;j++)
    {
    c[j]
    =x[j];
    }
    num1
    =0;
    for(j=0;j<n;j++)
    {
    if(j!=i)
    num1
    =num1+a[i][j]*x[j];
    }
    for(j=0;j<n;j++)
    {
    c[j]
    =x[j];
    }

    y[i]
    =(b[i]-num1)/a[i][i];

    if(i<n)
    { i
    ++; }

    else
    {
    for(j=0;j<n;j++)
    { x[j]
    =y[j]; }

    for(j=0;j<n;j++)
    {
    if(E<(float)fabs(c[j]-y[j])) E=(float)fabs(c[j]-y[j]);
    }
    if(k>=7)
    { cout
    <<"Iterations is "<<k+1<<","<<"Iterative precision is " ;
    printf(
    "%.6lf\n",E);
    for(j=0;j<n;j++)
    printf(
    "x[%d]=%.5lf\t",j,x[j]);
    cout
    <<endl<<endl;
    }
    i
    =0;
    k
    ++;
    if(E<0.001) break;
    }
    }
    while(k<=counter);
    cout
    <<"Iterations is "<<k<<endl;
    cout
    <<"Iterative terminating condition ";
    printf(
    "x[%d]-x[%d]oo<%.6lf\n",k,k-1,E);
    cout
    <<"\t\t---------Solution-----------"<<endl;
    for(i=0;i<n;i++)
    {
    printf(
    "x[%d]=%.5lf\n",i,x[i]);
    }
    }
    高斯-赛德尔迭代法
    #include <iostream>
    #include
    <math.h>
    using namespace std;
    int main()

    {
    double a[3][3]={{1,2,-2},{3,1,-1},{2,4,1}},b[3]={10,12,-20};

    double x[3]={0,0,0},sum1,sum2;

    int i,j,k,n=3;

    for (k=0;k<5;k++)

    {
    for(i=0;i<n;i++)

    { sum1
    =0;sum2=0;

    for(j=0;j<i-1;j++)

    { sum1
    =sum1+a[i][j]*x[j];

    }

    for(j=i+1;j<n;j++)

    {sum2
    =sum2+a[i][j]*x[j];}

    x[i]
    =(b[i]-sum1-sum2)/a[i][i];

    }

    for(i=0;i<n;i++)

    { printf(
    "x%d=%-15f",i+1,x[i]);}

    printf(
    "\n");

    }

    }
  • 相关阅读:
    win10自带邮箱应用无法查看qq邮箱应用解决办法
    Ubuntu紫色背景颜色代码
    VMware中对Linux虚拟机的网络配置静态IP的配置
    CentOS 7在VMware 12中共享文件看不见的问题?
    C++中让人忽视的左值和右值
    C++ allocator类学习理解
    C++11新特性 -----> 右值引用 &&
    重新认识new
    关于C++中nothrow的某某某
    stopPropagation, preventDefault 和 return false 的区别
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/1896063.html
Copyright © 2020-2023  润新知