如何使用Z3Py在线解决运算放大器问题

如何使用Z3Py在线解决运算放大器问题,z3,Z3,在以下电路中找到R的值 使用以下代码解决此问题: R, V1, V2, Vo = Reals('R V1 V2 Vo') I1 = V1/(R -50) I2 = V2/(R + 10) g = - R*(I1 + I2) print g equations = [Vo == g] print equations problem = [Vo == -2 , V1 == 1, V2 == 0.5, R != -10, R != 50, R > 0] solve(equations + p

在以下电路中找到R的值

使用以下代码解决此问题:

R, V1, V2, Vo = Reals('R V1 V2 Vo')
I1 = V1/(R -50)
I2 = V2/(R + 10)
g = - R*(I1 + I2)
print g
equations = [Vo == g]
print equations
problem = [Vo == -2 ,  V1 == 1, V2 == 0.5, R != -10, R != 50, R > 0]
solve(equations + problem)
R, Vs, Ve, R1, R2 = Reals('R Vs Ve R1 R2')
g1 = (Vs - Ve)/R1
print g1
g2 = Ve/R2
print g2
equations = [g1 == g2, R1 == 2*R - 100, R2 ==R]
print equations
problem = [Vs == 35 ,  Ve == 15,  R > 0, R1 >0, R2 >0]
solve(equations + problem)
Rf, Rg,  Vo, V1, V2, R1, R2, I1, I2, V = Reals('Rf Rg Vo V1 V2 R1 R2 I1 I2 V')
equations = [V1 - V == R1*I1, V - Vo == Rf*I1, 
V2 - V == R2*I2, V == Rg*I2]
print equations
problem = [V1 == 10 ,  V2 == 15, R1 == 100, R2 == 200,
Rf ==  100, Rg ==500]
solve(equations + problem)
相应的输出为:

-R·(V1/(R - 50) + V2/(R + 10))
 [Vo = -R·(V1/(R - 50) + V2/(R + 10))]
 [R = 143.8986691902?, V2 = 1/2, V1 = 1, Vo = -2]
(Vs - Ve)/R1
Ve/R2
[(Vs - Ve)/R1 = Ve/R2, R1 = 2·R - 100, R2 = R]
[R = 150, Ve = 15, Vs = 35, R2 = 150, R1 = 200]
其他示例:在以下电路中查找R的值

使用以下代码解决此问题:

R, V1, V2, Vo = Reals('R V1 V2 Vo')
I1 = V1/(R -50)
I2 = V2/(R + 10)
g = - R*(I1 + I2)
print g
equations = [Vo == g]
print equations
problem = [Vo == -2 ,  V1 == 1, V2 == 0.5, R != -10, R != 50, R > 0]
solve(equations + problem)
R, Vs, Ve, R1, R2 = Reals('R Vs Ve R1 R2')
g1 = (Vs - Ve)/R1
print g1
g2 = Ve/R2
print g2
equations = [g1 == g2, R1 == 2*R - 100, R2 ==R]
print equations
problem = [Vs == 35 ,  Ve == 15,  R > 0, R1 >0, R2 >0]
solve(equations + problem)
Rf, Rg,  Vo, V1, V2, R1, R2, I1, I2, V = Reals('Rf Rg Vo V1 V2 R1 R2 I1 I2 V')
equations = [V1 - V == R1*I1, V - Vo == Rf*I1, 
V2 - V == R2*I2, V == Rg*I2]
print equations
problem = [V1 == 10 ,  V2 == 15, R1 == 100, R2 == 200,
Rf ==  100, Rg ==500]
solve(equations + problem)
相应的输出为:

-R·(V1/(R - 50) + V2/(R + 10))
 [Vo = -R·(V1/(R - 50) + V2/(R + 10))]
 [R = 143.8986691902?, V2 = 1/2, V1 = 1, Vo = -2]
(Vs - Ve)/R1
Ve/R2
[(Vs - Ve)/R1 = Ve/R2, R1 = 2·R - 100, R2 = R]
[R = 150, Ve = 15, Vs = 35, R2 = 150, R1 = 200]
其他例子:

使用以下代码解决此问题:

R, V1, V2, Vo = Reals('R V1 V2 Vo')
I1 = V1/(R -50)
I2 = V2/(R + 10)
g = - R*(I1 + I2)
print g
equations = [Vo == g]
print equations
problem = [Vo == -2 ,  V1 == 1, V2 == 0.5, R != -10, R != 50, R > 0]
solve(equations + problem)
R, Vs, Ve, R1, R2 = Reals('R Vs Ve R1 R2')
g1 = (Vs - Ve)/R1
print g1
g2 = Ve/R2
print g2
equations = [g1 == g2, R1 == 2*R - 100, R2 ==R]
print equations
problem = [Vs == 35 ,  Ve == 15,  R > 0, R1 >0, R2 >0]
solve(equations + problem)
Rf, Rg,  Vo, V1, V2, R1, R2, I1, I2, V = Reals('Rf Rg Vo V1 V2 R1 R2 I1 I2 V')
equations = [V1 - V == R1*I1, V - Vo == Rf*I1, 
V2 - V == R2*I2, V == Rg*I2]
print equations
problem = [V1 == 10 ,  V2 == 15, R1 == 100, R2 == 200,
Rf ==  100, Rg ==500]
solve(equations + problem)
相应的输出是

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2]
[I1 = -1/140,
Vo = 80/7,
Rg = 500,
Rf = 100,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 3/140,
V = 75/7]
其他例子:

