错误信息:警告:矩阵接近奇异或严重了。结果可能是不准确的。RCOND = 2.078506 e-18。

28日视图(30天)
你好,我想要运行这段代码,的值在某个点D_g会无穷。有什么我可以帮忙的吗?
th = 0:10:90;
林= 3:0.01:7;
lp = 0.168;lc = 8.932;
ep = 1 - ((lam。^ 2。* lc) / (lp。^ 2 * (lc - 1我。* lam)));
呃=实际(ep);
eim =图像放大(ep);
ng =√6 (0.5 * (√(er。^ 2) + (eim ^ 2)) + er));
0.5公斤=√* (√(er。^ 2) + (eim ^ 2)) - er));
nkg = ng + 1我*公斤;
dg = 0.01;
z = 1:长度(th)
j = 1:元素个数(lam)
phig (z, j) = 2π*。* (dg. /林(j)。*√(ng (j) - 1我*公斤(j))。^ 2 -信德(th (z) ^ 2));
kgx (z, j) = (2。* pi. /林(j)。*√(ng (j) - 1我*公斤(j))。^ 2 -信德(th (z) ^ 2));
Dg = [kgx (z, j) / nkg (j) -kgx (z, j) / nkg (j);nkg (j) -nkg (j)];
D_g =发票(Dg)
结束
结束

答案(2)

Animesh
Animesh 2023年5月30日在31
你好!代码很可能给无限值 D_g 因为 Dg 对于某些值矩阵是奇异的 ng 公斤 。换句话说,的行列式 Dg 这些值是零,这意味着的倒数吗 Dg 不存在, D_g 无法计算。
为了避免这个问题,您可以检查是否的行列式 Dg 是零之前计算逆。如果行列式等于零,你可以跳过计算和设置 D_g 或其他适当的值,表明它是未定义的。

Abhijeet
Abhijeet 2023年5月30日在56
你好,
D_g的值将无穷在某个点,因为这个矩阵的行列式Dg是equalt或接近于零。
你可以解决这个问题通过添加一个条件检查计算“D_g”之前,检查如果Dg矩阵的行列式为零/接近于零。如果是零,“D_g”分配给南或其他合适的值表明/修复错误。
这是修改后的代码,供您参考:
th = 0:10:90;
林= 3:0.01:7;
lp = 0.168;lc = 8.932;
ep = 1 - ((lam。^ 2。* lc) / (lp。^ 2 * (lc - 1我。* lam)));
呃=实际(ep);
eim =图像放大(ep);
ng =√6 (0.5 * (√(er。^ 2) + (eim ^ 2)) + er));
0.5公斤=√* (√(er。^ 2) + (eim ^ 2)) - er));
nkg = ng + 1我*公斤;
dg = 0.01;
z = 1:长度(th)
j = 1:元素个数(lam)
phig (z, j) = 2π*。* (dg. /林(j)。*√(ng (j) - 1我*公斤(j))。^ 2 -信德(th (z) ^ 2));
kgx (z, j) = (2。* pi. /林(j)。*√(ng (j) - 1我*公斤(j))。^ 2 -信德(th (z) ^ 2));
Dg = [kgx (z, j) / nkg (j) -kgx (z, j) / nkg (j);nkg (j) -nkg (j)];
如果abs(侦破(Dg)) < 1 e-6%检查奇点
%处理或跳过这个值的计算j
继续;
其他的
D_g =发票(Dg);
结束
结束
结束
另外,您也可以尝试添加一个小常数矩阵的对角线Dg。你可以做到这一点通过添加一个小值ε的对角矩阵。
这可以通过修改代码:
Dg = [kgx (z, j) / nkg (j) -kgx (z, j) / nkg (j);nkg (j) -nkg (j)];
ε= 1 e-6;%小恒定值
Dg = +ε*眼(大小(Dg));%小值添加到对角线
D_g =发票(Dg);
谢谢! !

类别

找到更多的在作用于对角矩阵帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!