Filter löschen
Filter löschen

数式内での関数ハンドルの処理について

5 Ansichten (letzte 30 Tage)
kazuma kaneda
kazuma kaneda am 22 Nov. 2021
Kommentiert: kazuma kaneda am 24 Nov. 2021
以下のような「ωを含む数式-(ωを引数とする関数ハンドル)」のような、数式の内部で関数ハンドルを演算する形が成立するのかどうかが疑問です。
ただし、

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 22 Nov. 2021
これは前の質問における自分の疑問点です。この質問の具体的な例を挙げます。
  • 関数ハンドルa=引数xを持つ無名関数とし
  • 関数ハンドルb=引数xを持つ無名関数と関数ハンドルaの足し算
  • ⇒ここで同じ引数を持つ2つの無名関数の和を得たい
で、色々やっている内に自己解決しました。
a = @(x) (x^2);
b = @(x) (x^3 + a); % 例えばb(2) = x^3+x^2 = 12 を得たい
% b(2) % これはダメ
% b = @(x) (x^3 + func2str(a)); % これでもダメ
b = @(x) (x^3 + feval(a,x)); % できた
b(2)
ans = 12
  2 Kommentare
Atsushi Ueno
Atsushi Ueno am 22 Nov. 2021
JとKに分割する際に、feval(J,w)とする事によって、無名関数中に入れた無名関数ハンドルをωについて評価した結果を演算してくれます。
A=1;m=1;s=1;wA=1;const=10^-10; %定数を決定
%2の計算 まず、eで積分 (⇒@(w)を先頭に移動した)
J=@(w)ffun(@(e)A.*exp(-(e-m).^2./(2*pi.*s.^2))./(w-e),-inf,w-const,w+const,inf)-1i*pi*A.*exp(-(w-m).^2./(2*pi.*s.^2));
%1の計算 次に、wで積分 (⇒Jをfeval(J,w)に変更した)
K=@(t)gfun(@(w)exp(-1i*w.*t)./(w-wA-feval(J,w)),-inf,inf);
function f=ffun(fun,a,b,c,d)
f=integral(fun,a,b)+integral(fun,c,d);
end
function g=gfun(fun,a,b)
g=integral(fun,a,b);
end
kazuma kaneda
kazuma kaneda am 24 Nov. 2021
前回に引き続き、今回も回答していただきありがとうございます。計算させることができました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu プログラミング finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!