Error - matrix dimensions must agree

1 view (last 30 days)
Joe Wheeler
Joe Wheeler on 28 Dec 2020
Answered: Mischa Kim on 28 Dec 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 Comment
Joe Wheeler
Joe Wheeler on 28 Dec 2020
apologies, the error is found here:
Error in systems_of_nonlinear_equations (line 14)
x = x - Jacob(x)\f(x);

Sign in to comment.

Answers (1)

Mischa Kim
Mischa Kim on 28 Dec 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.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!