zitianyou 2022-04-02 09:31 采纳率: 100%
浏览 61
已结题

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都得不到想要的结果
  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2022-04-02 11:03
    关注

    你看看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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