invers matrix error calculate

2 vues (au cours des 30 derniers jours)
pablolama
pablolama le 3 Fév 2019
Commenté : John D'Errico le 3 Fév 2019
OA=1.42
AB=4.3
BO=3.33
OO=6
alfa=linspace(19.7, -103, 14);
beta= [37.3648, 40.5764, 43.6511, 46.4267, 48.7411, 50.4573, 51.4816, 51.7706, 51.3269, 50.1884, 48.4165, 46.0853, 43.2749, 40.0669];
gamma= [-68.0355, -66.333, -63.8261, -60.6513, -56.9882, -53.0279, -48.9467, -44.8871, -40.9515, -37.2048, -33.6824, -30.3996, -27.3598, -24.5623]
J=[AB*sind(beta) BO*sind(gamma); AB*cosd(beta) BO*cosd(gamma)]
omega=(inv(J))*[OA*sind(alfa); OA*sind(alfa)]
disp(omega)
It calculates:
OA =
1.4200
AB =
4.3000
BO =
3.3300
OO =
6
gamma =
-68.0355 -66.3330 -63.8261 -60.6513 -56.9882 -53.0279 -48.9467 -44.8871 -40.9515 -37.2048 -33.6824 -30.3996 -27.3598 -24.5623
J =
Columns 1 through 16
2.6096 2.7970 2.9681 3.1153 3.2325 3.3159 3.3644 3.3778 3.3571 3.3031 3.2164 3.0976 2.9476 2.7678 -3.0883 -3.0499
3.4176 3.2660 3.1113 2.9639 2.8357 2.7376 2.6779 2.6609 2.6870 2.7531 2.8540 2.9824 3.1307 3.2908 1.2455 1.3367
Columns 17 through 28
-2.9885 -2.9026 -2.7924 -2.6604 -2.5111 -2.3500 -2.1825 -2.0135 -1.8468 -1.6851 -1.5304 -1.3842
1.4689 1.6321 1.8142 2.0027 2.1870 2.3593 2.5150 2.6523 2.7710 2.8722 2.9575 3.0287
Error using inv
Matrix must be square.
Error in accelerazioniangolari (line 9)
omega=(
How can i solve the error, it calculates J not like 14 matrix, i think that is the problem. How can i fix it?
  2 commentaires
John D'Errico
John D'Errico le 3 Fév 2019
Modifié(e) : John D'Errico le 3 Fév 2019
https://www.mathworks.com/matlabcentral/answers/442898-how-to-find-the-inverse-of-a-6-2-matrix
pablolama
pablolama le 3 Fév 2019
But my matrix is 2x2
J=[AB*sind(beta) BO*sind(gamma); AB*cosd(beta) BO*cosd(gamma)]
When it calculates, it gives me
J =
Columns 1 through 16
2.6096 2.7970 2.9681 3.1153 3.2325 3.3159 3.3644 3.3778 3.3571 3.3031 3.2164 3.0976 2.9476 2.7678 -3.0883 -3.0499
3.4176 3.2660 3.1113 2.9639 2.8357 2.7376 2.6779 2.6609 2.6870 2.7531 2.8540 2.9824 3.1307 3.2908 1.2455 1.3367
Columns 17 through 28
-2.9885 -2.9026 -2.7924 -2.6604 -2.5111 -2.3500 -2.1825 -2.0135 -1.8468 -1.6851 -1.5304 -1.3842
1.4689 1.6321 1.8142 2.0027 2.187
0 2.3593 2.5150 2.6523 2.7710 2.8722 2.9575 3.0287
So it it is no more a 2x2 and i can't calculate its inverse. How can i solve it?

Connectez-vous pour commenter.

Réponses (1)

John D'Errico
John D'Errico le 3 Fév 2019
You cannot use inv on a 2x28 array. So either of these forms are equally valid:
omega=pinv(J)*[OA*sind(alfa); OA*sind(alfa)];
omega=J\[OA*sind(alfa); OA*sind(alfa)];
Neither is more technically coerrect, and you can take your free choice between which of infintely many solutions you want. The two options above are just two of the many possible.
  2 commentaires
pablolama
pablolama le 3 Fév 2019
There is not a way to have 14 2x2 matrix when i calculate J?
John D'Errico
John D'Errico le 3 Fév 2019
You cannot assume that MATLAB will be smart enough to figure out what you want to do, when you try to do something completely unusual. Instead, MATLAB does what you tell it to do, and can do no more than that.
However, nothing stops you from using a loop. Loops are not the worst thing in the world. They are not that inefficient.
doc for

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical 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!

Translated by