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

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

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

関数を引数とする関数

この例では、MATLAB の 1 つの関数の出力を別の関数への入力として使用する方法を示します。ある関数の出力を別の関数への入力として指定する機能は、さまざまな目的に利用できます。ここでは、零点の検出と、最適化、積分に対する使用について説明します。

関数 HUMPS

MATLAB 関数は、キーワード関数から始まるファイルです。関数 HUMPS もこのような形になっています。

type humps
function [out1,out2] = humps(x)
%HUMPS  A function used by QUADDEMO, ZERODEMO and FPLOTDEMO.
%   Y = HUMPS(X) is a function with strong maxima near x = .3 
%   and x = .9.  
%
%   [X,Y] = HUMPS(X) also returns X.  With no input arguments,
%   HUMPS uses X = 0:.05:1.
%
%   Example:
%      plot(humps)
%
%   See QUADDEMO, ZERODEMO and FPLOTDEMO.

%   Copyright 1984-2002 The MathWorks, Inc. 
%   $Revision: 1.1.8.13.2.2 $  $Date: 2014/02/05 21:22:25 $

if nargin==0, x = 0:.05:1; end

y = 1 ./ ((x-.3).^2 + .01) + 1 ./ ((x-.9).^2 + .04) - 6;

if nargout==2, 
  out1 = x; out2 = y; 
else 
  out1 = y;
end

HUMPS のプロット

次の図は、FPLOT を使った [0,2] の領域の HUMPS のプロットを示します。

fplot(@humps,[0,2]);

HUMPS の零点

関数 FZERO は、初期推定に近い関数の零点を求めます。HUMPS の零点の初期推定は 1 です。

z = fzero(@humps,1,optimset('Display','off'));
fplot(@humps,[0,2]);
hold on;
plot(z,0,'r*');
hold off

HUMPS の最小値

関数 FMINBND は、与えられた領域内で関数の最小値を求めます。ここでは、領域 (0.25, 1) 内で HUMPS に対する最小値を探索します。

m = fminbnd(@humps,0.25,1,optimset('Display','off'));
fplot(@humps,[0 2]);
hold on;
plot(m,humps(m),'r*');
hold off

HUMPS の積分

関数 INTERGRAL は、与えられた領域内で HUMPS の定積分を求めます。ここでは、領域 [0.5, 1] 内のエリアで計算されます。

q = integral(@humps,0.5,1);
fplot(@humps,[0,2]);
title(['Area = ',num2str(q)]);

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