代码:

输出:

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2, Rf = 200 + Rg]
[I1 = -0.0113999063?,
Rg = 577.2001872658?,
Vo = 20,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 0.0193000468?,
V = 11.1399906367?,
Rf = 777.2001872658?]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2)]
[R4 = 10,
R3 = 1000,
R2 = 1000,
R1 = 1000,
Vi = 1,
Vo = -102,
I2 = -1/10,
Va = -1,
I1 = 1/1000]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2), R2 = R1 - 100, R3 = R1 -   200]
[I1 = 0.0030468970?,
R1 = 328.2027496108?,
I2 = -0.0695310291?,
R4 = 10,
Vo = -10,
Vi = 1,
R3 = 128.2027496108?,
R2 = 228.2027496108?,
Va = -0.6953102918?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), Vo = A·(V2 - V1)]
[I2 = 0.0001658374?,
 A = 100,
 R = 300,
 RF = 1000,
 Ri = 100,
 R1 = 2000,
 Vi = 1,
 Vo = -1.6583747927?,
 I1 = 0.0021724709?,
 V1 = 0.3482587064?,
 V2 = 0.3316749585?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), 
Vo = A·(V2 -  V1), RF = R + 1000, Ri = R + 500, R1 = R + 1500]
[I2 = 0.0000150298?,
 R = 830.6885937397?,
 I1 = 0.0011375745?,
 Vo = -2,
 A = 100,
 Vi = 1,
 RF = 1830.6885937397?,
 V1 = 0.0550298124?,
 V2 = 0.0350298124?,
 R1 = 2330.6885937397?,
 Ri = 1330.6885937397?]
[V = (RC + RD)·I1, VB = RD·I1, V = (RA + RB)·I2, VA = RB·I2, VB - V2 = R1·I3, 
V2 = R2·I3, VA - V1 = R3·I4, V1 - Vo = R4·I4, V2 = V1, RD = RB + 10]
[I1 = 0.3626991607?,
RB = 2.7855295545?,
I2 = 1.3208191688?,
I4 = 0.1149744009?,
I3 = 0.2107864017?,
RC = 1,
RA = 1,
R4 = 22,
R3 = 10,
R2 = 12,
R1 = 10,
V = 5,
Vo = 0,
V1 = 2.5294368214?,
V2 = 2.5294368214?,
VA = 3.6791808311?,
VB = 4.6373008392?,
RD = 12.7855295545?]
其他例子:

代码:

