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

实际上我想求的是函数exp(y*z^2/2-z^3/3)对z在-1到1上的积分,按照你们给的code还是求不出来,可以再帮我编一个吗

由于无法求得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]修改一下就行了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-06
syms x
y = exp(x^2);
vpa(int(y,x,1,2)) %int的部分因为无法表达出来,所以matlab用erfi这个误差函数来代替。vpa是将这个符号数,转换成有限精度的浮点数。默认字长32。
第2个回答  2011-05-06
X ='exp(x^2)';
int(X,1,2)

如果对你有用,请采纳最佳!!
第3个回答  2015-10-09
可按下面计算:
>> syms x
>> a=int(exp(x^2),1,2)

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

>> vpa(a)

ans =

14.989976019600048615932355867311
第4个回答  2011-05-06
syms x
isym=vpa(int(exp(x^2),x,0,1))

如何用matlab求exp(x^2)在1到2 的积分?
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~=floo...

matlab中使用随机投点法计算定积分exp(x^2),上限1、下限0,以投点个数...
if(exp(x^2)>=y)N=N+1;end end s=(N\/n)*(exp(1)-1)+1 s = 1.4627

用matlab怎么画图,比如y =exp(x^2)?
直接画可以用 ezplot('exp(x^2)'),或者加上定义域的 ezplot('exp(x^2)',[min,max]);也可以使用plot,先给出x的系列点值,再用y =exp(x^2)计算出y值,用plot(x,y)画图

用MATLAB计算0到1\/2的exp(811x^2)定积分 求具体代码
要将结果分数导出就用format rat;quad('exp(811x.^2)',0.0.5)

一道matlab积分题?
第一步:根据函数表达式,用句柄函数或匿名函数,对其分段自定义,即 func1=@(x)exp(x.^2),【0,2】区间 func2=@(x)80.\/(4-sin(16*pi*x)),【2,4】区间 第二步:用数值积分函数quad1,分别计算 I1= quadl(func1,a,b,tol),这里a=0,b=2,tol=1e-10 I2= quadl(func2,a,b...

带积分的二元方程组,未知数在积分中,能用matlab程序求解吗
1、创建求解带积分的二元方程组函数,f =func(x)。其内容:f1=@(t)exp(-(1-x2).*t).\/t; %定义方程 f2=@(t)exp(-x1*t).\/t; %定义方程 S1=integral(f1,1,+inf); %求积分值 S2=integral(f2,1,+inf); %求积分值 f = [x1-S1,x2-(1- S2)];2、用fsolve函数求解。即 s...

求积分∫e^(X^2)dx
这个函数的不定积分不是初等函数来的,我用MATLAB 试了一下 syms x y y=exp(x^2);f=int(y,x)得到 f =-(pi^(1\/2)*i*erf(i*x))\/2 后面的erf就是一个内部函数。

matlab如何进行数值积分运算?
1、使用int函数,函数由integrate缩写而来,int 函数表达式,变量,积分上限,积分下限。2、比如求一个Fx = a*x^2,在区间(m,n)对x进行积分,首先要将 m,x,a,b 这四个变量定义为符号变量 syms m x a b;Fx = a*x^2;int(Fx,x,m,n)3、通过上面这个方法,就能够求得任意一个函数在...

怎么在matlab中使用exp()函数?
1、我们首先需要知道matlab中使用exp(1)表示e,使用exp(x)表示e的x次方。2、打开matlab,在命令行窗口中输入exp(1),可以看到结果为2.7183,e的值大约为2.7183。3、输入exp(10)表示e的10次方。4、输入exp(20)表示e的20次方,x次方需要x数字就可以。5、最后我们可以看一下matlab中exp指数函数的...

如何用MATLAB求解这个积分
x = -1:0.001:1;y = exp(-x.^2);s = trapz(x,y)计算结果: s = 1.4936 3 高精度数值积分(1)为了克服梯形积分法精度低的问题,可以采用高精度积分方式,第一种可以采用 z = quad(Fun,a,b) 该方式是自适应步长Simpson计分法求得函数Fun在区间[a,b]上定积分,如下:clc;clear;...

相似回答