The solve function error
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Bello Umar Muhamamd
le 31 Jan 2016
Commenté : Bello Umar Muhamamd
le 31 Jan 2016
When i try to run the following function i get the error '8 variables does not match 9 outputs'
[a,b,c,d,e,f,g,h,i] = solve('4*a + 1*b-1*d = 0',
'1*a-2*e = 0',
'6*a-1*h = 0',
'6*a-1*g = 0',
'1*b-1*f = 0',
'4*b + 4*c-4*d-12*e-4*f-3*g-2*h-1*i = 0',
'2*c-1*d-1*g-2*i = 0',
'1*c-1*d-3*e-1*f = 0',
'0*a + 0*b = 0');
But i have 9 variables and 9 equations although I added the last one
0 commentaires
Réponse acceptée
John D'Errico
le 31 Jan 2016
Modifié(e) : John D'Errico
le 31 Jan 2016
The last equation is NOT an equation, since it is equivalent to 0==0. Pretending that it is one, is not going to make it so.
Next, using i as a variable here is a terrible thing to do, since that is already defined as sqrt(-1).
Next, learn how to define equations properly for solve to work. Once you do that, recognize that this is a linear homogeneous problem. So the solution is entirely 0. Thus a=b=c=d=e=f=g=h=ii=0 is the solution.
Oh. Perhaps you really wanted to see a solution that is non-zero. Inventing a non-equation will not do that. In fact, null would do the job very nicely, so you might want to learn something about linear algebra, and why null solves the problem. So, assuming I typed in your problem properly as a matrix of coefficients...
A = [4,1,0,-1,0,0,0,0,0;...
1,0,0,0,-2,0,0,0,0; ...
6,0,0,0,0,0,0,-1,0;...
6,0,0,0,0,0,-1,0,0;...
0,1,0,0,0,-1,0,0,0;...
0,4,4,-4,-12,-4,-3,-2,-1;...
0,0,2,-1,0,0,-1,0,-2;...
0,0,1,-1,-3,-1,0,0,0];
format rat
v = null(A)
v =
19/824
1159/4120
5792/8401
545/1459
19/1648
1159/4120
57/412
57/412
893/2060
Since a homogeneous linear system can be scaled by any constant, lets just scale it by the last element so that element is 1.
v./v(end)
ans =
5/94
61/94
299/188
81/94
5/188
61/94
15/47
15/47
1
null(sym(A))
ans =
5/94
61/94
299/188
81/94
5/188
61/94
15/47
15/47
1
If you absolutely insist on using solve here (effectively using a Mack truck to bring a pea to Boston) then add an equation that turns the homogeneous one into a valid one that has a non-zero solution. For example, we might try this:
syms a b c d e f g h ii
result = solve(4*a + 1*b - 1*d == 0,...
1*a -2*e == 0,...
6*a -1*h == 0,...
6*a -1*g == 0,...
1*b -1*f == 0,...
4*b +4*c -4*d -12*e -4*f -3*g -2*h -1*ii == 0,...
2*c -1*d -1*g -2*ii == 0,...
1*c -1*d -3*e -1*f == 0, ...
a^2 + b^2 + c^2 + d^2 + e^2 + f^2 + g^2 + h^2 + ii^2 == 1)
To compare...
result.a./result.ii
ans =
5/94
5/94
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Clusters and Clouds dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!