gpt4 book ai didi

C——二维数组

转载 作者:行者123 更新时间:2023-12-01 14:19:55 25 4
gpt4 key购买 nike

您好,我将此代码用于高斯消去法。当我使用该算法的第二种形式时,我没有得到正确的结果,但在这两种情况下代码是相同的。所以为什么这有效:

for(k = 0 ; k < (n-1) ; k++) {

for(i = k ; i < (n-1) ; i++) {

temp = a[i+1][k]/a[k][k]; //Why?

for(j = k ; j < n ; j++) {
a[i+1][j] -= a[k][j] * temp;
}
}
}

这行不通:

for(k = 0 ; k < (n-1) ; k++) {

for(i = k ; i < (n-1) ; i++) {

for(j = k ; j < n ; j++) {

a[i+1][j] -= a[k][j] * a[i+1][k]/a[k][k];
}
}
}

最佳答案

在第二个版本中,最内层的循环在迭代时修改了 a[i+1][k]/a[k][k] 的值。

要避免这种情况,您必须像在第一个版本中那样分解表达式。

考虑简化的阶梯形式以及高斯消元法的工作原理。其中一个步骤是将整行除以对角线元素,使对角线元素成为一个。如果在对角线元素自行潜水之前不保存其原始值,它将永远丢失。

关于C——二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622731/

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