[問題] 使用quad求解積分,遇上下邊界變動造成異常已回收

看板MATLAB作者 (停止抱怨,還可以看到啥?)時間16年前 (2009/11/16 21:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
想請各位一個問題 簡單說明一下,想使用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)
文章代碼(AID): #1B0LUDsC (MATLAB)