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 Center および File ExchangeStartup and Shutdown についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by