24小时热门版块排行榜    

查看: 482  |  回复: 0

jw19890719

铜虫 (初入文坛)

[求助] 求高手指点关于matlab数值积分问题

数值积分时在quadgk那儿出错,但是一直不知道是为什么,求大家帮忙看一看

主程序:
y0 = [0.001;0.001];%y(1),y(2)初值
tspan=[0 0.005];%时间的范围,单位为s
[t,y] = ode45('gauss_rq',tspan,y0);

matlab程序如下:
function dy = gauss_rq(t,y)
sigma = 7.6e-22;%单位m2
sigma_g = 4.3e-22;
sigma_e = 8.2e-23;
ns0 = 2e23;
tao = 90e-6;%单位s
tao_s = 3.2e-6;
wl = 200e-6;
n1 = 2.19;
n2 = 1.81;
l = 0.005;
ls = 0.001097;
lc=0.085;
wp = 330e-6;
L=0.08;
alpha = 532;%吸收系数,m-1
wg = 308e-6;
ws = 247e-6;

R=0.85;
T0 = 0.91;
Pin = 2.67;
hvp = 2.4585e-019;%808nm泵浦能量
c = 299792458;
tr = (l*n1+ls*n2+(lc-l-ls))/c;
syms r;
n00 = (log(1/(T0^2))+L)*(1+(wg/wp)^2)/(2*sigma*l);
Rin = Pin.*(1-exp(-alpha.*l)).*exp(-2.*r.^2./(wp).^2)./(hvp.*pi.*(wp).^2.*l)
%a=0.01;

xx = exp(sigma.*c.*((wl./wg).^2).*exp(-2.*r.^2./(wg.^2))).*quad(@(t)arrayfun(@(t)exp(y(2)),t),0,t)+t.^2./(2.*tao)
yy = exp(sigma_g.*c.*((wl./ws).^2).*exp(-2.*r.^2/(ws.^2))).*quad(@(t)arrayfun(@(t)exp(y(2)),t),0,t)+t.^2./(2.*tao_s)

n = exp(-sigma.*c.*((wl./wg).^2).*exp(-2.*r.^2./(wg.^2)).*y(2)-t./tao).*(Rin.*xx+n00.*exp(-2.*r^2/(wp^2)))
ns = exp(-sigma_g.*c.*((wl./ws).^2).*exp(-2.*r.^2./(ws.^2)).*y(2)-t/tao_s).*((ns0/tao_s).*yy+ns0)

zz = 2.*sigma.*n.*l.*(wl.^2./(wg.^2)).*exp(-2*r.^2/(wg.^2))-2*sigma_g.*ns.*ls.*(wl.^2/(ws.^2)).*exp(-2*r.^2./(ws.^2))-2*sigma_e.*(ns0-ns).*ls.*(wl.^2./(ws.^2)).*exp(-2.*r.^2./(ws.^2))-log(1./R).*((wl.^2./(ws.^2)).*exp(-2.*r.^2./(ws.^2))-L.*exp(-2.*r.^2./(wl.^2)).*r)
z=quadgk(@(r)zz,0,inf)

dy =[(4*y(1)/(wl^2*tr))*z;
    y(1)];
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 jw19890719 的主题更新
信息提示
请填处理意见