matlab数値解析非線形方程式と方程式群の数値解法

3237 ワード

  • feval

  • 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);
  • @(x)はfが関数ハンドルであることを示し、@(x)は関数ハンドルを定義する演算子であり、このような関数ハンドルは関数式を指す.f=@(x)acos(x)は、関数ファイル%f.m function y=f(x)y=acos(x)%erfenを作成することに相当する.m feval(f,2)
  • ニュートン法における関数ハンドル導出fun=@(x)a*x+b;パラメータfunction[x,k]=fnewton(fun,x 0,e)としてその導関数を求め,dfun=diff(fun)エラー報告にdiffクラス‘function_を用いるhandle'は関数「diff」をサポートしません.

  • symsで関数ハンドルをシンボル関数に変換diffで導いてからmatlabFunctionで関数ハンドルに変換できます
    syms x; %                   
    y=fun(x);
    dfun=matlabFunction(diff(y)) %   matlabFunction            
  • fzerotx fzero実装zeroinアルゴリズム(二分法、割線法、IQIアルゴリズム)fzerotx fzero簡略化fzerotxには2つの入力パラメータがあり、最初の入力パラメータはゼロ解を計算する関数F(x)を指定する.2番目のパラメータは、初期の探索空間[a,b]
  • を指定する.
    bessj0=inline('besselj(0,x)') %           J0(x)
    for n=1:10
    z(n)=fzerotx(bessj0,[(n-1) n]*pi);
    end
  • ある関数をパラメータとして別の関数に渡す3つの方法:1.関数ハンドル2.埋め込みオブジェクト3.匿名関数
  • 関数ハンドル:内部関数、またはMファイルに定義関数名の前に'@'記号@cos@humps@bessj 0を付ける.mは2行のコードを含むmファイルである
    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を伝達されたパラメータとして許容するという違いがある.