Maxima如何计算传递函数

本文最后更新于:2026年7月19日 晚上

该笔记记录了如何使用Maxima计算传递函数


假设我列了一个KVL、KCL表达式如下:

然后我想要分别计算出$v_y/v_x$和$v_o/v_x$。

对于Maxima,n个方程计算得到n个未知数的结果,其他均为参数。因此计算思路就是分别计算出$v_y$、$v_x$和$v_o$、$v_x$,然后带入到式子$a=v_y/v_x$和$b=v_o/v_x$中。

实操如下:

step1. 分别列出eq1和eq2

1
2
eq1: (vx-vy)*gm1=(vy-vo)/R0+vy/R1;
eq2: (vx-vo)*gm2+(vy-vo)/R0=vo/R2+s*C*vo;

step2. 再列出我们需要的$a$(eq3)和$b$(eq4)

1
2
eq3: a=vy/vx;
eq4: b=vo/vx;

step3. 利用解方程(组)函数solve得到$v_y$、$v_x$,并且并命为eq5

1
eq5: solve([eq1,eq2],[vy,vx]);

step4. 使用等量代换函数subst将eq5的结果带入eq3,即可计算得到结果$v_y/v_x$

1
eq6:subst(eq5,eq3);

step5. 同理,计算得到$v_o/v_x$

1
2
eq7: solve([eq1,eq2],[vo,vx]);
eq8: subst(eq7,eq4);

完整的执行过程如下:

image-20260719175851031

这个计算出来的式子非常复杂,没有什么参考价值,但是可以用于验证AI所计算的传递函数是否正确。如果正确,可以再让AI把这个复杂的传递函数化简为我们常见的$H(s)=A_0\frac{1+s/z}{1+s/p}$零极点形式。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!