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

2 vues (au cours des 30 derniers jours)
kazuma kaneda
kazuma kaneda le 22 Nov 2021
Commenté : kazuma kaneda le 24 Nov 2021
以下のような「ωを含む数式-(ωを引数とする関数ハンドル)」のような、数式の内部で関数ハンドルを演算する形が成立するのかどうかが疑問です。
ただし、

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur プログラミング dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!