Azzera filtri
Azzera filtri

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

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

Risposta accettata

Atsushi Ueno
Atsushi Ueno il 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 Commenti
Atsushi Ueno
Atsushi Ueno il 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 il 24 Nov 2021
前回に引き続き、今回も回答していただきありがとうございます。計算させることができました。

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su プログラミング in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!