Solve fails to find a solution for trivial linear system
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Daniel
il 5 Mar 2016
Commentato: Walter Roberson
il 6 Mar 2016
I'm trying to find the value of G in the following set of equations by code:
clear all; clc;
syms R T S u yr y B A G
eq1 = R*u == T*yr - S*y;
eq2 = y == (B/A)*u;
eq3 = y == G*yr;
solve([eq1,eq2,eq3], G)
However, solve fails with an empty solution set, although this system has a trivial answer.
It's easy to see how it can be done, from eq1:
u == (T*yr - S*y)/R
From eq2:
y == (B/A)*(T*yr - S*y)/R
Thus:
y = yr*(B*T)/(A*R + B*S)
Finally, from eq3:
G = (B*T)/(A*R + B*S)
I can't understand why solve fails in this case. I appreciate any help I can get.
0 Commenti
Risposta accettata
Walter Roberson
il 6 Mar 2016
Actually it is just a matter of telling it all three variables to solve for:
solve(eq1, eq2, eq3, y, u, G)
2 Commenti
Walter Roberson
il 6 Mar 2016
When you do not specify the other variables, the best you could have hoped for was that G was returned as y/yr, from the third equation, as it would have had no reason to know which other variables to eliminate.
Più risposte (1)
Star Strider
il 6 Mar 2016
Sometimes, you have to lead it gently by the hand:
syms R T S u yr y B A G
eq1 = R*u == T*yr - S*y;
eq2 = y == (B/A)*u;
eq3 = y == G*yr;
eq4 = solve(eq2, eq3);
yr = eq4.yr;
eq5 = subs(eq1, yr);
G_solved = solve(eq5, G)
G_solved =
-(B*S*u)/(A*(R*u - T*yr))
Vedere anche
Categorie
Scopri di più su Number Theory in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!