gpt4 book ai didi

c++ - C 中的高斯雅可比方法

转载 作者:行者123 更新时间:2023-11-30 21:43:29 25 4
gpt4 key购买 nike

尽管没有错误,但应用数学中的 Gauss-Jacobi 方法的代码在编译时并未成功执行:

void main(){
int a[3][4], i, j, k;
float x,y,z;
printf("Enter coeff of 3 equations and RHS :");
for(i = 1; i <= 3; i++){
printf("\nEQUATION %d",i);
for(j = 1; j <= 4; j++){
scanf("%d",&a[i][j]);
}
}
x = (a[1][4])/(a[1][1]);
y = (a[2][4])/(a[2][2]);
z = (a[3][4])/(a[3][3]);
printf("\nx0=%d y0=%d and z0=%d", x, y, z);
printf("\nEnter no. of iterations:");
scanf("%d", &k);
i=0;
while(i < k){
i++;
x = a[1][4]-(a[1][2]*y)-(a[1][3]*z);
y = a[2][4]-(a[2][3]*z)-(a[2][1]*x);
z = a[3][4]-(a[3][2]*y)-(a[3][1]*x);
printf("\n after %d itr,\n x=%f\ny=%f\n z=%f", i, x, y, z);
}
}

最佳答案

您的代码的问题是这样的:x = (a[1][4])/(a[1][1]);。这里 x 是 float var,您正在执行的计算都是 int 值。正如 @PhilM 所说,3/4 == 0,因为整数不是 float 。要解决此问题,您应该考虑进行强制转换。它会解决你的问题。

如何转换示例:

#include <stdio.h>

main() {

int sum = 17, count = 5;
double mean;

mean = (double) sum / count;
printf("Value of mean : %f\n", mean );

}

转换很简单,只需将(var的类型)放在变量前面即可。在您的情况下,(float)(a[1][4])/(float)(a[1][1]);

关于c++ - C 中的高斯雅可比方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43711395/

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