找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1727|回复: 0

[求助]我编了个松弛法迭代的程序怎么老出错,怎么会事啊。--*Arcticanimal转 ...

[复制链接]
发表于 2009-11-3 02:45:21 | 显示全部楼层 |阅读模式 IP:江苏扬州
松弛法迭代就是解线形方程组得高斯_SEidel迭代的加速,算法中就是多了一个松弛因子,不知道你们知道不,就是数值方法中的超松弛迭代。。
我的程序如下:你们可以帮我改改吗?
#include <iostream.h>
#define M 2 //定义方程阶数
#define N 30 //定义迭代的最大次数
#define OK 100 //如果主函数运行成功,返回OK
#define e 1e-6 //定义容许误差项e
#define w 0.6 //定义松弛因子w
int k=1;
int i,j; //定义外变量i,j
int SpeedSeidel_function(); //松弛迭代算法
int main() //主函数
{
int i,j;
float a[M][M],b[M];
/*-------输入方程系数矩阵-------*/
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];
int Jacobi_function(a,b);
return OK;
}

int SpeedSeidel_function(float *a,float *b)
{
float sum[4]={0},err=0,x[M],x0[M]={0}; //定义4个中间变量sum,最大项err,迭代的解x[M],与中间解x0[M]
do
{
for(j=1;j<M;j++)
sum0+=a[1*M+j]*x0[j];
x[0]=(1-w)*x0[0]+w*(b[0]-sum)/a[0*M+0];
for(i=1;i<M;i++)
{
for(j=0;j<i;j++)
sum1+=a[i*M+j]*x0[j];
for(j=i+1;j<M;j++)
sum2+=a[i*M+j]*x0[j];
x[i]=(1-w)*x0[i]+w*(b[i]-sum1-sum2)/a[i*M+i];
}
for(j=0;j<M;j++)
sum[3]=a[(M-1)*M+j]*x[j];
x[M-1]=(1-w)*x0[M-1]+w(b[M-1]-sum[3])/a[(M-1)*M+M-1];
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 11:24 , Processed in 0.166187 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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