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

2 visualizaciones (últimos 30 días)
kazuma kaneda
kazuma kaneda el 22 de Nov. de 2021
Comentada: kazuma kaneda el 24 de Nov. de 2021
以下のような「ωを含む数式-(ωを引数とする関数ハンドル)」のような、数式の内部で関数ハンドルを演算する形が成立するのかどうかが疑問です。
ただし、

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre プログラミング en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!