matlab 积分问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 11:18:27
function y=fpgt(et)
Nh=10;
gamah=10;
gt=0.1;
numda1=(0.5+gt)^2;
numda2=(0.5-gt)^2;
x1=(1+gamah.*numda1)./((0.5+et).^2);
x2=(1+gamah.*numda2)./((0.5-et).^2);
sigma1=(1+2.*gamah.*numda1)./(Nh.*(0.5+et).^4);
sigma2=(1+2.*gamah.*numda2)./(Nh.*(0.5-et).^4);
sigmaT=(sigma1.*sigma2)./(sigma1+sigma2);
x=sigmaT.*(x1./sigma1+x2./sigma2);
Qx=1./(sqrt(2*pi)).*int('exp(-y^2/2)','y',x,inf);
Pe=(Nh.*(0.25-et.^2).*sigmaT.^2)./(pi.*sqrt((1+2.*gamah.*numda1).*(1+2.*gamah.*numda2))).*(exp(-x1^2./(2.*sigma1)-x2^2/(2.*sigma2))+sqrt(2*pi).*sigmaT.*(x1./(2.*sigma1)+x2./(2.*sigma2)).*exp(-(x1-x2)^2./(2.*(sigma1+sigma2))).*(1-Qx));
y=Pe.*et;
当我在命令窗口输入quadl('fpgt',-0.5,0.5); 时 却出错.说是Qx=1./(sqrt(2*pi)).*int('exp(-y^2/2)','y',x,inf)有错误 实在想不明白 各位大侠 帮帮忙
我想问的是 为什么把它写成函数形式时 符号积分 Qx=1./(sqrt(2*pi)).*int('exp(-y^2/2)','y'

倒是有一个解决办法,可以得到积分结果:

clc;clear
syms et
Nh=10;
gamah=10;
gt=0.1;
numda1=(0.5+gt)^2;
numda2=(0.5-gt)^2;
x1=(1+gamah.*numda1)./((0.5+et).^2);
x2=(1+gamah.*numda2)./((0.5-et).^2);
sigma1=(1+2.*gamah.*numda1)./(Nh.*(0.5+et).^4)
sigma2=(1+2.*gamah.*numda2)./(Nh.*(0.5-et).^4)
sigmaT=(sigma1.*sigma2)./(sigma1+sigma2);
x=sigmaT.*(x1./sigma1+x2./sigma2);
Qx=1./(sqrt(2*pi)).*int('exp(-y^2/2)','y',x,inf);
Pe=(Nh.*(0.25-et.^2).*sigmaT.^2)./(pi.*sqrt((1+2.*gamah.*numda1).*(1+2.*gamah.*numda2))).*(exp(-x1^2./(2.*sigma1)-x2^2/(2.*sigma2))+sqrt(2*pi).*sigmaT.*(x1./(2.*sigma1)+x2./(2.*sigma2)).*exp(-(x1-x2)^2./(2.*(sigma1+sigma2))).*(1-Qx));
y=vectorize(Pe.*et)%这一步很关键
quadl(y,-0.5,0.5)

结果:
y =

362262693073125376./56309123843706640625.*(5./2-10.*et.^2)./(1./2+et).^8./(1./2-et).^8./(41./50./(1./2+et).^4+21./50./(1./2-et).^4).^2.*(exp(-18038./861)+4859849995423136721./562