游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3423|回复: 10

帮忙看一段代码!谢谢!

[复制链接]

4

主题

6

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2005-3-16 12:25:00 | 显示全部楼层 |阅读模式
请教一下异步迭代法求解线性方程组的程序。
以下是我写的程序,算不出结果,但我不知错误在哪里。
初学者刚学写代码,请大家别笑话啊。
方程组形式:
a[i][j]*x[i]=b[i]

#include<iostream>
using namespace std;

const int size=2;
const int times =10;

float a[size][size]={1,1,1,2};
float b[size]={1,2,};

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++){
                        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;
}

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2005-3-16 12:26:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

好恐怖的代码啊?最好说明你的酸法的思路啊

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-3-16 12:32:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

if(line=row)-_-!这个是什么意思?

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2005-3-16 12:34:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

if(line=row)
continue;
这个我用VB的都懂呢!

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-3-16 12:35:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

楼上的比较强-_-!

2

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2005-3-16 12:56:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

确实比较强...不亏是用VB的 Orz

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2005-3-16 13:04:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

哈哈!过奖啊 但是好象还不服气呢!嘿嘿

4

主题

6

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 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;
}

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2005-3-16 13:15:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

看见了没有!大家现在可以笔试了,呵呵!我数学不懂,只能看看语法了

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-3-16 14:15:00 | 显示全部楼层

Re:帮忙看一段代码!谢谢!

数学学的不是很好,研究算法实在是费尽,找点语法错误吧!
if(line=row)
    continue;
我想这个应该不对吧?line=row是一个赋值,这样写每次运行到这里都会continue的,下面的代码段是执行不到的,应该是这样吧?
if(line==row)
    continue;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 20:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表