作业帮 > 综合 > 作业

怎么用matlab解如下的方程?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 16:40:43
怎么用matlab解如下的方程?
gm*(vin-vs)+(vd-vs)*go-gmb*vs=-vd*go
-gm*vs+(vout-vs)*go-gmb*vs=-vout*go
-vd*go-vout*go=vs*go
我需要用以上的三个方程解得vs,vd和【vout与vin的比值】,其他的量都视为已知……
请问我该在matlab里怎么操作?貌似用solve好像没办法……多谢!
4个未知数3个方程一般只能得到其中3个未知数关于另一个的表达式,只有在很特殊的情况下才可能完全确定其中两个未知数,很不幸你这个方程组不行.而且一般情况下其中任意两个的比值也不会是常数,但很幸运这个方程组任意两个未知数的比值都是常数.
将vout也视为已知量,vs、vd、vin视为未知量可以解除vs、vd和vin关于vout的表达式:
x=solve('gm*(vin-vs)+(vd-vs)*go-gmb*vs=-vd*go','-gm*vs+(vout-vs)*go-gmb*vs=-vout*go','-vd*go-vout*go=vs*go','vs,vd,vin')
解得:
x.vs=2*vout*go/(gm+go+gmb)
x.vd=-vout*(gm+3*go+gmb)/(gm+go+gmb)
x.vin=4*vout*go*(gm+2*go+gmb)/gm/(gm+go+gmb)
显然vs和vd不是确定的数(倘若是确定的,那么无论vout取何值,得到的结果都一样,但显然不是)
但可以求得vout与vin的比值
voutbyvin=vout/x.vin
解得
voutbyvin =1/4/go/(gm+2*go+gmb)*gm*(gm+go+gmb)