gpt4 book ai didi

c++ - 一次执行后嵌套 for 循环中出现意外/看不见的中断 : Gaussian elimination

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:38 25 4
gpt4 key购买 nike

尝试为高斯消去法制作 C++ 代码,到目前为止,我已经到了必须使用此代码将最大绝对元素以下的元素归零的地步。问题是它仅适用于每行中的第一个元素。

void Zero(double (&M)[row][column], int C){
for (int i = C+1; i < row; i++) //to pass throw rows
{
cout << "R" << i + 1 << " = R" << i + 1 << " - R" << C + 1 << "*" << M[i][C] << "/" << (M[i - 1][C]) << endl;

for (int j = C ; j < column; j++)
{
M[i][j] = (M[i][j] - ( (M[C][j]) * (M[i][C]) / (M[C][C]) ) );
}

}
cout << endl;
}

主二维数组4*4 |对于这种情况 C=0

6   1  -6  -5
2 2 3 2
4 -3 0 1
0 2 0 1

-----运行后------

6   1  -6  -5
0 2 3 2
0 -3 0 1
0 2 0 1

最佳答案

对于给定的行 i,第一步是更改 M[i][C],然后继续更改 M[i][C +1] 等。但是,如果您在第一步中将 M[i][C] 设置为零,那么对于后面的元素,您只会有效地获得 M [i][j]=M[i][j];.

我建议将 j-loop 更改为

for (int j = column-1 ; j >= C; j--){}

或在将其清零之前(即在每个 j 循环之前)保存 M[i][C] 的值,并在 的表达式中使用它code>M[i][j]=M[i][j]-... 而不是 M[i][C]

关于c++ - 一次执行后嵌套 for 循环中出现意外/看不见的中断 : Gaussian elimination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770392/

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