matlab求pi值的三种方法
1、无穷级数展开式
原理:pi=1-1/3+1/5-…+(-1)^(n+1)*1/(2*n-1)+…
y=0;
g=-1;
n=input('n=?');
for i=1:n
g=-g;
y=y+g/(2*i-1);
end
pai=4*y
1.1简化:matlab擅长矩阵运算,用向量求和的方法实现:
n=input('n=?');
x=1:2:(2*n-1);
y=(-1).^(2:n+1)./x;
pai=sum(y)*4
2、定积分
原理:在[0,1]上对 进行积分得到1/4圆的面积
a=0;
b=1;
n=input('n=?');
h=(b-a)/n;
x=a:h:b;
f=sqrt(1-x.*x);
s=[ ];
for k=1:n
s1=(f(k)+f(k+1))*h/2;
s=[s,s1];
end
pai=4*sum(s)
3、蒙特卡洛法
原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。
http://www.ruanyifeng.com/blog/2015/07/monte-carlo-method.html
s=0;
n=input('n=?');
for i=1:n
x=rand(1);
y=rand(1);
if x*x+y*y<=1
s=s+1;
end
end
pai=s/n*4
蒙特卡洛法补充:
计算函数 y = x^2 在 [0, 1] 区间的积分
countn=0;
n=input('n=?');
for i=1:n
x=rand(1);
y=rand(1);
if y<=x^2
countn=countn+1;
end
end
countn/n*1