gpt4 book ai didi

c++ - 雅可比迭代法。 (帮我输出)

转载 作者:行者123 更新时间:2023-11-30 18:01:31 25 4
gpt4 key购买 nike

问题是输出应该显示从第一次迭代到最后一次迭代的 xyz 的值,其中 big 小于或等于e。但问题是它只显示最后一次迭代。如何输出其他迭代? 这是我的代码:

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
float a[50][50],x[50],e=0.0010,big,temp,relerror,sum;
int n=3,i,j,maxit=50,itr;
char ch;
clrscr();
for(i=1;i<=n;i++)
{
clrscr();
printf("\n\t\t\t ----EQUATION %d-----",i);
printf("\n\tEnter your desired numerical coefficients for x, y and z\n\t\t\tthen the constant's value.\n\t (Press enter each time you are done on your input.)\n");
for(j=1;j<=n+1;j++)
scanf("%f",&a[i][j]);
}
clrscr();
for(i=1;i<=n;i++)
x[i]=0;
for(itr=1;itr<=maxit;itr++)
{
big=0;
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<=n;j++)
{
if(i!=j)
sum=sum+a[i][j]*x[j];
}
temp=(a[i][n+1]-sum)/a[i][i];
relerror=fabs((x[i]-temp)/temp);
if(relerror>big)
big=relerror;
x[i]=temp;

}

if(big<=e)
{
printf("\t k\t x\t y\t z\t xe\t ye\t et\n");
printf("\t %d",itr);
for(i=1;i<=n;i++)
printf("\t %.4f",x[i]);
printf(" %.4f",sum);

printf(" %.4f",big);

while(itr>1)
{
itr=--itr;
printf("\n\t %d",itr);}
getch();
exit(1);

}

}
printf("Does not converge in %d iteration \n",maxit);
getch();

}
}

最佳答案

在我看来,您的 print 语句位于 for 循环之外。如果您尝试在每次迭代时打印值,则需要类似以下内容:

for(int iter; iter<maxit; iter++){
/*** DO STUFF ***/
if(big <= e){
/*** PRINT STUFF ***/
}
}/* end of for iter<maxit */

如果您还没有使用 IDE,例如 Eclipse、Visual studio,甚至 Emacs/Vi,我建议您开始使用。这些编辑器通常有括号突出显示/匹配,因此您可以轻松捕获这些内容。

关于c++ - 雅可比迭代法。 (帮我输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com