Difference between revisions of "Maple/Example/CAD Fig 03 14"

From PrattWiki
Jump to navigation Jump to search
(Make Substitutions)
Line 11: Line 11:
 
as the first executable in your worksheet.
 
as the first executable in your worksheet.
  
=== Define Equations ===
+
== Define Equations ==
 
To solve this circuit using Mesh Current Method, note that there are three meshes and no current sources so you have three independent KVL equations.  While there are six loops to choose from, there is no reason to not just choose the three meshes.  If you start at the lower-left hand corner of each mesh and count the voltage drops clockwise, you get:
 
To solve this circuit using Mesh Current Method, note that there are three meshes and no current sources so you have three independent KVL equations.  While there are six loops to choose from, there is no reason to not just choose the three meshes.  If you start at the lower-left hand corner of each mesh and count the voltage drops clockwise, you get:
 
<center><math>
 
<center><math>
Line 27: Line 27:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Solve Equations ===
+
== Solve Equations ==
 
You now want to solve the equations for the mesh currents; you can get the solutions (and store them) with the code:
 
You now want to solve the equations for the mesh currents; you can get the solutions (and store them) with the code:
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 41: Line 41:
 
evalf[4](numsoln1);
 
evalf[4](numsoln1);
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
== Define Auxiliary Equations ==
 +
You may want to find the powers delivered by each source and the powers absorbed by each resistor.  To do that, make a set of auxiliary equations and then perform the necessary substitutions; note that the second line is fairly long and is probably wrapping on your screen.
 +
<syntaxhighlight lang=text>
 +
psource := pdelv1 = v1*I1, pdelv2 = v2*(I3 - I1);
 +
presistor := pabsR2 = R2*I1^2, pabsR3 = R3*(I1 - I2)^2, pabsR4 = R4*I2^2, pabsR5 = R5*(I2 - I3)^2, pabsR6 = R6*(I1 - I3)^2, pabsR7 = R7*I3^2;
 +
numpower := subs(soln1[1][], vals, [psource, presistor]);
 +
evalf[4](numpower);
 +
</syntaxhighlight>
 +
 +
== Check Conservation of Power ==
 +
Finally, you may want to see if power is conserved.  To do that, you will want to add the powers delivered by the two sources together, then add the powers absorbed by the six resistors together, then compare those two numbers.  They should be the same.  One way to accomplish this goal is to use a loop in Maple.  Inside the loop, you will want to access one of the expressions in the <code>power</code> list, extract the right hand side of the expression, then add that to some kind of accumulator variable.  Here is some example code to do just that for this particular problem:
 +
<syntaxhighlight lang=text>
 +
pdel := 0:
 +
for k to 2 do
 +
    pdel := pdel + rhs(power[k]);
 +
end do:
 +
pdel;
 +
</syntaxhighlight>
 +
<syntaxhighlight lang=text>
 +
pabs := 0;
 +
for k from 3 to 8 do
 +
    pabs := pabs + rhs(power[k]);
 +
end do:
 +
pabs;
 +
</syntaxhighlight>
 +
Note that the : at the end of the <code>end do:</code> command tells Maple to suppress printing out intermediate results in the loop.  If you want to see what it is doing, replace the : with a ;
 +
 +
For this circuit, you should get that the power delivered by the sources is 4124/1327 and that the power absorbed by all the resistors is also that amount.

Revision as of 18:55, 13 January 2024

This page goes over how to get the equations from and solve the circuit in Figure 3-14 of "Circuit Analysis and Design" by Ulaby, Maharbiz, and Furse.

Convert to Symbols

For the Maple worksheet, we are going to use symbols for each of the circuit elements. The 6 V source will be $$v_1$$ and the 4 V source will be $$v_2$$. For the resistors, label each with a subscript that matches the value in ohms (e.g. the 6 $$\Omega$$ resistor will be called $$R_6$$.

Initialization

Go ahead and put

restart

as the first executable in your worksheet.

Define Equations

To solve this circuit using Mesh Current Method, note that there are three meshes and no current sources so you have three independent KVL equations. While there are six loops to choose from, there is no reason to not just choose the three meshes. If you start at the lower-left hand corner of each mesh and count the voltage drops clockwise, you get:

\( \begin{align*} KVL,l1&=-v_1+R_2I_1+R_3(I_1-I_2)+R_6(I_1-I_3)+v_2=0\\ KVL,l2&=R_3(I_2-I_1)+R_4I_2+R_5(I_2-I_3)=0\\ KVL,l3&=-v_2+R_6(I_3-I_1)+R_5(I_3-I_2)+R_7I_3=0 \end{align*} \)

You can add those to your Maple worksheet with:

KVLl1 := -v1 + R2*I1 + R3*(I1 - I2) + R6*(I1 - I3) + v2 = 0;
KVLl2 := R3*(I2 - I1) + R4*I2 + R5*(I2 - I3) = 0;
KVLl3 := -v2 + R6*(I3 - I1) + R5*(I3 - I2) + R7*I3 = 0;

Solve Equations

You now want to solve the equations for the mesh currents; you can get the solutions (and store them) with the code:

soln1 := solve({KVLl1, KVLl2, KVLl3}, [I1, I2, I3])

In the example worksheet, the solutions are printed out. You should generally run this command at least once without putting a : at the end to make sure you are actually getting a set of solutions and not just an empty list. Once you have confirmed that you are getting a solution, if you do not need to see the full symbolic solutions, you can then add a : to the end of this line to suppress printing.

Make Substitutions

Now that you have symbolic answers, you can make numerical substitutions for those symbols using the subs command. For this problem, you can make a variable that has all the substitutions and then use them. You may also want Maple to display the results as floating point numbers rather than fractions; use the evalf command for that:

vals := R2 = 2, R3 = 3, R4 = 4, R5 = 5, R6 = 6, R7 = 7, v1 = 6, v2 = 4;
numsoln1 := subs(vals, soln1);
evalf[4](numsoln1);

Define Auxiliary Equations

You may want to find the powers delivered by each source and the powers absorbed by each resistor. To do that, make a set of auxiliary equations and then perform the necessary substitutions; note that the second line is fairly long and is probably wrapping on your screen.

psource := pdelv1 = v1*I1, pdelv2 = v2*(I3 - I1);
presistor := pabsR2 = R2*I1^2, pabsR3 = R3*(I1 - I2)^2, pabsR4 = R4*I2^2, pabsR5 = R5*(I2 - I3)^2, pabsR6 = R6*(I1 - I3)^2, pabsR7 = R7*I3^2;
numpower := subs(soln1[1][], vals, [psource, presistor]);
evalf[4](numpower);

Check Conservation of Power

Finally, you may want to see if power is conserved. To do that, you will want to add the powers delivered by the two sources together, then add the powers absorbed by the six resistors together, then compare those two numbers. They should be the same. One way to accomplish this goal is to use a loop in Maple. Inside the loop, you will want to access one of the expressions in the power list, extract the right hand side of the expression, then add that to some kind of accumulator variable. Here is some example code to do just that for this particular problem:

pdel := 0:
for k to 2 do
    pdel := pdel + rhs(power[k]);
end do:
pdel;
pabs := 0;
for k from 3 to 8 do
    pabs := pabs + rhs(power[k]);
end do:
pabs;

Note that the : at the end of the end do: command tells Maple to suppress printing out intermediate results in the loop. If you want to see what it is doing, replace the : with a ;

For this circuit, you should get that the power delivered by the sources is 4124/1327 and that the power absorbed by all the resistors is also that amount.