1. ホーム
  2. matlab

[解決済み] 匿名関数の微分

2022-02-15 16:57:56

質問

次のような無名関数があります。

f = @(x)x^2+2*x+1

というように使っています。

f(0) = 1

しかし、このような関数の微分を、無名関数の機能を維持したまま求めたい場合はどうすればよいのでしょうか?次のようにやってみたのですが、うまくいきません。

f1 = @(x)diff(f(x))

を返しますが、これは単に

[]

これを実現する方法について、何かご意見があればお聞かせください。

もちろん、手動で3秒でできるのですが、そういう問題ではありません......。

解決方法は?

n要素のベクトルに対してdiffを実行すると、連続した差分を持つn-1要素の別のベクトルが出力されるだけです。

方法としては epsilon で、ニュートンの差分商を使用します。

epsilon = 1e-10;
f = @(x) x^2+2*x+1;
f1 = @(x) (f(x+epsilon) - f(x)) / epsilon;

とか、計算をして式を書くだけです。

f1 = @(x) 2*x+2;

http://en.wikipedia.org/wiki/Numerical_differentiation