Error - matrix dimensions must agree

2 次查看(过去 30 天)
Joe Wheeler
Joe Wheeler 2020-12-28
回答: Mischa Kim 2020-12-28
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 个评论
Joe Wheeler
Joe Wheeler 2020-12-28
apologies, the error is found here:
Error in systems_of_nonlinear_equations (line 14)
x = x - Jacob(x)\f(x);

请先登录,再进行评论。

回答(1 个)

Mischa Kim
Mischa Kim 2020-12-28
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.

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by