matlab解系数为虚数的一元高次方程结果错误

问题描述 matlab解系数为虚数的一元三次方程时,得到的结果回带后并不为0。
代码

roots_3=roots([0.04142 + 0.0136i,-22177.0-4395.0i,3.339e9+2.077e8i,-1.02e14+1.409e13i])
roots_3.^3*(0.04142 + 0.0136i) - roots_3.^2*(22177.0 + 4395.0i) + roots_3.*(3.339e9 + 2.077e8i) - (1.02e14 - 1.409e13i)

img

无论是用solve还是roots都得不到想要的结果

你看看roots的原理,也许对你有帮助

function r = roots1(p)
n = numel(p)-1;
A = diag(ones(n-1,1),-1);
A(1,:) = -p(2:n+1)./p(1);
r = eig(A, 'balance');
end

当然还是建议使用vpasolve

clc; clear
syms x
p = [0.04142+0.0136i;
    -22177.0-4395.0i;
    3.339e9+2.077e8i;
    -1.02e14+1.409e13i];
q = poly2sym(p, x);
x = vpasolve(q);
roots_3 = x;
roots_3.^3*(0.04142 + 0.0136i) - roots_3.^2*(22177.0 + 4395.0i) + ...
    roots_3.*(3.339e9 + 2.077e8i) - (1.02e14 - 1.409e13i)

结果:

ans =
 
                                                             0.0000000000000000000000000032311742677852643549664402033983i
 0.00000000000000000000000020679515313825691871785217301749 - 0.000000000000000000000000025849394142282114839731521627186i
  0.00000000000000000000000020679515313825691871785217301749 + 0.00000000000000000000000003877409121342317225959728244078i
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632