输出:

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2, Rf = 200 + Rg]
[I1 = -0.0113999063?,
Rg = 577.2001872658?,
Vo = 20,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 0.0193000468?,
V = 11.1399906367?,
Rf = 777.2001872658?]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2)]
[R4 = 10,
R3 = 1000,
R2 = 1000,
R1 = 1000,
Vi = 1,
Vo = -102,
I2 = -1/10,
Va = -1,
I1 = 1/1000]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2), R2 = R1 - 100, R3 = R1 -   200]
[I1 = 0.0030468970?,
R1 = 328.2027496108?,
I2 = -0.0695310291?,
R4 = 10,
Vo = -10,
Vi = 1,
R3 = 128.2027496108?,
R2 = 228.2027496108?,
Va = -0.6953102918?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), Vo = A·(V2 - V1)]
[I2 = 0.0001658374?,
 A = 100,
 R = 300,
 RF = 1000,
 Ri = 100,
 R1 = 2000,
 Vi = 1,
 Vo = -1.6583747927?,
 I1 = 0.0021724709?,
 V1 = 0.3482587064?,
 V2 = 0.3316749585?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), 
Vo = A·(V2 -  V1), RF = R + 1000, Ri = R + 500, R1 = R + 1500]
[I2 = 0.0000150298?,
 R = 830.6885937397?,
 I1 = 0.0011375745?,
 Vo = -2,
 A = 100,
 Vi = 1,
 RF = 1830.6885937397?,
 V1 = 0.0550298124?,
 V2 = 0.0350298124?,
 R1 = 2330.6885937397?,
 Ri = 1330.6885937397?]
[V = (RC + RD)·I1, VB = RD·I1, V = (RA + RB)·I2, VA = RB·I2, VB - V2 = R1·I3, 
V2 = R2·I3, VA - V1 = R3·I4, V1 - Vo = R4·I4, V2 = V1, RD = RB + 10]
[I1 = 0.3626991607?,
RB = 2.7855295545?,
I2 = 1.3208191688?,
I4 = 0.1149744009?,
I3 = 0.2107864017?,
RC = 1,
RA = 1,
R4 = 22,
R3 = 10,
R2 = 12,
R1 = 10,
V = 5,
Vo = 0,
V1 = 2.5294368214?,
V2 = 2.5294368214?,
VA = 3.6791808311?,
VB = 4.6373008392?,
RD = 12.7855295545?]
其他例子:

代码:

输出:

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2, Rf = 200 + Rg]
[I1 = -0.0113999063?,
Rg = 577.2001872658?,
Vo = 20,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 0.0193000468?,
V = 11.1399906367?,
Rf = 777.2001872658?]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2)]
[R4 = 10,
R3 = 1000,
R2 = 1000,
R1 = 1000,
Vi = 1,
Vo = -102,
I2 = -1/10,
Va = -1,
I1 = 1/1000]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2), R2 = R1 - 100, R3 = R1 -   200]
[I1 = 0.0030468970?,
R1 = 328.2027496108?,
I2 = -0.0695310291?,
R4 = 10,
Vo = -10,
Vi = 1,
R3 = 128.2027496108?,
R2 = 228.2027496108?,
Va = -0.6953102918?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), Vo = A·(V2 - V1)]
[I2 = 0.0001658374?,
 A = 100,
 R = 300,
 RF = 1000,
 Ri = 100,
 R1 = 2000,
 Vi = 1,
 Vo = -1.6583747927?,
 I1 = 0.0021724709?,
 V1 = 0.3482587064?,
 V2 = 0.3316749585?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), 
Vo = A·(V2 -  V1), RF = R + 1000, Ri = R + 500, R1 = R + 1500]
[I2 = 0.0000150298?,
 R = 830.6885937397?,
 I1 = 0.0011375745?,
 Vo = -2,
 A = 100,
 Vi = 1,
 RF = 1830.6885937397?,
 V1 = 0.0550298124?,
 V2 = 0.0350298124?,
 R1 = 2330.6885937397?,
 Ri = 1330.6885937397?]
[V = (RC + RD)·I1, VB = RD·I1, V = (RA + RB)·I2, VA = RB·I2, VB - V2 = R1·I3, 
V2 = R2·I3, VA - V1 = R3·I4, V1 - Vo = R4·I4, V2 = V1, RD = RB + 10]
[I1 = 0.3626991607?,
RB = 2.7855295545?,
I2 = 1.3208191688?,
I4 = 0.1149744009?,
I3 = 0.2107864017?,
RC = 1,
RA = 1,
R4 = 22,
R3 = 10,
R2 = 12,
R1 = 10,
V = 5,
Vo = 0,
V1 = 2.5294368214?,
V2 = 2.5294368214?,
VA = 3.6791808311?,
VB = 4.6373008392?,
RD = 12.7855295545?]
其他例子:

