我有一个符号变量,例如:
p =
(9311.0*s + 6.12e9)/(s^2 + 8500.0*s + 3.61e11)
其中s - 也是象征性的。 然后,如果我通过变量p使用逆拉拉,那么结果是
>>result=vpa(ilaplace(p,s,n),3)
result =
exp(n*(- 4255.0 + 6.01e5*i))*(4666.0 - 5066.0*i) + exp(n*(- 4255.0 - 6.01e5*i))*(4666.0 + 5066.0*i)
但如果我直接表达,我会得到我所期望的(按照Korn的书或定义中的公式):
vpa(ilaplace((9311.0*s + 6.12e9)/(s^2 + 8500.0*s + 3.61e11),s,n),3)
ans =
9311.0*exp(-4255.0*n)*(cos(6.01e5*n) + 1.09*sin(6.01e5*n))
为什么呢?我该怎么办才能通过变量得到正确答案?
P.S。 vpa - 不受主要目标的影响。在这种情况下,它只留下3位数。
P.S.S。添加了更多代码:
t = tf(linsys1) %linsys1 - from simulink circuit
%get coefficients from transfer function t
[num,den] = tfdata(t);
syms s n real
% convert transfer function to symbolic
t_sym = poly2sym(cell2mat(num),s)/poly2sym(cell2mat(den),s);
functionInMuPad=['partfrac(',char(t_sym),',s,Domain = R_)']; %collect expression in string format
simpleFraction=evalin(symengine,functionInMuPad); % sum of simple fractions (only MuPad allows get denominator of 2nd order)
functionInMuPad2=['op(',char(simpleFraction),')']; %collect expression in string format
vectorOfOperand=evalin(symengine,functionInMuPad2); % vector of simple fractions
for k=1:length(vectorOfOperand)-1
z(k,1)=ilaplace(vectorOfOperand(k),s,n);
end
所以,vectorOfOperand有问题。 ilaplace(vectorOfOperand(1))给出了复杂的结果,但是如果复制(ctrl + c)vectorOfOperand(1)的值并使newVariable = Ctrl + V,那么ilaplace(newVariable) - 它在命令窗口或m文件中都可以:
bbb =(9313.8202564498255348020392071286*s + 6122529964.4040716985063406588769)/(8500.4056471180697831891961467533*s + s^2 + 360665607284.96754103451618653904);
ilaplace(bbb,s,n)
ans=9311.0*exp(-4255.0*n)*(cos(6.01e5*n) + 1.09*sin(6.01e5*n)) %after vpa
无论如何都有魔力。 vectorOfOperand - 是sym。我甚至做了这个: vectorOfOperand = CHAR(vectorOfOperand); vectorOfOperand =符号(vectorOfOperand);它没有帮助..