有人知道如何提取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