Error - matrix dimensions must agree

1 vue (au cours des 30 derniers jours)
Joe Wheeler
Joe Wheeler le 28 Déc 2020
Hi i cant seem to work out why this error keeps appearing in my code. thanks
x0 = 2;
y0 = 2;
x = [x0; y0];
iter = 0;
max_iter = 100;
tol = 0.1;
err = norm(f(x));
while iter <= max_iter && err >= tol
iter =iter + 1;
x = x - Jacob(x)\f(x);
err = norm(f(x));
end
function y = f(x)
y = (9-x.^2).^0.5;
f(x) = x.^2+y.^2-9;
g(x) = x.^2.*y+y.^3+1;
y = [f(x); g(x)];
end
function y = Jacob(x)
y = (9-x.^2).^0.5;
dfdx(x) = 2.*x;
dfdy(x) = 2.*y;
dgdx(x) = 2.*x.*y;
dgdy(x) = x.^2+3.*y.^2;
y = [dfdx(x) ,dfdy(x); dgdx(x) ,dgdy(x)];
end
  1 commentaire
Joe Wheeler
Joe Wheeler le 28 Déc 2020
apologies, the error is found here:
Error in systems_of_nonlinear_equations (line 14)
x = x - Jacob(x)\f(x);

Connectez-vous pour commenter.

Réponses (1)

Mischa Kim
Mischa Kim le 28 Déc 2020
Hi Joe, I think this is what you are trying to do:
x0 = 2;
y0 = 2;
x = [x0; y0];
iter = 0;
max_iter = 100;
tol = 0.001;
err = norm(f(x));
while iter <= max_iter && err >= tol
iter = iter + 1;
x = x - Jacob(x)\f(x);
err = norm(f(x));
end
function Y = f(X)
x = X(1); y = X(2);
f = x.^2+y.^2-9;
g = x.^2.*y+y.^3+1;
Y = [f; g];
end
function Y = Jacob(X)
x = X(1); y = X(2);
dfdx = 2.*x;
dfdy = 2.*y;
dgdx = 2.*x.*y;
dgdy = x.^2+3.*y.^2;
Y = [dfdx ,dfdy; dgdx,dgdy];
end
I will let you work through the code.

Catégories

En savoir plus sur Systems of Nonlinear Equations 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