ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

無名関数

この例では、無名関数を使用してコマンド ラインで関数を定義する方法を示します。

関数の積分

関数 10*x があるとします。

$$h(x)= 10x$$

10 だけではなく、x に任意の乗算を行う場合、変数 g (g が最初に 10 に設定されます) を作成し、新しい関数を作成します。

$$h(x)= g * x$$

関数ハンドル h を作成して MATLAB 上でこの計算を行いましょう。

g=10;
h=@(x) g*x;

ハンドルを関数 INTEGRAL に渡すことで関数の積分が可能です。

integral(h,1,10)
ans =

  495.0000

別の関数を想定します。

$$f(x)= sin(\alpha x)$$

alpha = 0.9 として、この関数への関数ハンドルを作成します。

alpha=0.9;
f=@(x) sin(alpha*x);

関数をプロットしてその下の領域を塗りつぶします。

x=0:pi/100:pi;
area(x,f(x)); % You can evaluate f without feval
title('f(x)= sin(\alpha x), \alpha =.9');

値の区間で関数の下の領域を、関数 INTEGRAL を使って計算できます。

integral(f,0,pi)
ans =

    2.1678

関数の最小化

以下の関数を想定します。

$$f(x)=a x^2 + bx + c$$

ただし、a=1, b=-2, and c=1 です。

この関数に対する関数ハンドルを作成します。

a=1;b=-2;c=1;
f=@(x)(a*x.^2+b*x+c);
ezplot(f); % Plot the function
title('f(x)=ax^2+bx+c, a=1,b=-2,c=1');
hold on;

% Find and plot the minimum
minimum=fminbnd(f,-2,2);       % We can pass the function handle directly
                               % to the minimization routine
plot(minimum,f(minimum),'d');  % We can evaluate the function without
                               % using feval
grid;
hold off;

2 次元関数

多変数の関数へのハンドルを作成することが可能です。

a=pi;b=15;
f=@(x,y) (a*x+b*y);
ezsurf(f);
title('f(x,y)=ax+by, a=\pi, b=15');

関数構成

関数の関数ハンドルも作成することができます。

f=@(x) x.^2;
g=@(x) 3*x;
h=@(x) g(f(x));
h(3)
ans =

    27

この情報は役に立ちましたか?