Inner matrix dimensions must agree error message,
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I'm getting an error message that says inner matrix dimensions must agree, but I checked both matrices and they seem fine -- it's just a 2x2 matrix left-multiplying with a 2x1 matrix.
Here's the error message:
Error using *
Inner matrix dimensions must agree.
Error in Root_finding_practice (line 78)
x(:,i+1) = x(:,i) - ( inv( H( x(:, i) ) ) * J( x(:,i) ) ); % Newton's method in 2 variables
And here's the piece of the code:
J = @(x) [ cos( x(2) ), -x(1) * sin( x(2) ) ]; % Jacobian of f
H = @(x) [ 0, -sin( x(2) ); % Hessian matrix of 2nd derivatives
-sin( x(2) ), -cos( x(2) ) * x(1) ];
% An initial guess at a multivariable root:
x = [1; 1];
for i = 1:100 % The for-loop should stop when the function tolerance is satisfied
x(:,i+1) = x(:,i) - ( inv( H( x(:, i) ) ) * J( x(:,i) ) ); % Newton's method in 2 variables
What am I missing?
Thanks,
0 commentaires
Réponse acceptée
Adam Danz
le 22 Sep 2020
Modifié(e) : Adam Danz
le 22 Sep 2020
x(:,i) - inv(H(x(:, i)) .* J(x(:,i)))
% add this ^
however that will produce a 2x2 output which will cause an error when you index it into
x(:,i+1) =
or you can perform matrix multiplication
H(x(:, i)) is a 2x2 matrix, J(x(:,i)) is a 1x2 matrix. If you multiply these matricies, you either need to transpose the J term or switch the two terms
H(x(:, i)) * J(x(:,i)).' % result is 2x1 matrix
% or
J(x(:,i)) * H(x(:, i)) % result is a 1x2 matrix
but matrix inversion using inv() requires the use of a square matrix and neither of those fulfill that requirement.
So, you've got some thinking to do regarding what the output should be and how you'll store it.
4 commentaires
Adam Danz
le 22 Sep 2020
Modifié(e) : Adam Danz
le 22 Sep 2020
Thanks; and no problem with the spaces! You'll see lots of style manuals out there suggesting best practices when writing code that will be used by more than 1 person but it's fine to come up with a style that makes sense to you. Just today I was told by a friend that I write too many comments in my code 🙄.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing 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!