用matlab怎么编程求pi啊 ?

来自:笑说    更新日期:早些时候
求用MATLAB编写求pi的m文件 急需~

一、复化梯形法
clear;
f=inline('4./(1+x.*x)');
a=0;b=1;n=1;
h=(b-a)/n;
t1=h/2*(f(a)+f(b));
er=1;k=1;
while er>1.0e-5;
s=0;
for i=1:n
s=s+f(a+(i-1/2)*h);
end
t2=(t1+h*s)/2;
er=abs(t2-t1);
fprintf('n=%.0f,p=%.6f,r=%.6f
',k,t2,er);
n=2*n;h=h/2;t1=t2;
k=k+1;
end
二、Ramanujan公式法
clear;
n=0;
r=0;
while n<=5;
r=r+(factorial(4*n)/(factorial(n))^4)*(1103+26390*n)/396^(4*n);
pi_zhi=9801/(2*sqrt(2)*r);
vpa(pi_zhi,60)
n=n+1
end
三、泰勒级数法
clear;
n=0;
r=1;
p=0;
k=-1;
a=1;
b=1;
while r>=1.0e-9
n=n+1;
k=k*(-1);
a=4*a;b=9*b;
pl=p+k/(2*n-1)*(2/a+3/b);
r=abs(4*(pl-p));
fprintf('n=%.0f,p=%.10f
',n,4*pl);
p=pl;
end
。。。

fun=@(x,y)y.*log10(y)-x创建关于x,y的匿名函数
log10(x)由于Matlab中自然对数的符号是log(与我们数学上的不同),以10为底的对数符号是log10,同理有log2,但是没有log3等哦
vpa将得到的符号解转化为指定精度的小数,比如vpa('sqrt(2)',10)将sqrt(2)表示10位精度的小数
fzero是Matlab求解一元函数零点的内置函数
fsolve是Matlab中求解方程组解(可以求解复数)的内置函数,功能强于fzero
fval是返回fun(x)的值,也就是说fzero和fsolve返回方程的解x,那么此时的fun(x)就是fval

这个方法比较多 可以数值也可以解析求解

1.解析求解

>> solve('y*log10(y)=3','y')

ans =

3*log(10)/lambertw(3*log(10))


>> vpa(ans)

ans =

4.5555357051951280236911974082484

2.数值解法这个可以使用fsolve和fzero,前者的功能更加强大,但是对于这个问题fzero就可以了

>>x=3;
>>fun=@(y)y*log10(y)-x;
%使用fsolve
>> [x,fval]=fsolve(fun,rand)
Optimization terminated: first-order optimality is less than options.TolFun.

x =

4.5555


fval =

3.9620e-008

%使用fzero
>> [x,fval]=fzero(fun,5)

x =

4.5555


fval =

-8.8818e-016

你啥教育水平?如果学过高等数学的话,有若干种方法求Pi的。还记得那个欧拉证明的pi的公式嘛?就是pi^2/6=1+1/2^2+1/3^2+......
就用一个for循环就遍出来了,你循环里面的n越大,pi的值就越精确。不过不要把n改太大了,免得死机。

程序是:
n=1000;
sigma=zeros(1,n);
for i=1:n
sigma(i+1)=sigma(i)+(1/(i^2));
end
pi=max(sqrt(6*sigma));%最后pi的值就是π啦

你可以看到随着n增加,pi的值增加的过程。
不过貌似要用到vpa命令修改小数点的位数,你自己改改吧

不用编,内置的就有这个常量;名称就是

pi

下面是源代码:

function [varargout] = pi(varargin)
%PI 3.1415926535897....
% PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897....

% Copyright 1984-2003 The MathWorks, Inc.
% $Revision: 5.7.4.2 $ $Date: 2004/04/16 22:05:16 $
% Built-in function.

if nargout == 0
builtin('pi', varargin{:});
else
[varargout{1:nargout}] = builtin('pi', varargin{:});
end


用matlab怎么编程求pi啊 ?视频

相关评论:
  • 17132884344matlab是如何求π的?
    鄂策袁1、头文件math.h中宏定义的是M_PI define M_PI 3.14159265358979323846 2、这是一个在库文件头文件math.h中的定义的宏,实际上就是圆周率π的一个近似值,约等于3.1415 下面是一个求三角函数sin(a)值的一个程序,这里就用到了M_PI这个宏。由于这里的a要求是弧度,所以对于输入的角的度数做了相...

  • 17132884344在MATLAB中,π用什么表示?
    鄂策袁1、首先需要知道在matlab中π使用pi表示,在命令行窗口中输入“help pi”,可以看到介绍。2、如果我们想求一个半径为4的圆,可以输入 4*4*pi。3、按回车键之后,可以看到圆面积为50.2655。4、如果想表示π的n次方,可以输入pi^4形式,这里表示π的4次方。5、最后键盘上按回车键之后,可以看到π的...

  • 17132884344在matlab中画图怎么输希腊字母pi
    鄂策袁直接使用 '\\pi' 即可,参考例子:>> x=0:0.1*pi:2*pi;>> plot(x,sin(x))>> xlabel('\\pi-\\alpha-\\beta')

  • 17132884344matlab怎么输入兀
    鄂策袁"pi"表示。根据CSDN博客查询显示,使用MATLAB中的"pi"常数在MATLAB编程语言中,"pi"是一个常数,代表圆周率。圆周率是一个无理数,约等于3.14159,通常表示为兀。在数学和科学计算中圆周率是一个重要的数值常量,用于各种圆形和三角函数的计算。MATLAB提供了内置的常数"pi”,使得在计算中使用圆周率变得...

  • 17132884344用matlab 求pi
    鄂策袁l=10;N=1000000;x=rand(1,N)*l-l\/2;y=rand(1,N)*l-l\/2;InCircle=(sqrt(x.^2+y.^2)<=l\/2);pai=4*sum(InCircle)\/N

  • 17132884344用matlab怎么编程求pi啊 ?
    鄂策袁就用一个for循环就遍出来了,你循环里面的n越大,pi的值就越精确。不过不要把n改太大了,免得死机。程序是:n=1000;sigma=zeros(1,n);for i=1:n sigma(i+1)=sigma(i)+(1\/(i^2));end pi=max(sqrt(6*sigma));%最后pi的值就是π啦 你可以看到随着n增加,pi的值增加的过程。不过...

  • 17132884344matlabπ怎么输入
    鄂策袁在MATLAB中,π的输入方法是直接使用内置常量`pi`。这个常量存储了π的精确值,可以在需要的地方直接调用。MATLAB中的常量`pi`MATLAB是一种用于数值计算的高级编程语言和交互式环境。它内置了许多数学常量,其中就包括圆周率π。在MATLAB中,你不需要手动输入π的值,因为系统已经为你定义好了...

  • 17132884344matlab pi是什么意思?
    鄂策袁在Matlab中,Pi是一个预定义的常数,并且可以使用其进行数学计算。具体来说,在Matlab输入pi,就可以得到Pi的数值近似值:141592653589793。在工程和科研领域,Pi的准确性和精度非常重要。使用Matlab可以轻松快捷地进行圆形计算,确保准确性和精度。除了数学计算,Pi在计算机科学领域也有广泛的应用。例如,在...

  • 17132884344matlab用普丰投针法求π值的代码
    鄂策袁x(i)<l*sin(alpha(i))\/2 % 只要x小于l*sin(alpha(i))\/2,则相交 m=m+1;endendp=m\/n;% 计算相交的频率,即相交次数比总次数Vpi=2*l\/(d*p)% 从相交的频率总求的Value pi,即pi的值引用自:http:\/\/wenku.baidu.com\/view\/41ffe41da417866fb94a8e3e.html?from=search ...

  • 17132884344matlab 怎样输入pi
    鄂策袁pi是一个MATLAB定义的常数,直接输入“pi”即可(小写)类似的常数还有 inf,无穷大 NaN,非有效数,可能为溢出的数据,如除以0,就会显示NaN

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网