[問題] 使用quad求解積分,遇上下邊界變動造成異常已回收
想請各位一個問題
簡單說明一下,想使用Matlab來繪圖。
polt(w,v(Us,w))
其中 v(Us,w)=∫IV(Us,w)dUs 本欲從-∞到∞,
但遇到問題所以先更動變成常數。
發現本基分邊界到±300後,遇到以下問題(是求不出積分嗎?)
Warning: Infinite or Not-a-Number function value encountered.
但±300內卻是正常(發散?)
以下是我編寫,是否請各位先進幫我看看哪裡出錯或是該如何修改
或只是函數問題?事實上我有用比較簡單的函數像是Gaussian來跑跑看都正常
%%%%%%%%%
function y = IV(Us, w)
%Vth,Sn,ni,q,Dit,Um,s皆是以定義常數值%
Tn=(Vth*Sn*ni).^-1*exp(-Us-Um);
C=(q*Dit)./(2*w*Tn).*log(1+(w*Tn).^2);
P=(2*pi*s.^2).^-0.5*exp(-(Us-Um).^2./(2*s.^2));
y=C.*P;
%%%%%%%%%%
%%%%%%%%%%
%程式執行%
w = 1e2:1e2:1e6;
v = zeros(size(w));
UpperLimit = 300;
LowerLimit = -300;
for k = 1:length(w)
v(k) = quad(@(Us)IV(Us,w(k)), LowerLimit, UpperLimit);
end
semilogx(w, v, 'g')
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.165.193
※ 編輯: zhenshuo 來自: 140.113.165.193 (11/16 21:47)
※ 編輯: zhenshuo 來自: 140.113.165.193 (11/16 21:49)