Modelica.Math.Vectors.Utilities.roots求根绝对值正确但符号错误问题
问题原因解答
核心问题:系数向量顺序不匹配
Modelica.Math.Vectors.Utilities.roots函数要求输入的系数向量为升幂排列,即向量第i个元素对应多项式x^(i-1)项的系数,对应的多项式形式为:
p[1] + p[2] * x + p[3] * x^2 + ... + p[n] * x^(n-1) = 0
你当前构造的系数向量为降幂排列,第一个元素是三次项系数,最后一个元素是常数项,完全不符合函数要求的输入格式,因此得到的结果存在符号偏差。
修正方案
将系数向量调整为升幂排列即可,正确的系数构造方式为:
p = {-V, 0, Modelica.Constants.pi*r, -Modelica.Constants.pi/3}
代入参数r=0.5、V=0.251327计算后,得到的根将和Wolfram Alpha的结果完全一致。
补充说明
如果需要保持降幂排列的系数构造习惯,可以在调用roots函数前先反转系数向量:
p = reverse({-Modelica.Constants.pi/3, Modelica.Constants.pi*r, 0, -V});
内容的提问来源于stack exchange,提问作者GarstigerGerhard
相关产品推荐
相关产品推荐

