Mathematica - 求解方程作为两个变量的表达式

时间:2013-04-26 01:17:05

标签: variables wolfram-mathematica

简单的问题,我想要做的就是让Solve []以一种方式工作,而不是求解单个变量(例如Vo),它解决了表达式Vo / Vi。在所有情况下,这只等于将双方划分为Vi,因为它无论如何都会在RHS上取消,好奇是否有快速的方法可以做到。

由于

编辑:这是代码

vd = 0 - V1;
VL = Solve[(V1 - Vi)/R1 + (V1 - Vo)/R2 == 0, V1][[All, 1, 2]][[1]];
VR = Solve[(Vo - V1)/R2 + (Vo - (AO*vd))/RO == 0, V1][[All, 1, 2]][[1]];
Av = Solve[VL == VR, Vo][[All, 1, 2]][[1]];
Av = Av/Vi //I add this to remove the Vi

基本上我希望它解决Vo / Vi,自动从RHS中删除Vi ......

1 个答案:

答案 0 :(得分:1)

您似乎在V1中使用Solve作为占位符来获取VLVR。让我们通过将V1VL直接放入这些方程中来摆脱VR。这意味着我们还需要将vd定义为0 - VR

另外,我们将Av定义为Vo/Vi

我们可以将所有等式填充到Eliminate中,要求它消除VoViVLVR和{{1} }:

vd

这与我们想要的非常接近,但In[72]:= Eliminate[ vd == 0 - VR && (VL - Vi)/R1 + (VL - Vo)/R2 == 0 && (Vo - VR)/R2 + (Vo - (AO*vd))/RO == 0 && VL == VR && Av == Vo/Vi, {Vo, Vi, vd, VL, VR}] Out[72]= Av (1 + AO + R2/R1 + RO/R1) == (-AO R2 + RO)/R1 && R1 != 0 && R2 != 0 && RO != 0 并没有完全解决,所以我们也这样做:

Av

如果您想要实际定义符号In[73]:= Solve[ Eliminate[ vd == 0 - VR && (VL - Vi)/R1 + (VL - Vo)/R2 == 0 && (Vo - VR)/R2 + (Vo - (AO*vd))/RO == 0 && VL == VR && Av == Vo/Vi, {Vo, Vi, vd, VL, VR}], Av] Out[73]= {{Av -> (-AO R2 + RO)/(R1 + AO R1 + R2 + RO)}} ,我们可以使用Av/.)执行此操作:

ReplaceAll