次のコードのエラーを理解したいですか?コードは以下に示されています
function x0=secand2d(f,g,x,dx,tol)
% find solution of f(x,y)=0 and g(x,y)=0
for i=1:20
x0=x;
f0=[feval(f,x0),feval(g,x0)];
x0=x+[dx(1),0];
fx=[feval(f,x0),feval(g,x0)];
fx=(fx-f0)/dx(1);
x0=x+[0 dx(2)];
fy=[feval(f,x0),feval(g,x0)];
fy=(fy-f0)/dx(2);
A=[fx;fy]+eps;
x=x+dx;
dx=(-A\f0'-dx')';
if(norm(dx)<tol) ;return; end;
end;
disp(norm(dx));
pause;
end
これは 2 次元割線法を表し、関数 f と g は次の形式で定義されます。
f=@(x,y) (x-sin(x+y)); and g=@(x,y) y-cos(x-y);
私もチェックしましたが、これらの機能はそのパラメーターで正常に機能します
f(3,3)
ans =
3.2794
と
g(1,1)
ans =
0
また
x=[0.9 0.9];
dx=[0.1 0.1];
tol=1e-5;
しかし、次のコードはそのような種類のエラーを生成しました
secand2d(f,g,x,dx,tol)
Error using @(x,y)(x-sin(x+y))
Not enough input arguments.
Error in secand2d (line 5)
f0=[feval(f,x0),feval(g,x0)];
このエラーの理由を明確にするのを手伝ってください