2013-04-26 5 views
0

Простой вопрос, все, что я хочу сделать, - это решить Solve [] таким образом, чтобы вместо решения для одной переменной (например, Vo) она решалась для выражения Vo/Vi. Во всех случаях это просто означает разделение обеих сторон на Vi, поскольку оно все равно будет отменено на RHS, любопытно, есть ли быстрый способ сделать это.Mathematica - Решить уравнение как выражение двух переменных

Благодаря

EDIT: Вот код

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, для автоматического удаления Vi от ОРЗ ...

+0

Пожалуйста, запишите кусок Mathematica кода мы можем захватить, чтобы быть уверенными, что мы понять ваш вопрос правильно –

+0

кодекс там сейчас, дайте мне знать, если вам все еще трудно понять, что я пытаюсь сделать. Благодаря! –

ответ

1

Вы, кажется, используйте V1 в качестве заполнителя в Solve, чтобы получить VL и VR. Давайте избавимся от V1, поставив VL и VR непосредственно в эти уравнения. Это означает, что нам также необходимо определить vd как 0 - VR.

Также давайте определим Av как Vo/Vi.

Мы можем запихнуть все уравнения в Eliminate, с просьбой устранить Vo, Vi, VL, VR и 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):

In[80]:= Av =.; Av = Av /. 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][[1]]; 

In[81]:= Av 

Out[81]= (-AO R2 + RO)/(R1 + AO R1 + R2 + RO) 
Смежные вопросы