java - 我的方法不行?有什么问题
问题描述
下面的代码是我的“消除方法”,它是关于高斯算法的。我正在努力理解为什么我的消除方法不起作用。其他 2 个(表示旋转的 pivotisiere 和表示求解方法的 loese)工作得非常好。我整天都坐在这里试图对其进行编码,但没有找到解决方案,如果有任何帮助,我会很高兴。
该方法应该如何工作:矩阵对角线下方的数字需要转换为“0”,并且与 0(包括向量)在同一行中的其余数字也需要相应地转换。
解决方案
如果我使用 LCM(最小公倍数)来计算因子,我得到的结果仍然是正确的(和整数!!!)但仍然与测试用例相差 2 倍:
lcm(26,6) = 78
78/6 = 13
78/26 = 3
然后我得到
13*16 - 3*46 = 70
13*186 - 3*386 = 1260
这与预期的解决方案完全相同,但相差 2 倍。根据测试用例的编写方式,这可能会通过或不会通过。
无论如何,我认为在这里使用整数数学并确保不会发生舍入很重要。
所以,我突然想到,如果您只使用 26*6 而不是 lcm,则可以考虑因子 2:
26*6 = 156
156/6 = 23 (obviously)
156/26 = 6 (obviously)
然后我得到
26*16 - 6*46 = 140
26*186 - 6*386 = 2520
所以换句话说,你只是被期望,而不是这样做:
matrix[i][j] -= faktor * matrix[position][j];
做
matrix[i][j] = matrix[i][j]*matrix[position][position] - matrix[i][position]*matrix[position][j];
您未通过测试用例,因为您盲目地使用浮点数学,而没有考虑必须使用整数的事实。
推荐阅读
- reactjs - 如何将 GitHub 中的 react 应用程序作为组件导入到新的 react 应用程序中?
- r - 用不同的总和总结 R (pivot) 中的数据
- java - 如何在java中生成唯一的字母数字ID 11个字符长
- akka - 演员在处理消息之前被杀死
- python - 循环使用 Beautifulsoup 提取的表并搜索列名匹配
- konvajs - Konvajs - 如何在不透明的情况下截取屏幕截图
- python - 如何从名义数据创建水平条形图?
- elasticsearch - Elasticsearch 没有收到来自 logstash 的输入
- node.js - 如何在 WebStorm 中调试 Node.js Azure Functions(在 Mac 上)
- c - 考虑到我的实现,是否可以搜索 linux 内核队列?