代码:

输出:

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2, Rf = 200 + Rg]
[I1 = -0.0113999063?,
Rg = 577.2001872658?,
Vo = 20,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 0.0193000468?,
V = 11.1399906367?,
Rf = 777.2001872658?]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2)]
[R4 = 10,
R3 = 1000,
R2 = 1000,
R1 = 1000,
Vi = 1,
Vo = -102,
I2 = -1/10,
Va = -1,
I1 = 1/1000]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2), R2 = R1 - 100, R3 = R1 -   200]
[I1 = 0.0030468970?,
R1 = 328.2027496108?,
I2 = -0.0695310291?,
R4 = 10,
Vo = -10,
Vi = 1,
R3 = 128.2027496108?,
R2 = 228.2027496108?,
Va = -0.6953102918?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), Vo = A·(V2 - V1)]
[I2 = 0.0001658374?,
 A = 100,
 R = 300,
 RF = 1000,
 Ri = 100,
 R1 = 2000,
 Vi = 1,
 Vo = -1.6583747927?,
 I1 = 0.0021724709?,
 V1 = 0.3482587064?,
 V2 = 0.3316749585?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), 
Vo = A·(V2 -  V1), RF = R + 1000, Ri = R + 500, R1 = R + 1500]
[I2 = 0.0000150298?,
 R = 830.6885937397?,
 I1 = 0.0011375745?,
 Vo = -2,
 A = 100,
 Vi = 1,
 RF = 1830.6885937397?,
 V1 = 0.0550298124?,
 V2 = 0.0350298124?,
 R1 = 2330.6885937397?,
 Ri = 1330.6885937397?]
[V = (RC + RD)·I1, VB = RD·I1, V = (RA + RB)·I2, VA = RB·I2, VB - V2 = R1·I3, 
V2 = R2·I3, VA - V1 = R3·I4, V1 - Vo = R4·I4, V2 = V1, RD = RB + 10]
[I1 = 0.3626991607?,
RB = 2.7855295545?,
I2 = 1.3208191688?,
I4 = 0.1149744009?,
I3 = 0.2107864017?,
RC = 1,
RA = 1,
R4 = 22,
R3 = 10,
R2 = 12,
R1 = 10,
V = 5,
Vo = 0,
V1 = 2.5294368214?,
V2 = 2.5294368214?,
VA = 3.6791808311?,
VB = 4.6373008392?,
RD = 12.7855295545?]
其他例子:

代码:

输出:

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2, Rf = 200 + Rg]
[I1 = -0.0113999063?,
Rg = 577.2001872658?,
Vo = 20,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 0.0193000468?,
V = 11.1399906367?,
Rf = 777.2001872658?]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2)]
[R4 = 10,
R3 = 1000,
R2 = 1000,
R1 = 1000,
Vi = 1,
Vo = -102,
I2 = -1/10,
Va = -1,
I1 = 1/1000]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2), R2 = R1 - 100, R3 = R1 -   200]
[I1 = 0.0030468970?,
R1 = 328.2027496108?,
I2 = -0.0695310291?,
R4 = 10,
Vo = -10,
Vi = 1,
R3 = 128.2027496108?,
R2 = 228.2027496108?,
Va = -0.6953102918?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), Vo = A·(V2 - V1)]
[I2 = 0.0001658374?,
 A = 100,
 R = 300,
 RF = 1000,
 Ri = 100,
 R1 = 2000,
 Vi = 1,
 Vo = -1.6583747927?,
 I1 = 0.0021724709?,
 V1 = 0.3482587064?,
 V2 = 0.3316749585?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), 
Vo = A·(V2 -  V1), RF = R + 1000, Ri = R + 500, R1 = R + 1500]
[I2 = 0.0000150298?,
 R = 830.6885937397?,
 I1 = 0.0011375745?,
 Vo = -2,
 A = 100,
 Vi = 1,
 RF = 1830.6885937397?,
 V1 = 0.0550298124?,
 V2 = 0.0350298124?,
 R1 = 2330.6885937397?,
 Ri = 1330.6885937397?]
