필터 지우기
필터 지우기

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

조회 수: 5 (최근 30일)
kazuma kaneda
kazuma kaneda 2021년 11월 22일
댓글: kazuma kaneda 2021년 11월 24일
以下のような「ωを含む数式-(ωを引数とする関数ハンドル)」のような、数式の内部で関数ハンドルを演算する形が成立するのかどうかが疑問です。
ただし、

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 22일
これは前の質問における自分の疑問点です。この質問の具体的な例を挙げます。
  • 関数ハンドル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
Atsushi Ueno
Atsushi Ueno 2021년 11월 22일
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 2021년 11월 24일
前回に引き続き、今回も回答していただきありがとうございます。計算させることができました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 プログラミング에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!