Tranform a systems of equations to for loop
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello everyone, I hav the following systems of equations:
syms Qc Qh Qm1 Qm2 Qm3 T1 T2 T3
eqn1 = Qm1 - Qc == q0 - Pc - qw/2 ;
eqn2 = T1 + Rc*Qc == T0;
eqn3 = T2 - T1 + R1/2*Qm1 == R1/2*q0;
eqn4 = T2 - Rg0/2*Qm1 + Rg0/2*Qm2 == T0;
eqn5 = T3 - T2 + R1/2*Qm2 == R1/2*q0;
eqn6 = T3 - Rg0/2*Qm2 + Rg0/2*Qm3 == T0;
eqn7 = Qh + Qm3 == Ph - q0 + qw/2;
eqn8 = T3 - Rh*Qh == T0;
[A,B] = equationsToMatrix([eqn1, eqn2, eqn3, eqn4, eqn5, eqn6, eqn7, eqn8], [Qc Qh Qm1 Qm2 Qm3 T1 T2 T3]);
X = linsolve(A,B);
Is there a way to transform these systems of equations to a simpler and faster way to calculate the unknwowns variables (like a for loop)?
Thanks in advance!
0 Kommentare
Antworten (1)
Walter Roberson
am 18 Mär. 2021
No, linsolve is pretty efficient.
4 Kommentare
Walter Roberson
am 31 Mär. 2021
q0vals = [-1, 0, 1];
syms Pc Ph q0 qw R1 Rc Rg0 Rh T0 %replace these with actual constants
syms Qc Qh Qm1 Qm2 Qm3 T1 T2 T3
eqn1 = Qm1 - Qc == q0 - Pc - qw/2 ;
eqn2 = T1 + Rc*Qc == T0;
eqn3 = T2 - T1 + R1/2*Qm1 == R1/2*q0;
eqn4 = T2 - Rg0/2*Qm1 + Rg0/2*Qm2 == T0;
eqn5 = T3 - T2 + R1/2*Qm2 == R1/2*q0;
eqn6 = T3 - Rg0/2*Qm2 + Rg0/2*Qm3 == T0;
eqn7 = Qh + Qm3 == Ph - q0 + qw/2;
eqn8 = T3 - Rh*Qh == T0;
[A,B] = equationsToMatrix([eqn1, eqn2, eqn3, eqn4, eqn5, eqn6, eqn7, eqn8], [Qc Qh Qm1 Qm2 Qm3 T1 T2 T3]);
Bmat = subs(B, q0, q0vals)
X = simplify(A\Bmat);
X
Siehe auch
Kategorien
Mehr zu Systems of Nonlinear Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!