线性方程组的古典迭代算法

原创 2006年05月27日 08:38:00

#include <math.h>

 //雅克比迭代

int Jacobi(double **a,double *b,double *x,int dim,

double eps=0.0001,int CNT=100000)

{

    double *y=new double [dim];

    double err=1.0;

    int i,j,count=0;

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

        y[i]=0;

    while(err>eps&&count<CNT)

    {

        err=0;

        count++;

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

        {

            x[i]=0;

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

                x[i]+=a[i][j]*y[j];

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

                x[i]+=a[i][j]*y[j];

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

            if(err<fabs(x[i]-y[i]))

                err=fabs(x[i]-y[i]);

        }

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

            y[i]=x[i];

    }

    return count;

}

//高斯——赛德尔迭代

 

int G_S(double **a,double *b,double *x,int dim,double eps=0.0001,int CNT=100000)

{

    double y;

    double err=1.0;

    int i,j,count=0;

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

        x[i]=0;

    while(err>eps&&count<CNT)

    {

        err=0;

        count++;

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

        {

            y=x[i];x[i]=0;

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

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

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

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

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

            if(err<fabs(y-x[i]))

                err=fabs(x[i]-y);

        }

    }

    return count;

}

//超松弛迭代

 

int SOR(double **a,double *b,double *x,int dim,double w=1,double eps=0.0001,int CNT=100000)

{

    double y;

    double err=1.0;

    int i,j,count=0;

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

        x[i]=0;

    while(err>eps&&count<CNT)

    {

        err=0;

        count++;

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

        {

            y=x[i];

            x[i]=0;

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

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

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

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

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

            x[i]=(1-w)*y+w*x[i];

            if(err<fabs(y-x[i]))

                err=fabs(x[i]-y);

        }

    }

    return count;

}

相关文章推荐

线性方程组求解算法

  • 2011年10月28日 15:11
  • 688KB
  • 下载

各种线性方程组求解算法的C++实现

头文件: /* * Copyright (c) 2008-2011 Zhang Ming (M. Zhang), zmjerry@163.com * * This program is f...
  • gillerr
  • gillerr
  • 2011年11月23日 21:48
  • 3736

线性方程组 精确解 近似解 算法整理

线性代数方程组 精确解 近似解的几种方法

迭代法解线性方程组

  • 2012年11月29日 18:57
  • 51KB
  • 下载

解线性方程组的迭代法

  • 2011年12月25日 23:14
  • 537KB
  • 下载

线性方程组算法(C语言)

/*无回代过程的主元消去法*/ #include #include #define N 3 //方程阶数 float A[N][N+1]; //增广矩阵 float X[N]; //线性方程...
  • Xiakl
  • Xiakl
  • 2013年04月28日 15:40
  • 330

Lab06 线性方程组求根的迭代法

  • 2013年05月15日 20:30
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线性方程组的古典迭代算法
举报原因:
原因补充:

(最多只允许输入30个字)