c++改个错误

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:52:06
//高斯—塞德尔迭代法
#include <iostream>
#include <math.h>
using namespace std;
double abc (double a[][40],double x[],int i,int m)
{
double s=0;
int j;
for(j=0;j<m;j++)
{
if(i==j)
continue;
s+=a[i][j]*x[j];
}
return (s);
}

void main ()
{
double a[40][40]={0},b[40]={0},x[40]={0};
float e,E,t;
int m,i,j,k,M;
cout<<"请输入迭代的最大次数:\n"<<"M=";
cin >>M;
cout<<"请输入系数矩阵的阶数:"<<endl;
cout<<"m=";
cin >>m;
cout<<"请输入精度E:"<<"\n"<<"E=";
cin >>E;
cout<<"请输入系数矩阵A:"<<endl;
for(i=0;i<m;i++)
{ for(j=0;j<m;j++)
cin>>a[i][j];
}
cout<<"请输入常数矩阵B:"<<endl;
for(i=0;i<m;i++)
cin >>b[i]

很久之前自己写的guass-Seidel迭代法和SOR迭代法,能用得上就拿去吧

#include<stdio.h>
#include<math.h>
#define n 9
#define MAX 1000
void main()
{

int i,j,k,m,u,num=0,min=MAX;
double s,w,flag=0.02;
static double a[n][n]={{31,-13,0,0,0,-10},{-13,35,-9,0,-11},{0,-9,31,-10},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30},{0,0,0,0,0,-30,41},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};
static double x1[n]={0},x2[n]={0},b[n]={-15,27,-23,0,-20,12,-7,7,10};
for(i=0;i<n;i++)
{
b[i]=b[i]/a[i][i];
for(j=0;j<i;j++)
a[i][j]=-a[i][j]/a[i][i];
for(j=i+1;j<n;j++)
a[i][j]=-a[i][j]/a[i][i];
a[i][i]=0;
}
do
{
for(u=0;u<n;u++)x1[u]=x2[u];
for(i=0;i<n;i++)
{
s=b[i];
for(j=0;j<n;j++)s=s+a[i][j]*x2[j];
x2[i]=s;
}
num++;
for(i=0,s=0;i<n;i++)
if(s<fabs(x1[i]-x2