程序写出运行没有结果 求大神帮忙看看哪儿错了。是用共轭梯度法解线性方程组,财富值不够了 见谅。 10
#include<stdio.h>#include<math.h>main(){doubleA[3][3]={2,-1,-1,-1,2,0,-1,0,1};doubleb...
#include <stdio.h>
#include <math.h>
main()
{
double A[3][3]={2,-1,-1,-1,2,0,-1,0,1};
double b[3]={0,1,0};
double x[3]={0,0,0};
double r[3]={0,1,0};
double xk[3]={0,0,0};
double p[3]={0,1,0};
double m,n,temp,t;
int i,j,k=0,flag=0;
while (flag!=1)
{ k=k+1;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
m=p[i]*r[i]/(p[i]*A[i][j]*p[j]);
x[i]=xk[i]+m*p[i];
r[i]=r[i]-m*A[i][j]*p[j];
n=p[i]*A[i][j]*r[j]/(p[i]*A[i][j]*p[j]);
p[i]=r[i]-n*p[i];
temp=xk[i];
xk[i]=x[i];
}
}
}
for (i=0;i<3;i++)
{ t=fabs(x[i]-temp);
if (t=0)
flag=1;
printf ("%d次迭代\n",k);
}
printf ("解为:\n");
for(i=0;i<3;i++)
{
printf("x%d=%.5lf\n",i+1,x[i]);
}
} 展开
#include <math.h>
main()
{
double A[3][3]={2,-1,-1,-1,2,0,-1,0,1};
double b[3]={0,1,0};
double x[3]={0,0,0};
double r[3]={0,1,0};
double xk[3]={0,0,0};
double p[3]={0,1,0};
double m,n,temp,t;
int i,j,k=0,flag=0;
while (flag!=1)
{ k=k+1;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
m=p[i]*r[i]/(p[i]*A[i][j]*p[j]);
x[i]=xk[i]+m*p[i];
r[i]=r[i]-m*A[i][j]*p[j];
n=p[i]*A[i][j]*r[j]/(p[i]*A[i][j]*p[j]);
p[i]=r[i]-n*p[i];
temp=xk[i];
xk[i]=x[i];
}
}
}
for (i=0;i<3;i++)
{ t=fabs(x[i]-temp);
if (t=0)
flag=1;
printf ("%d次迭代\n",k);
}
printf ("解为:\n");
for(i=0;i<3;i++)
{
printf("x%d=%.5lf\n",i+1,x[i]);
}
} 展开
2个回答
展开全部
while (flag!=1)
{
k=k+1;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
m=p[i]*r[i]/(p[i]*A[i][j]*p[j]);
x[i]=xk[i]+m*p[i];
r[i]=r[i]-m*A[i][j]*p[j];
n=p[i]*A[i][j]*r[j]/(p[i]*A[i][j]*p[j]);
p[i]=r[i]-n*p[i];
temp=xk[i];
xk[i]=x[i];
}
}
}
条件语句问题。
while的条件恒成立,flag在while循环中未改变值且while语句中无跳出语句。
{
k=k+1;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
m=p[i]*r[i]/(p[i]*A[i][j]*p[j]);
x[i]=xk[i]+m*p[i];
r[i]=r[i]-m*A[i][j]*p[j];
n=p[i]*A[i][j]*r[j]/(p[i]*A[i][j]*p[j]);
p[i]=r[i]-n*p[i];
temp=xk[i];
xk[i]=x[i];
}
}
}
条件语句问题。
while的条件恒成立,flag在while循环中未改变值且while语句中无跳出语句。
更多追问追答
追问
那要肿么修改呢 π.π
追答
抱歉啊,共轭梯度法不是很明白,所以就算法上,我帮不了你。你可以找找其他人。
还有,你上面的程序中忘了说一点:
double A[3][3]={2,-1,-1,-1,2,0,-1,0,1};
定义不规范。
double A[3][3]={{2, -1, -1}, {-1, 2, 0}, {-1, 0, 1}};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询