gpt4 book ai didi

java - java中的行列式计算

转载 作者:行者123 更新时间:2023-12-01 15:11:09 27 4
gpt4 key购买 nike

我正在使用伴随方法计算矩阵的逆。首先我必须计算矩阵的行列式。为了计算行列式,我首先创建一个上三角矩阵,然后将对角线相乘以获得矩阵的行列式。下面给出了计算行列式的公式。

for(int cr = 1 ;cr < dd.length;cr++)
{ double factor = 0.0;
final double[] firstrow = new double[dd.length] ; /* dd is a matrix*/

for(int r = 0 ;r < dd.length; r++)
{ firstrow[r] = dd[cr - 1][r]; }

for( int rowcount = cr + 0 ; rowcount< dd.length ; rowcount++)
{
factor = dd[rowcount][cr - 1] / firstrow[cr - 1];

for( int m = cr - 1 ; m < firstrow.length ; m++)
{
dd[cr - 1][m] = firstrow[m] * factor; /* multioly row by factor */
dd[rowcount][m] = dd[rowcount][m] - dd[cr - 1][m]; /* our current row minus factored row */
dd[cr - 1][m] = firstrow[m]; /* restore the original values to row */
} }}

for(int d = 0 ; d < dd.length;d++)
{det *= dd[d][d];} /* det is the determinant */

得到下三角矩阵 后,对角线值的乘积就成为矩阵的行列式。我已经尝试过这个方法并且有效。然而,当我用它来计算具有浮点值的 13 x 13 矩阵的行列式时,我得到一个不是 NaN 的数字值作为行列式。有人可以向我解释一下发生了什么吗?我有下面的矩阵示例值。

65.15078176822551
731.664756199619
1.5309584518179011E9
1.7388182254012366E11
3.3604905770182707E17
1.77135880331128576E17

谢谢大家

最佳答案

我怀疑问题与您使用factor(我猜)减少数字的比例有关。我敢打赌,对于某些索引,firstrow[cr - 1] 为零。随后除以零将创建 INF 或 NaN,并将传播到其余的计算中。

<小时/>

顺便说一句,这个“公式”看起来不像计算行列式的标准方法,如下所述:

http://www.math.dartmouth.edu/archive/m8s00/public_html/handouts/matrices3/node7.html

标准版不涉及任何划分。您确定您的“公式”正确吗?

关于java - java中的行列式计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12344198/

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