小生编了个数值程序,求教
发表于 : 2013-03-21 12:53
#include<stdio.h>
int main(void)
{
int i,max=1000;
float epsi=0.000001,x[3],y[3],a[4],b[4],c[4];
printf("形如a1x1+a2x2+a3x3=a4\n b1x1+b2x2+b3x3=b4\n c1x1+c2x2+c3x3=c4\n");
printf("请输入系数");
for(i=0;i<4;i++)
{
scanf("%f",&a);
}
for(i=0;i<4;i++)
{
scanf("%f",&b);
}
for(i=0;i<4;i++)
{
scanf("%f",&c);
}
for(i=0;i<3;i++)
{
scanf("%f",&x);
y=x;
}
for(i=1;i<=max;i++)
{
x[0]=-a[1]/a[0]*x[1]-a[2]/a[0]*x[2]+a[3]/a[0];
x[1]=-b[0]/b[1]*x[0]-b[2]/b[1]*x[2]+b[3]/b[1];
x[2]=-c[0]/c[2]*x[0]-c[1]/c[2]*x[1]+c[3]/c[2];
if((x[0]-y[0])<epsi&&(x[1]-y[1])<epsi&&(x[2]-y[2])<epsi)
printf("x1=%f x2=%f x3=%f ",x[0],x[1],x[2]);
else
{
for(i=0;i<3;i++)
y=x;
}
if(i==max)
printf("发散");
}
return(0);
}
以上是我用c编的一个三元一次方程组的数值解法,用的是高斯迭代,有些地方不够完善,有待改进,不过我现在的疑问是:
开头的几个循环是输入系数,不过我运行的时候一直让我输入,明明系数几经满了,还在让我输入。。。。
int main(void)
{
int i,max=1000;
float epsi=0.000001,x[3],y[3],a[4],b[4],c[4];
printf("形如a1x1+a2x2+a3x3=a4\n b1x1+b2x2+b3x3=b4\n c1x1+c2x2+c3x3=c4\n");
printf("请输入系数");
for(i=0;i<4;i++)
{
scanf("%f",&a);
}
for(i=0;i<4;i++)
{
scanf("%f",&b);
}
for(i=0;i<4;i++)
{
scanf("%f",&c);
}
for(i=0;i<3;i++)
{
scanf("%f",&x);
y=x;
}
for(i=1;i<=max;i++)
{
x[0]=-a[1]/a[0]*x[1]-a[2]/a[0]*x[2]+a[3]/a[0];
x[1]=-b[0]/b[1]*x[0]-b[2]/b[1]*x[2]+b[3]/b[1];
x[2]=-c[0]/c[2]*x[0]-c[1]/c[2]*x[1]+c[3]/c[2];
if((x[0]-y[0])<epsi&&(x[1]-y[1])<epsi&&(x[2]-y[2])<epsi)
printf("x1=%f x2=%f x3=%f ",x[0],x[1],x[2]);
else
{
for(i=0;i<3;i++)
y=x;
}
if(i==max)
printf("发散");
}
return(0);
}
以上是我用c编的一个三元一次方程组的数值解法,用的是高斯迭代,有些地方不够完善,有待改进,不过我现在的疑问是:
开头的几个循环是输入系数,不过我运行的时候一直让我输入,明明系数几经满了,还在让我输入。。。。