Matlab计算圆周率
- 格式:ppt
- 大小:718.50 KB
- 文档页数:30
Lagrange 插值多项式积分求圆周率近似摘要:公式1:y1=4/(1+x^2) 公式2:y2=4*sqrt(1-x^2) 分别对公式1、公式2求其拉格朗日插值多项式,再对其求0-1上的定积分来求圆周率π的近似值,并在Matlab 中通过画图来比较两个所求得的值与真实值π的偏差。
Lagrange 插值多项式:)()(l )(L 0i n i ni x f x x ∑==其中 )())(())(()())(())(()(l 11101110i n i i i i i i i n i i x x x x x x x x x x x x x x x x x x x x x -⋯⋯--⋯⋯---⋯⋯--⋯⋯--=+-+-)(i x f 为函数在i x 处的函数值,)(x L n 为Lagrange 插值多项式。
Matlab 实现:clc;clear;a=0;b=1;n=input('Enter a number n:'); %将0-1分割成n 节点,即n-1段 X=zeros(1,n); %用来放置节点x 的值P=zeros(1,n); %用来放置节点x 对应的函数值y1 Q=zeros(1,n); %用来放置节点x 对应的函数值y2 x=0;h=(b-a)/(n-1); %h 为步长for i=1:ny1=4/(1+x^2);y2=4*sqrt(1-x^2);X(i)=x;P(i)=y1;Q(i)=y2;x=x+h;endX;P;Q; %通过循环对X、P、Q进行赋值syms s;l=1;z1=0;z2=0;for j=1:1for k=2:nl=l*(s-X(k))/(X(j)-X(k));endz1=z1+l*P(j);z2=z2+l*Q(j);endfor j=2:nl=1;for k=1:j-1l=l*(s-X(k))/(X(j)-X(k));endfor k=j+1:nl=l*(s-X(k))/(X(j)-X(k));endz1=z1+l*P(j); %通过循环求的函数y1的Lagrange插值多项式z1 z2=z2+l*Q(j); %通过循环求的函数y2的Lagrange插值多项式z2 endI1=int(z1,s,0,1); % z1对s在0-1上求定积分I1=eval(I1) %用小数形式表示I1I2=int(z2,s,0,1); % z2对s在0-1上求定积分I2=eval(I2) %用小数形式表示I2x=3.10:0.0001:3.20;y0=pi;y1=I1;y2=I2;plot(x,y0,'r') %红线为圆周率π的真实值hold onplot(x,y1,'g') %绿线为公式1所求值hold onplot(x,y2,'b') %蓝线为公式2所求值运行结果:从图中可以看出,当n=6时绿线很接近红线即圆周率π的真实值,而蓝线则偏离较远,当n=11时,绿线基本与红线重叠,而蓝线相对之前来说也减小偏差。
自己动手计算圆周率圆周率的计算历程圆周率是一个极其著名的数。
从有文字记载的历史开始,这个数就引进了外行人和学者们的兴趣。
作为一个非常重要的常数,圆周率最早是出于解决有关圆的计算问题。
仅凭这一点,求出它的尽量准确的近似值,就是一个极其迫切的问题了。
事实也是如此,几千年来作为数学家们的奋斗目标,古今中外一代又一代的数学家为此献出了自己的智慧和劳动。
回忆历史,人类对π 的认识过程,反映了数学和计算技术开展情形的一个侧面。
π 的研究,在一定程度上反映这个地区或时代的数学水平。
德国数学史家康托说:“历史上一个国家所算得的圆周率的准确程度,可以作为衡量这个国家当时数学开展水平的指标。
〞直到19世纪初,求圆周率的值应该说是数学中的头号难题。
为求得圆周率的值,人类走过了漫长而曲折的道路,它的历史是饶有趣味的。
我们可以将这一计算历程分为几个阶段。
〔1〕实验时期通过实验对π 值进行估算,这是计算π 的的第一阶段。
这种对π 值的估算根本上都是以观察或实验为根据,是基于对一个圆的周长和直径的实际测量而得出的。
在古代世界,实际上长期使用π =3这个数值。
在我国刘徽之前“圆径一而周三〞曾广泛流传。
我国第一部《周髀算经》中,就记载有圆“周三径一〞这一结论。
在我国,木工师傅有两句从古流传下来的口诀:叫做:“周三径一,方五斜七〞,意思是说,直径为1的圆,周长大约是3,边长为5的正方形,对角线之长约为7。
这正反映了早期人们对圆周率π 和√2 这两个无理数的粗略估计。
东汉时期官方还明文规定圆周率取3为计算面积的标准。
后人称之为“古率〞。
在我国东、西汉之交,新朝王莽令刘歆制造量的容器――律嘉量斛。
刘歆在制造标准容器的过程中就需要用到圆周率的值。
为此,他大约也是通过做实验,得到一些关于圆周率的并不划一的近似值。
现在根据铭文推算,其计算值分别取为3.1547,3.1992,3.1498,3.2031比径一周三的古率已有所进步。
人类的这种探索的结果,当主要估计园田面积时,对生产没有太大影响,但以此来制造器皿或其它计算就不适宜了。
MATLAB 常用函数总结Matlab 的内部常数pi 圆周率exp(1)自然对数的底数ei 或j虚数单位Inf 或 inf无穷大Matlab 的常用内部数学函数指数函数exp(x)以e 为底数log(x)自然对数,即以e 为底数的对数log10(x)常用对数,即以10为底数的对数对数函数log2(x)以2为底数的x 的对数开方函数sqrt(x)表示x 的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数三角函数(自变量的单位为弧度)csc(x)余割函数反三角函数asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数双曲函数csch(x)双曲余割函数asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数反双曲函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为(,]gcd(a,b)两个整数的最大公约数数论函数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘real(z)实部函数imag(z)虚部函数复数函数abs(z)求复数z的模angle(z)求复数z 的辐角,其范围是( ,]conj(z)求复数z 的共轭复数ceil(x)表示大于或等于实数x 的最小整数floor(x)表示小于或等于实数x 的最大整数求整函数与截尾函数round(x)最接近x 的整数max([a ,b ,c ,...])求最大数最大、最小函数min([a ,b ,c ,..])求最小数符号函数sign(x)Matlab 中的数学运算符a+b 加法 a./b 数组右除a-b 减法 a.\b 数组左除a*b 矩阵乘法a^b 矩阵乘方a.*b 数组乘法 a.^b 数组乘方a/b 矩阵右除-a负号a\b矩阵左除' 共轭转置.'一般转置Matlab 的关系运算符 ==等于<小于>大于<=小于或等于>=大于或等于~=不等于如何用matlab求阶乘factorial(n) 求n的阶乘如何用matlab进行多项式运算(1)合并同类项 syms 表达式中包含的变量 collect(表达式,指定的变量)(2)因式分解 syms 表达式中包含的变量 factor(表达式)(3)展开syms 表达式中包含的变量 expand(表达式)(4)化简syms 表达式中包含的变量simplify(表达式) 如何用matlab进行复数运算 a+b*i 或 a +b*j表示复数a+bi 或 a+bjreal(z)求复数z的实部imag(z)求复数z的虚部abs(z)求复数z的模angle(z)求复数z的辐角,conj(z)求复数z的共轭复数exp(z)复数的指数函数,表示e^z如何用Matlab求集合的交集、并集、差集和补集 union(A,B)求集合A和B的并集intersect(A,B)求集合A和B的交集setdiff(A,B)求集合A和B的差集A-Bsetdiff(U,A)求集合A关于全集U的补集如何用matlab排序sort(v) 将向量v的元素从小到大排列(升序排列)sort(v,dim,’descend or ascend’)当dim=1时矩阵按列排序,descend or ascend用来控制升序还是降序当dim=2时矩阵按行排序,descend or ascend用来控制升序还是降序如何用Matlab求极限(1)极限:syms xlimit(f(x), x, a)求f(x)关于x趋于a时的极限(2)单侧极限:左极限:syms x limit(f(x), x, a,’left’)求f(x)关于x趋于a时的左极限右极限:syms x limit(f(x), x, a,’right’)求f(x)关于x趋于a时的右极限如何用Matlab求导数diff('f(x)') diff('f(x)','x') 求f(x)关于x的导数或者:syms x diff(f(x))syms x diff(f(x), x)如何用Matlab求高阶导数如何用Matlab求高阶导数diff('f(x)',n) diff('f(x)','x',n)求f(x)关于x的n阶导数syms x diff(f(x),n)syms x diff(f(x), x,n)如何用Matlab求不定积分int('f(x)') int ('f(x)','x')求f(x)关于x的积分syms x int(f(x))syms x int(f(x), x)如何用Matlab求定积分、广义积分int('f(x)',a,b) int ('f(x)','x',a,b)求f(x)关于x的积分,区间为a到b syms x int(f(x),a,b)syms x int(f(x), x,a,b)如何用Matlab展开级数syms x taylor(f(x), x, n,)a如何在Matlab中进行积分变换syms s tlaplace( f(t), t, s ) 拉普拉斯变换ilaplace( F(s), s, t ) 拉普拉斯变换的逆变换 syms t ωfourier( f(t), t, ω)傅立叶变换ifourier( F(ω), ω, t ) 傅立叶变换的逆变换 syms n zztrans( f(n), n, z) Z变换iztrans( F(z), z, n ) Z变换的逆变换 如何用Matlab解微分方程dsolve('微分方程','自变量')dsolve('微分方程','初始条件或边界条件','自变量') dsolve('D2x+2*x+x=sin(t)','x(0)=1','Dx(0)=1','t')如何用matlab求多变量函数的极限 以两个变量为例说明,多于两个变量的函数极限可以依次类推。
实验三 圆周率的计算学号: 姓名:XX一、 实验目的1. 本实验涉及概率论、定积分、三角函数等有关知识,要求掌握计算π的三种方法及其原理。
2. 学习和掌握数学软件MATLAB 的使用方法。
二、 实验内容圆周率是一个极其驰名的数。
从有文字记载的历史开始,这个数就引起了外行人和学者们的兴趣。
作为一个非常重要的常数,圆周率最早是出于解决有关圆的计算问题。
仅凭这一点,求出它的尽量准确的近似值,就是一个极其迫切的问题了。
事实也是如此,几千年来作为数学家们的奋斗目标,古今中外一代又一代数学家为此献出了自己的智慧和劳动。
回顾历史,人们对π的认识过程,反映了数学和计算技术发展情形的一个侧面。
π的研究,在一定程度上反映这个地区或时代的数学水平。
德国数学家康托说:“历史上一个国家所算的圆周率的准确程度,可以作为衡量这个国家当时数学发展水平的指标。
”直到19世纪初,求圆周率的值还是数学中的头号难题。
1. 圆周率的计算方法古人计算圆周率,一般是用割圆法。
即用圆的内接或外切多边形来逼近圆的周长。
Archomedes 用正96边形得到35位精度;刘徽用正3072边形得到5位精度;Ludolph V an Ceulen 用正2^62边形得到了35位精度。
这种基于几何的算法计算量大,速度慢,吃力不讨好。
随着数学的发展,数学家们在进行数学研究时有意无意得发现了许多计算圆周率的公式。
下面挑选一些经典的常用公式加以介绍。
除了这些经典公式外,还有很多其他公式和由这些经典公式衍生出来的公式,就不一一列举了。
1) Machin 公式2391a r c t a n451a r c t a n 16-=π ()121...753arctan 121753--++-+-=--n x x x x x x n n 这个公式由英国天文学教授John Machin 于1706年发现。
他利用这个公式计算到100位的圆周率。
Machin 公式每计算一项可以得到1.4位的十进制精度。
实验九π的近似计算【实验目的】1.了解圆周率π的计算历程。
2.了解计算π的割圆术、韦达公式、级数法、拉马努金公式、迭代法。
3.学习、掌握MATLAB软件有关的命令。
【实验内容】利用韦达(VieTa)公式2=π计算π的近似值。
【实验准备】1.割圆术2.韦达(VieTa)公式3.利用级数计算π4.拉马努金(Ranmaunujan)公式5.迭代方法6.π的两百位近似值【实验重点】1. 圆周率的计算历程【实验难点】1. 圆周率的各种计算公式【实验方法与步骤】练习1 用刘徽的迭代公式1162062626224,32,1n n n n x x s x x ++=--== 计算π的近似值。
相应的MATLAB 代码为>>clear;>>x=1;>>for i=1:30>>x=vpa (sqrt(2-sqrt(4-x^2)),15)%计算精度为15位有效数字 >>S=vpa(3*2^i*x,10)>>end计算可得x = .517638********* S = 3.105828541x = .261052384440103 S = 3.132628613x = .130806258460286 S = 3.139350203x = .654381656435522e-1 S = 3.141031951x = .327234632529735e-1 S = 3.141452472x = .163622792078742e-1 S = 3.141557608x = .818120805246955e-2 S = 3.141583892x = .409061258232818e-2 S = 3.141590463x = .204530736067660e-2 S = 3.141592106x = .102265381402739e-2 S = 3.141592517x = .511326923724832e-3 S = 3.141592619x = .255663463951308e-3 S = 3.141592645x = .127831732236766e-3 S = 3.141592651 x = .639158661510219e-4 S = 3.141592653 x = .319579330795908e-4 S = 3.141592653 x = .159789665403054e-4 S = 3.141592654 x = .798948327021645e-5 S = 3.141592654 x = .399474163511619e-5 S = 3.141592654 x = .199737081755909e-5 S = 3.141592654 x = .998685408779670e-6 S = 3.141592654 x = .499342704389851e-6 S = 3.141592654 x = .249671352194927e-6 S = 3.141592654 x = .124835676097464e-6 S = 3.141592654 x = .624178380487320e-7 S = 3.141592654 x = .312089190243660e-7 S = 3.141592654 x = .156044595121830e-7 S = 3.141592654 x = .780222975609150e-8 S = 3.141592654 x = .390111487804575e-8 S = 3.141592654 x = .195055743902288e-8 S = 3.141592654 x = .975278719511453e-9 S = 3.141592654练习2 用韦达公式2=π计算π的近似值。
1、运算符:+:加,-:减, *:乘, /:除, \:左除 ^:幂,‘:复数的共轭转置,():制定运算顺序。
2、常用函数表:sin( ) 正弦(变量为弧度)Cot( ) 余切(变量为弧度)sind( ) 正弦(变量为度数)Cotd( ) 余切(变量为度数)asin( ) 反正弦(返回弧度)acot( ) 反余切(返回弧度)Asind( ) 反正弦(返回度数)acotd( ) 反余切(返回度数)cos( ) 余弦(变量为弧度)exp( ) 指数cosd( ) 余弦(变量为度数)log( ) 对数acos( ) 余正弦(返回弧度)log10( ) 以10为底对数acosd( ) 余正弦(返回度数)sqrt( ) 开方tan( ) 正切(变量为弧度)realsqrt( ) 返回非负根tand( ) 正切(变量为度数)abs( ) 取绝对值atan( ) 反正切(返回弧度)angle( ) 返回复数的相位角atand( ) 反正切(返回度数)mod(x,y) 返回x/y的余数sum( ) 向量元素求和3、其余函数可以用help elfun和help specfun命令获得。
4、常用常数的值:pi 3.1415926…….realmin 最小浮点数,2^-1022i 虚数单位realmax 最大浮点数,(2-eps)2^1022j 虚数单位Inf 无限值eps 浮点相对经度=2^-52NaN 空值1、!dir 可以查看当前工作目录的文件。
!dir& 可以在dos状态下查看。
2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。
3、功能键:功能键快捷键说明方向上键 Ctrl+P 返回前一行输入方向下键 Ctrl+N 返回下一行输入方向左键 Ctrl+B 光标向后移一个字符方向右键 Ctrl+F 光标向前移一个字符Ctrl+方向右键 Ctrl+R 光标向右移一个字符Ctrl+方向左键 Ctrl+L 光标向左移一个字符home Ctrl+A 光标移到行首End Ctrl+E 光标移到行尾Esc Ctrl+U 清除一行Del Ctrl+D 清除光标所在的字符Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾Ctrl+C 中断正在执行的命令4、clc可以命令窗口显示的内容,但并不清除工作空间。
x=e^x用简单迭代法matlab篇一:在MATLAB中,我们可以使用简单迭代法来求解函数`f(x) = e^x`的导数`f"(x)`,即`f"(x) = e^x - 1`.下面是一个简单的迭代公式:```x0 = 0;for i = 1:1000x = x0 + (x - x0) / (i - 1);end```这个迭代公式使用了一个递归算法,每次将当前`x`值减去上一个`x`值,并除以迭代次数`i - 1`,直到迭代次数达到1000为止。
在每次迭代中,`x`值都会增加`e^x`的值,因此`f"(x)`的值也会增加`e^x - 1`的值。
我们可以通过计算`f"(x)`的值来得到`e^x`在`x`处的导数。
下面是MATLAB代码来求解`f"(x)`:```x = 0:0.1:10;f = e^x;f" = f";```在这个例子中,我们使用一个长度为10的`x`列表来求解`f"(x)`,并将结果保存到变量`f"`中。
使用这个迭代公式和`f"`的值,我们可以计算`e^x`在`x`处的导数,即`f(x)`的斜率。
这个斜率可以用来进行加速收敛的迭代计算,例如在优化问题中。
下面是MATLAB代码来计算`e^x`在`x`处的导数:```x = 0:0.1:10;f = e^x;f" = @(x) f"(x);```这个代码定义了一个函数`f"`,它使用迭代公式和`f`的值来计算`f"(x)`的值。
这个函数会使用一个循环来迭代`x`的值,并计算`f"(x)`的值。
这样,我们就可以使用这个函数来加速收敛,并得到更快的迭代结果。
总的来说,简单迭代法是一种常用的方法来求解函数的导数,特别是在数值计算中。
它简单易行,但收敛速度可能较慢,需要根据具体情况进行调整。
篇二:在本文中,我们将介绍如何使用简单迭代法在 MATLAB 中计算圆周率的近似值。