matlab数値解析非線形方程式と方程式群の数値解法
3237 ワード
function x=fun(a,b) x=a+b; 呼び出し1.feval(@fun,a,b); 2.feval(‘fun’,a,b); パラメータとしてfunction x=main(fun,y,yy)c=feval(fun,a,b);
symsで関数ハンドルをシンボル関数に変換diffで導いてからmatlabFunctionで関数ハンドルに変換できます
syms x; %
y=fun(x);
dfun=matlabFunction(diff(y)) % matlabFunction
bessj0=inline('besselj(0,x)') % J0(x)
for n=1:10
z(n)=fzerotx(bessj0,[(n-1) n]*pi);
end
function y=bessj0(x)
y=besslj(0,x);
これにより、ハンドルは関数の関数の入力パラメータとして使用できます.
z=fzerotx(@bessj0,[0 pi]);
ここで@bessljも合法的な関数ハンドルであり、2つの入力パラメータを持つ関数に対応しています.
埋め込みオブジェクト:新しいファイルF=inline(‘cos(pi*t)’)を生成することなく、簡単な関数を定義する方法です.F=inline(‘besselj(0,x)’); 埋め込みオブジェクトは、z=fzerotx(F,[0 pi])などの関数のパラメータとして使用できます.埋め込みオブジェクトは、関数の値re=F(z)を直接計算するために使用することができる.
匿名関数はMATLAB第7版から始まり、埋め込みオブジェクトはF=@(t)cos(pi*t)のような匿名関数に取って代わることができる.F=@(z)z^3-2*z-5; F=@(x)besseij(0,x); これらのオブジェクトを匿名関数と呼ぶのは、@(arguments)expressionのような構造が関数ハンドルを定義しているが、名前を付けていないためである.
Mファイル、埋め込みオブジェクト、匿名関数で、1つの入力パラメータを超える関数を定義できます.これらの追加パラメータの値は、fzerotxを介してターゲット関数に渡すことができる.J 0(x)=0.5のように、2つまたは3つのパラメータを有する埋め込みオブジェクトF=inline(‘besselj(0,x)−y’,’x’,’y’)またはB=inline(‘besselj(n,x)−y’,’x’,’n’,’y’)は、2つまたは3つのパラメータを有する匿名関数F=@(x,y)besselj(0,x)-yまたはB=@(x,n,y)besselj(n,x)-yを定義してxi=fzerotx(F,[02],.5)またはxi=fzerotx(F,[02],0,.5)を実行し、結果をfevalを用いて関数パラメータに評価することもできる.式feval(F,x,)はF(x,)に等価であるが,fevalを用いる場合,Fを伝達されたパラメータとして許容するという違いがある.