java 高斯消去法_Java中的高斯消元

博主正在尝试用Java编写一个Matrix类以学习更多Java知识,重点在于实现高斯消元法,目的是为了后续计算矩阵的逆矩阵。目前的问题是gaussianElimination()方法虽然能处理顶部行,但无法正确计算下部行。博主跟随Wikipedia上的伪代码进行实现,但结果不正确。例如,给出的矩阵在应用高斯消元后并未得到正确的逆矩阵。博主希望能找到问题所在并寻求帮助。
摘要由CSDN通过智能技术生成

我试图实现一个Matrix.class来学习一些Java。

现在,对于一个应该在高斯消元之后返回矩阵的方法,我将遇到一些困难,这些方法将在稍后用于查找矩阵的逆矩阵。

这是我到目前为止所提出的:

public Matrix gaussianElimination() {

Matrix inv = this.clone();

int i = 0;

int j = 0;

while (i

int pivot = i;

for (int k=i+1; k

if (Math.abs(inv.getArray()[k][j]) > Math.abs(inv.getArray()[pivot][j])) {

pivot = k;

}

}

if (inv.getArray()[pivot][j] != 0) {

inv = inv.swapRow(i, pivot);

double div = inv.getArray()[i][j];

for (double value : inv.getArray()[i]) {

value = value/div;

}

for (int u=i+1; u < inv.getHeight(); u++) {

double mult = inv.getArray()[u][j];

for (int l=0; l

inv.getArray()[u][l] = mult * inv.getArray()[i][l];

}

}

}

j++;

i++;

}

return inv;

}getArray()函数返回矩阵的double [] [],而getHeight()和getWidth()分别返回inv.length和inv [0] .length。

我跟着这个wikipedia页面的伪代码来实现这个算法

该方法返回顶部第一个元素的行,但不正确计算下部行的矩阵。

例如:

一个结果

0.2635522849474877 0.10001114673002853 0.442971040143471

0.2986277338922876 0.7517642579959294 0.09150190333830721

0.8913610667753092 0.8898546572478708 0.25592546060133237

INV结果

0.8913610667753092 0.8898546572478708 0.25592546060133237

0.26618513545092265 0.26573527978742995 0.07642644034471581

0.062426597261833985 0.06232109565941264 0.017923775508624545

我非常感谢任何帮助,因为我找不到解决方案。我可能在某处混合了一个指针,或者实现了错误的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值