|
|

楼主 |
发表于 2005-3-16 13:05:00
|
显示全部楼层
Re: 帮忙看一段代码!谢谢!
算法思路:
row代表行,line 代表列;
#include<iostream>
using namespace std;
const int size=2;
const int times =10;
float a[size][size]={1,1,1,2};//系数矩阵2×2;
float b[size]={1,2,};//方程形式是:ax=b;
int main(){
float* x=new float[size];
float* sum=new float[size];//一个存放求和结果的数组。
for(int i=0;i<size;i++){
x[i]=i;//赋初值
sum[i]=0;
}
for(int i=0;i<times;i++){ //迭代次数
for(int row=0;row<size;row++){
//从第一行开始,处于每一列的系数与相应的x相乘,并作和。但不包括
//a[row][line](row=line)与x[row]的乘积。因为x[row]是每次迭代要解出
//的结果,作为下一次迭代时的待入值。这就是sum[row]。
//而x[row]=(b[row]-sum[row])/a[row][row];
for(int line=0;line<size;line++){
if(line=row)
continue;
sum[row]+=a[row][line]*x[row];
}
}
for(row=0;row<size;row++)
x[row]=(b[row]-sum[row])/a[row][row];
}
for(i=0;i<size;i++)
cout<<"x"<<i<<"= "<<x[i]<<" ";
delete []x;
}
|
|