迭代数组算法帮忙看一下

xiaobenhua 2006-04-07 11:05:37
//求方程组:x1-x2-x3=2,2x1-x2-3x3=1,3x1+2x2-5x3=0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define MAX 10
#define epsilon 1e-10
int main()
{
float x[MAX],y[MAX],delta[MAX];
int i,n=3;
for (i=1;i<=n;i++){ //输入初始近似解
printf("please input x%d:",i);
scanf("%f",&x[i]);
}
do{
for (i=1;i<=n;i++)
y[i]=x[i];
x[1]=x[2]+x[3]+2;
x[2]=2*x[1]-3*x[3]-1;
x[3]=(3*x[1]+2*x[2])/5;
for (delta[1]=0.0,i=1;i<=n;i++)
if (fabs(y[i]-x[i])>delta[i]) delta[i]=fabs(y[i]-x[i]);
}while(delta[1]>epsilon && delta[2]>epsilon && delta[2]>epsilon);
for (i=1;i<=n;i++)
printf("x[%d]=%f ",i,x[i]);
printf("\n");
system("PAUSE");
return 0;
}
上面执行只有输入这个方程的本身解5 0 3 才能得到正确答案,其余输入全部是-1.
还有就是请问一下"初始近似解"是怎什么意思.高手帮忙看一下.谢了
...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2006-04-07
  • 打赏
  • 举报
回复
if (fabs(y[i]-x[i])>delta[i]) delta[i]=fabs(y[i]-x[i]);
}while(delta[1]>epsilon && delta[2]>epsilon && delta[2]>epsilon);

==========
delta 一直在增加?
似乎不符合一般的迭代思想 ...

没有仔细看,
看代码头腾了 ...
jixingzhong 2006-04-07
  • 打赏
  • 举报
回复
初始近似解
就是 迭代的 起始数据 ....

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