【发布时间】:2015-08-19 20:46:34
【问题描述】:
我想对具有无限限制的积分进行数值积分。有谁知道我该怎么做?
int(x* exp (v*x + (1-exp(v*x))/v),x, o , inf) 不起作用。
请注意,我将拥有 v 的值。
%n=10;
kappa=.5;
delta0=.5;
Vmax=500;
Vdep=2.2;
l=2.2;
kbT=4.1;
%xb=.4;
fb=10;
k=1;
V0=5;
e1=(fb*l/kbT)*(kappa/delta0);
e2=Vmax/V0;
e3=Vdep/V0;
w=zeros(1,25);
for v=1:25
w(:,v)=integral(@(x) x.*exp(v*x+((1-exp(v*x))/v)),0,inf);
end
e12=e2*exp(-e1*(1:25).*w.^2)-e3;
plot(e12);
ylim([0 25]);
hold on;
plot(0:25,0:25);
xlim([0 25]);
%hold off;
图与文中真实数据不符!(专门针对e12曲线) 我需要计算两条曲线的交点(根据论文约为 13.8),然后在第二部分中,我必须在 e12 中添加一个包含自变量的项:
v=13.8;
w= integral(@(x) x.*exp(v*x+((1-exp(v*x))/v)),0,inf)
e4 = zeros (1,180);
fl = 1:180;
e4(:,fl)= (fl*l/kbT)*(kappa/n);
e12=e2*exp(-e1*v*w^2-e4)-e3
但问题又是,运行此代码时,我将以 e12 的负值结束,在 fl (fl>160) 的大值中应该接近零
要显示此代码与预期曲线有何不同,您可以将这些数据绘制在同一图上:
fl = [0, 1, 4, 9, 15, 20, 25, 40, 60, 80, 100, 120, 140, 160, 180];
e12 = [66, 60, 50, 40, 30, 25.5, 20, 15.5, 10.5, 8.3, 6.6, 5, 2.25, 1.1, 0.5];
这显然与代码生成的曲线不符。
【问题讨论】:
-
“不起作用”没有帮助。如果有错误,请完整提供。如果输出与您的期望不符,请说明它是什么,为什么您认为它是错误的。编辑您的问题。还提供完全可运行的代码,包括所有变量声明。
-
另外,你的积分下界真的应该是一个名为
o(字母)而不是数字0(数字)的变量吗? -
v的取值范围是多少?它们是真实的还是复杂的? -
您好,感谢您的帮助! 1.不工作我的意思是它会出错!我不记得错误是什么,但现在我已经更改了代码,它现在可以成功运行,但结果与我预期的有所不同。 (我将在下一条评论中提供代码) 2.. 较低的集成 ix 0 ,当我在这里输入时这是一个错字! 3. v的值是0到25之间的实整数。
标签: matlab integration infinite numerical