有人知道如何提取matlab符号表达式系数吗?

  • 2019 年 12 月 27 日
  • 筆記

大家应该知道,符号计算并不

符号表达式系数主要分为常数型和符号型,接下来就这两种类型分别进行说明。

1、常数型系数提取

使用函数:sym2poly

函数作用:提取多项式数值型系数,包括零项

调用方法:c = sym2poly(p),c为返回的系数,p为多项式表达式

示例如下:

syms x  fun = 0.8*x^5-1.5*x^3 - 1.8*x + 3.14;  c = sym2poly(fun);

上式结果为:0.8000 0 -1.5000 0 -1.8000 3.1400

2、符号型系数提取

a、使用coeffs

函数作用:提取多项式系数,数值型与符号型皆可

调用方法:[C,T] = coeffs(___),C为返回的系数,T为对应多项式项

示例如下:

syms x y  funx = x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3;  funy = x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3;  [cx,tx] = coeffs(funx, x);  [cy,ty] = coeffs(funy, y);

运行结果

cx = [ 1, 2*y, 3*y^2, 4*y^3]  tx = [ x^3, x^2, x, 1]  cy = [ 4, 3*x, 2*x^2, x^3]  ty = [ y^3, y^2, y, 1]

b、使用sym2polys (由Paul Godfrey编写)

函数作用:提取多项式系数,数值型与符号型皆可

调用方法:C = sym2polys(fun),C为返回的系数,fun为对应多项式

示例如下:

syms a b c d x y  funx = a*c*x^3 + b*d*x^2*y + c*d*x*y^2 + d^2*y^3;  funy = b*d*x^3 + a*c*x^2*y + b*c*x*y^2 + 4*c*y^3;  cx = sym2polys(funx, 'x');  cy = sym2polys(funy, 'y');

运行结果

cx = [ a*c, b*d*y, c*d*y^2, d^2*y^3]  cy = [ 4*c, b*c*x, a*c*x^2, b*d*x^3]

小编运行sym2polys函数时发现运行错误,小编已做修改,需要修改版函数的小伙伴,请直接matlab爱好者公众号中回复"系数"即可获取。

以上就是今天的全部内容,如有问题,请留言或加群讨论!

参考资料:

[1] https://ww2.mathworks.cn/help/symbolic/sym2poly.html

[2] https://ww2.mathworks.cn/help/symbolic/coeffs.html

[3] https://ww2.mathworks.cn/matlabcentral/fileexchange/5805-sym2polys