如何用matlab求exp(x^2)在1到2 的积分?

实际上我想求的是函数exp(y*z^2/2-z^3/3)对z在-1到1上的积分,按照你们给的code还是求不出来,可以再帮我编一个吗... 实际上我想求的是函数exp(y*z^2/2-z^3/3)对z在-1到1上的积分,按照你们给的code还是求不出来,可以再帮我编一个吗 展开
 我来答
计算天下
推荐于2017-09-12 · TA获得超过1783个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:425万
展开全部
由于无法求得exp(x^2)的原函数,我们只能用数值算法来求解,可以用复化梯形公式、Romberg公式、Gauss公式等,有好多种。我用Matlab编了一个用Gauss公式求解积分的函数。

function S=GaussIntegrate()
%运用Gauss求积公式计算数值积分

%f为被积函数,Rho为权函数,二者均为符号函数
x=sym('x');
f=exp(x^2);
Rho=1;

%a,b分别为求积区间的左界和右界
a=1;
b=2;

%n表示求积结点的个数,是一正整数
n=8;

%本程序利用线性变换将区间[a,b]变换到[-1.1],
%同时令g=f*Rho为被积函数,然后利用
%古典的Gauss求积公式进行计算,此时直交多项式即为Legendre多项式

if n<=0||n~=floor(n)
error('错误,n必须是一个非负整数!');
end;

if a>b
error('错误,区间的左界a一定不大于右界b!');
end;

%计算n次Legendre多项式
syms x;
P=1/(2^n*factorial(n))*diff((x^2-1)^n,n);
w=roots(sym2poly(P));

%计算数值积分
A=zeros(1,n);
S=0;
for k=1:n
A(k)=2/((1-w(k)^2)*(subs(diff(P),w(k))^2));

t=a+(b-a)/2*(w(k)+1);
g=(b-a)/2*subs(f*Rho,t);
S=S+A(k)*g;
end;

--------------------------------
我取了8个结点,计算精度就已经达到了小数点后8位,效率还是很高的。
注意:由于Matlab调用Maple的符号计算工具箱,第一次运行时会加载一小会,耐心等待。
以后再运行速度就很快了。
追问
实际上我想求的是函数exp(y*z^2/2-z^3/3)对z在-1到1上的积分,能用你给的code再帮我编一次吗,谢了
追答
exp(y*z^2/2-z^3/3),y等于多少啊?这个你直接把f和积分区间[a,b]修改一下就行了。
我要那个妾
2011-05-06 · TA获得超过2157个赞
知道小有建树答主
回答量:927
采纳率:50%
帮助的人:231万
展开全部
syms x
y = exp(x^2);
vpa(int(y,x,1,2)) %int的部分因为无法表达出来,所以matlab用erfi这个误差函数来代替。vpa是将这个符号数,转换成有限精度的浮点数。默认字长32。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
行者张强
2011-05-06 · TA获得超过114个赞
知道答主
回答量:50
采纳率:0%
帮助的人:54.8万
展开全部
X ='exp(x^2)';
int(X,1,2)

如果对你有用,请采纳最佳!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我行我素850915
2015-10-09 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1752万
展开全部
可按下面计算:
>> syms x
>> a=int(exp(x^2),1,2)

a =
-(pi^(1/2)*(erfi(1) - erfi(2)))/2

>> vpa(a)

ans =

14.989976019600048615932355867311
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鲁凌菁
2011-05-06
知道答主
回答量:18
采纳率:0%
帮助的人:2.5万
展开全部
syms x
isym=vpa(int(exp(x^2),x,0,1))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式