[V = (RC + RD)·I1, VB = RD·I1, V = (RA + RB)·I2, VA = RB·I2, VB - V2 = R1·I3, 
V2 = R2·I3, VA - V1 = R3·I4, V1 - Vo = R4·I4, V2 = V1, RD = RB + 10]
[I1 = 0.3626991607?,
RB = 2.7855295545?,
I2 = 1.3208191688?,
I4 = 0.1149744009?,
I3 = 0.2107864017?,
RC = 1,
RA = 1,
R4 = 22,
R3 = 10,
R2 = 12,
R1 = 10,
V = 5,
Vo = 0,
V1 = 2.5294368214?,
V2 = 2.5294368214?,
VA = 3.6791808311?,
VB = 4.6373008392?,
RD = 12.7855295545?]
其他例子:

电阻RB的哪个值将提供产生Vo=0的电桥的平衡

代码:

输出:

[V1 - V = R1·I1, V - Vo = Rf·I1, V2 - V = R2·I2, V = Rg·I2, Rf = 200 + Rg]
[I1 = -0.0113999063?,
Rg = 577.2001872658?,
Vo = 20,
R2 = 200,
R1 = 100,
V2 = 15,
V1 = 10,
I2 = 0.0193000468?,
V = 11.1399906367?,
Rf = 777.2001872658?]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2)]
[R4 = 10,
R3 = 1000,
R2 = 1000,
R1 = 1000,
Vi = 1,
Vo = -102,
I2 = -1/10,
Va = -1,
I1 = 1/1000]
[Vi = R1·I1, -Va = R2·I1, Va = R4·I2, Va - Vo = R3·(I1 - I2), R2 = R1 - 100, R3 = R1 -   200]
[I1 = 0.0030468970?,
R1 = 328.2027496108?,
I2 = -0.0695310291?,
R4 = 10,
Vo = -10,
Vi = 1,
R3 = 128.2027496108?,
R2 = 228.2027496108?,
Va = -0.6953102918?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), Vo = A·(V2 - V1)]
[I2 = 0.0001658374?,
 A = 100,
 R = 300,
 RF = 1000,
 Ri = 100,
 R1 = 2000,
 Vi = 1,
 Vo = -1.6583747927?,
 I1 = 0.0021724709?,
 V1 = 0.3482587064?,
 V2 = 0.3316749585?]
[Vi - V1 = R·I1, V1 - V2 = Ri·I2, V2 = R1·I2, V1 - Vo = RF·(I1 - I2), 
Vo = A·(V2 -  V1), RF = R + 1000, Ri = R + 500, R1 = R + 1500]
[I2 = 0.0000150298?,
 R = 830.6885937397?,
 I1 = 0.0011375745?,
 Vo = -2,
 A = 100,
 Vi = 1,
 RF = 1830.6885937397?,
 V1 = 0.0550298124?,
 V2 = 0.0350298124?,
 R1 = 2330.6885937397?,
 Ri = 1330.6885937397?]
[V = (RC + RD)·I1, VB = RD·I1, V = (RA + RB)·I2, VA = RB·I2, VB - V2 = R1·I3, 
V2 = R2·I3, VA - V1 = R3·I4, V1 - Vo = R4·I4, V2 = V1, RD = RB + 10]
[I1 = 0.3626991607?,
RB = 2.7855295545?,
I2 = 1.3208191688?,
I4 = 0.1149744009?,
I3 = 0.2107864017?,
RC = 1,
RA = 1,
R4 = 22,
R3 = 10,
R2 = 12,
R1 = 10,
V = 5,
Vo = 0,
V1 = 2.5294368214?,
V2 = 2.5294368214?,
VA = 3.6791808311?,
VB = 4.6373008392?,
RD = 12.7855295545?]

请让我知道你的想法,如果你知道一个更有效的代码来解决这类问题。非常感谢。

非常好。顺便说一句,Z3精确计算所有内容,尽管默认情况下,它只打印10位小数,但在内部所有内容都精确表示。您可以使用命令
set\u选项(精度=100)
强制它显示100位小数。如果需要,我们还可以转储用于编码结果的内部表示。这里有一个例子:非常非常感谢,Z3是惊人的,祝贺你。