之前在
Matlab中solve函数得到的解出现root的情况_warnerchang的博客-CSDN博客_matlab结果出现roothttps://blog.csdn.net/weixin_43568289/article/details/121342712#comments_20216268中提到,可以换用vpasolve来求解以避免出现root形式的根,但是后续根据小伙伴的反应,即使换用vpasolve也会出现仍存在root形式根的情况,今天提供一个附加方法:
solve函数出现root形式根的情况,往往是我们提供的多项式自由度不够引起的,所以在使用solve求解中注意设置solve函数的自由度即可,例如如下例子:
% Matlab
clear all
syms a
b=9;h=0.1;
t2=a^4*b^3-b-h*(b^3-b^5*a^4)-(b^4*a^3-a-h*(a^3-b^4*a^5))
% sol=solve(t2,a)
sol = solve(t2, a, 'MaxDegree', 4) % 设置自由度
solNumeric = vpa(sol) % 转换为数值解
建议不要使用b和h这样的浮点型数据,因为solve函数求解精确解,提供浮点型数据输入应该采用vpasolve,可以将其替换为如下形式输入:
% Matlab
b = sym(9);
h = 1/sym(10);