求雅可比迭代法解方程组的C\C++程序

要求输入输入未知数的个数。系数和常数.
再输出解.

#include<stdio.h>
#include<math.h>

void main()
{float a[10][10],b[10],x[10],y[10],e,sum,c;
int i,j,n,l;
printf("The top exp is ");
scanf("%d",&n);
printf("Now input array A\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
printf("Now input array B first and then array X\n");
for(i=0;i<n;i++)
scanf("%f,%f",&b[i],&x[i]);
printf("Now input e\n");
scanf("%f",&e);
l=0;
do{for(i=0;i<n;i++)
{sum=0;
for(j=0;j<i;j++)
sum+=a[i][j]*x[j];
for(j=i+1;j<n;j++)
sum+=a[i][j]*x[j];
y[i]=(b[i]-sum)/a[i][i];
l+=1;
}
c=fabs(x[0]-y[0]);
for(i=0;i<n;i++)
if(c<fabs(x[i]-y[i]))
c=fabs(x[i]-y[i]);
for(i=0;i<n;i++)
x[i]=y[i];
}while(c<e);
printf("%d\n",l);
for(i=0;i<n;i++)
printf("%f\n",y[i]);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-17
这个过程应该是很清楚,但是期中有一点不好做的是要求一个矩阵的逆矩阵,这是一个很复杂的事情。

如果你是学习数值分析课,做练习题的话,大可不必用这种方法了,毕竟那些习题还是比较简单的。

当然如果是这种情况,也为了练习一下编程,那么你的精神当然是可嘉的。
第2个回答  2008-06-17
这种问题不用教吧,是锻炼你的编写程序的能力的

雅可比求数组根的程序(c语言)
你要想动态申请必须用指针,而且在C语言中只能动态申请一维数组,C++中可以二维。C语言动态申请例:int *p;p = (int*)malloc(sizeof(int) * n);在C语言中想要动态的二维数组,那么可以用一维来表示。比如一个3*5的数组,那么一共需要15个空间,我们这么申请 p = (int*)malloc(sizeof(int)...

雅可比迭代法c++实现
雅克比矩阵总听过吧,数值分析里很基础很有名的。抱歉,这方面的资料我可能没有。老师留的题吗?不行就自己按照书上的算法设计一下程序吧,这样收获也能更多。

相似回答
大家正在搜