syms s
>> num=4s^4+32s^3+s^2+s+1
num =
4s^4+16/5s^3+s^2+s+1
>> sym2poly(num)
ans =
40000 32000 10000 10000 10000
鉴于好像这里没有人给出一个Mathematica的解法,这里答一下。
首先要指出的是,对于非多项式问题的系数提取,应该是没有普遍的讨论方式的,需要结合具体表达式形式做具体分析。不过你这个式子比较特殊,所以还挺好弄的。首先把你的式子弄成Mathematica的语法(这个用记事本做下查找替换就行):
expression = -1/2(-2(wn^2(b - 1)(b + 1))^(1/2) +
exp@ (-twnb)(wn^2(b - 1)(b + 1))^(1/2)
exp@ (t(wn^2(b - 1)(b + 1))^(1/2)) +
exp@ (-twnb)(wn^2(b - 1)(b + 1))^(1/2)
exp@ (-t(wn^2(b - 1)(b + 1))^(1/2)) +
exp@ (-twnb)wnbexp@ (t(wn^2(b - 1)(b + 1))^(1/2)) -
exp@ (-twnb)wnb
exp@ (-t(wn^2(b - 1)(b + 1))^(1/2)))/(wn^2(b - 1)(b + 1))^(1/
2)
这里可能会有懂Mathematica的同学跳出来说“诶你这个替换没做全啊你的exp首字母要大写”,嗯,没错,在做一般计算的时候是应该这样,但是因为这里我们是要看特定项的系数,所以使用小写的exp(也就是一个一般化的头部)反而方便,因为内置的指数函数Exp会自动计算合并同类项,破坏原有的表达式结构。剩下的嘛,就简单了,求相应的系数在Mathematica里是内置了的:
Coefficient[expression, exp@(t(wn^2(b - 1)(b + 1))^(1/2))]
下面的Collect是按相应项做同类项合并的函数。怎么样,比matlab可读性好多了吧?
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function
z=zhidao_fit_1(a,x)
%这里用的是ax^2
+
bxy
+
cy^2
+
dx
+
ey
+
f=0
%其中x,y分别用x(:,1),x(:,2)表示
%z=a(1)x^2+a(2)xy+a(3)y^2+a(4)x+a(5)y+a(6)
z=a(1)x(:,1)^2+a(2)x(:,1)x(:,2)+a(3)x(:,2)^2+a(4)x(:,1)+a(5)x(:,2)+a(6);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%数据产生,这里以x^2/9+y^2/16=1产生数据
%如果有数据,直接将下面三行替换掉这里要求x,y为列向量
seta=linspace(0,2pi,20)';
x=3cos(seta);
y=4sin(seta);
X=[x,y];
F=zeros(size(x));
[ABC,res]=lsqcurvefit('zhidao_fit_1',ones(1,6),X,F);
ABC
得到结果
ABC
=
00073
-00000
00041
-00000
00000
-00655
这个与x^2/9+y^2/16=1是一致的
注意有时,ABC的值直接看是0,你可以通过vpa(ABC,4)来看,很可能就不是0,是一个比较小的数。
以上就是关于matlab如何取多项式系数例如num=4s^4+3.2s^3+s^2+s+1如何得到系数(4,3.2,1,1,1)按s全部的内容,包括:matlab如何取多项式系数例如num=4s^4+3.2s^3+s^2+s+1如何得到系数(4,3.2,1,1,1)按s、怎么用matlab或mathematica求某一项的系数啊、如何用matlab确定函数的系数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)