使用Matlab进行逆拉普拉斯

时间:2015-06-23 04:03:06

标签: matlab math symbolic-math

我遇到了使用Matlab找到函数的反拉角的问题。我获得了以下传递函数: enter image description here

我尝试了像

这样的方法
syms s t;
    num=[0 0 0 1.658e24 -1.163e14 6.076e15];
    den=[1 3.334e09 1.005e15 1.675e24 5.025e27 1.675e33];
    numsym=poly2sym(num);
    densym=poly2sym(den);
    transfer=numsym./densym;
    ilaplace(transfer,s,t)

但没有得到可接受的结果。含义Matlab简单地返回: enter image description here

此外,我尝试使用部分分数扩展,并且我将转移函数写入极点和零但是当我添加所有部分时,我没有得到原始传递函数。

syms s t;
num=[0 0 0 1.658e24 -1.163e14 6.076e15];
den=[1 3.334e09 1.005e15 1.675e24 5.025e27 1.675e33];
numsym=poly2sym(num);
densym=poly2sym(den);
transfer=numsym./densym;
[z,p,r]=residue(num,den);
transfer1=(z(1)/(s-p(1)))+(z(2)/(s-p(2)))+(z(3)/(s-p(3)))+(z(4)/(s-p(4)))+(z(5)/(s-p(5)));
transfer1=vpa(simplifyFraction((transfer1),'Expand',true),2)
the

简化后的transfer1变量在分子中是4阶,而原始传递函数是2阶。如果有人帮我用任何方法找到下面表达式的传递函数,我会非常感激吗?

2 个答案:

答案 0 :(得分:3)

有两件事需要考虑:

  1. 通过调用poly2sym而不使用第二个参数来定义所需的变量,正在使用x。因此poly2sym([1 1])会返回x + 1。在这里,您需要一个变量为s的多项式,因为在ilaplace中,您声明s是初始变量。因此,请使用poly2sym([1 1],s)作为结果{。}}。
  2. 带有点(1)校正的输出非常长,包含s + 1symsum等未解析的元素,这些元素来自RootOf后面的算法。使用命令ilaplace,您可以消除此问题,并尽可能获得数值结果。
  3. 代码将是这样的:

    vpa

    现在我们可以验证答案,以防您认为这可能只是一堆数字。因此,与WolframAlpha进行比较是有帮助的。我们需要将符号表达式转换为函数句柄以绘制结果:

    syms s t;
    num=[0 0 0 1.658e24 -1.163e14 6.076e15];
    den=[1 3.334e09 1.005e15 1.675e24 5.025e27 1.675e33];
    numsym=poly2sym(num,s);             % here the s as second argument
    densym=poly2sym(den,s);             % here the s as second argument
    transfer=numsym./densym;
    
    timeexp = ilaplace(transfer,s,t);
    timenum = vpa(timeexp);             % get numerical answer
    pretty(timenum)                     % show the answer in nicer form
    

    这给出了以下结果: Matlab plot

    WolframAlpha相比,我们可以说我们的结果肯定是合理的。

    WolframAlpha plot

答案 1 :(得分:-1)

我可能会遗漏一些东西,但多项式函数的逆传递函数只是多项式比率的倒数。

即如果你有$ F \ left(S \ right)= \ frac {{P} {1} \ left(s \ right)} {{P} {2} \ left(s \ right)} $反向由$ F \左(S \右)= \ frac {{P} {2} \ left(s \ right)} {{P} {1} \ left(s \ right)} $。

你需要处理的是分子上多项式的零点 - 这可能解释了Delta函数。