定积分求积实验具体步骤
试验目的:
学会用MATLAB的各种方法求定积分,比如梯形法,辛普森求积公式(抛物线公式),蒙特卡罗方法,平均值法,能够熟练的运用它们求解各种有关的积分问题。
试验理论:
梯形法和辛普森公式法:
用矩形面积在小区间上近似曲边梯形的面积于是在整个区间(a,b)构成台阶形,容易知道两个台阶的面积,将两者平均,则每个小区间上的小矩形变为小梯形,整个区间上的结果即为梯形求积。为提高精度可用分段二次插值函数作为f(x)的近似,由于每段要用到相邻两个小区间端点的三个函数值,所以小区间的数目必须是偶数,在第k段的两个小区间上用三个节点做二次插值,然后积分,求m段之和即为所求积分。
蒙特卡罗法:
(1)随机投点法(2)均值估计法 都是根据当试验的次数非常多的时候其频率就接近概率的方法来求
试验内容:
一正方形里有四分之一单位圆,如果向边长为1的正方形里随机投n块小石头,当n很大时小石头会均匀的分布在正方形中,数一下落在四分之一圆里的小石头,假定有k个,那么k/n就能看作是四分之一单位圆面积pi/4 的近似值,于是有pi=4*k/n显然这可以看做近似计算pi的一种方法。
试验要求:用四种方法求出上述的问题。
方法一:梯形法
程序如下:
function s=ozftixing(f,a,b,M)
h=(b-a)/M;
s=0;
for k=1:(M-1)
x=a+h*k;
s=s+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b))/2+h*s
pi=4*s
其中的调用函数为function y=tixing(x)
y=sqrt(1-x^2);
也可以直接利用梯形公式的命令直接求出pi
方法如下:
function tixingfa
x=0:1/1000000:1;
y=4*sqrt(1-x.^2);
trapz(x,y)
得出结果:
Ans=3.1416
方法二:辛普森公式|(抛物线法)
function y=xinpusen(f,a,b,M)
a=0;b=1;M=10000;
h=(b-a)/(2*M);
s1=0;
s2=0;
for k=1:M
x=a+h*(2*k-1);
s1=s1+feval(f,x);
end
for k=1:(M-1)
x=a+h*2*k;
s2=s2+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;
pi=4*s
其中的调用函数为function y=xinpu(x)
y=sqrt(1-x^2);
故可以xinpusen('xinpu',0,1,100000)这样求出pi
也可以直接利用其函数的命令来求出pi
方法如下:
function paowuxianfa
quad('sqrt(1-x.^2)*4',0,1)
得出结果:
Ans=3.1416
方法三:随机投点法
function suiji
n=0;
for i=1:10^6
x=rand;
y=rand;
if x^2+y^2<=1
n=n+1;
end
end
pi=4*n/10^6
得到结果
pi = 3.1423
方法四:平均值法
function suijitoudianwenti
x=rand(1,1000000);
y=4*sqrt(1-x.^2);
q=sum(y)/1000000;
vpa(q,8)
得出结果:
ans =3.1415006 (注:结果不唯一,波动范围非常小)
试验心得:通过这次的试验,我们学习了matlab解决定积分的四种方法,其中有用到的方法有梯形法,辛普森公式(抛物线法),随机投点法,平均值法,各种方法当分的很小的时候,计算的都比较准确,我个人觉的蒙特卡罗的理论应用更广泛,今后希望能有更多的机会接触蒙特卡罗的学习。