我正在尝试解决以下等式:x^4 - 3*x^3 + x^2 - 1
通过这样做:solve(x^4 - 3*x^3 + x^2 - 1 == 0)
我期望两个实数解决方案或四个解决方案,其中两个是实数,两个解决方案是虚数:(都是估计值)-0.57, 2.68, 0.45 + 0.67i, 0.45 - 0.67i。相反,我得到以下
ans =
root(z^4 - 3*z^3 + z^2 - 1, z, 1)
root(z^4 - 3*z^3 + z^2 - 1, z, 2)
root(z^4 - 3*z^3 + z^2 - 1, z, 3)
root(z^4 - 3*z^3 + z^2 - 1, z, 4)
为什么我得到一个变量 z 的根,这种“root(eqation, z, num)”的格式是什么意思?
问题是您正在使用符号工具箱,我非常不鼓励这样做。如果你有一个数值问题,使用数值算法来得到你想要的。
通过键入
solve(x^4 - 3*x^3 + x^2 - 1 == 0)
,MATLAB 将简单地声明这个方程的根是给定多项式的根,并且它将使用root 函数来表示这个根。查看该函数的文档以了解它的工作原理和作用。请注意,您可以明确找到根,在调用求解函数时设置多项式的最大次数。另请注意,并非每个多项式都有封闭形式的解。如果您正在使用多项式 - 并且仅使用多项式 - 如果您使用 MATLAB 的多项式广泛库,您会做得更好。查看有关如何在此处创建多项式以及如何在此处获取多项式根的文档。本质上,您在数组中定义多项式保存其系数并使用根来获得(数字)根。
我设法通过执行以下操作来解决它
解决方案是方程形式,实际上很长,而不是没有
vpa
函数的十进制。当我省略 时,我没有得到任何有用形式的解'MaxDegree', 4
,因此这对于获得方程的解也是必不可少的。添加'Real', true
使得方程只有真正的解决方案,如果偶然发现相同问题的人发现相关!