ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:149.44KB ,
资源ID:7893957      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7893957.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值大作业.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值大作业.docx

1、数值大作业目录大角度单摆的运动周期求解 31. 单摆运动模型建立 31.1 小角度模型 32.2 大角度模型 32. 函数编写 52.1 mysin函数编写(计算正弦值) 52.2 mysqrt函数编写(计算开方值) 62.3 f(x)函数编写 72.3.1 复合梯形积分法 72.3.2 Romberg积分法 82.3.3 Gauss积分法(两点) 92.4 myspline函数编写(计算三次样条函数) 93. 运动周期求解 104. 函数拟合 134.1 插值点的选取 134.2 插值点的选取 134.3 结果分析 13总结 15大角度单摆的运动周期求解摘要:无阻尼条件下单摆的周期是第一类椭

2、圆积分,在小角度下可以通过取近似来计算周期。但是在大角度下上式不成立,在本文中利用数值积分方法对各个摆角下的周期进行求解,同时亦通过求三次样条插值函数来近似原函数。1. 单摆运动模型建立模型假设:1. 单摆作无阻尼运动2. 摆绳的质量可忽略,且在运动中无形变3. 悬挂的小球可以看做质点参数设计:假设一个无阻尼的理想单摆,初始摆角为,摆长为l,小球的质量为m,重力加速度为g模型求解:根据公式:转动惯量角加速度 =力矩,得1.1小角度模型在小角度(一般认为)的情况下,作近似则运动方程为这是一个典型的常微分方程,可以解得周期为1.2 大角度模型当初始摆角较大(一般认为)时,上述的近似处理误差很大,不

3、能使用该方法来求解周期。此时需要精确求解。根据微积分和微分方程的知识,可以解得运动周期的精确表达式为设k为精确周期与近似周期之比,即不妨设则当摆角为时,周期比为为了为之后的计算值提供对比,首先用MATLAB内置函数ellipke计算周期比,将其作为标准值,代码如下所示:theta=1:90;%by degreethm=theta*pi/180;%by radiansk=ellipke(sin(thm/2).2)*2/pi;%resultxlswrite(elli.xls,theta;to) %write results to EXCEL document计算结果如下表所示作出摆角与周期比的函数

4、图像,如下所示。可以看到,当角度很小时,周期比约等于1;当角度增大时,周期比偏离1。可见,当单摆作大角度运动时,近似周期公式是不可靠的。2. 函数编写为了更好地体现数值计算,在本文的函数计算中,均使用四则运算,所以需要编自行写正弦函数mysin和开方函数mysqrt。然后在此基础上,用多种数值积分方法求函数的值。2.1 mysin函数编写(计算正弦值)主要思想是利用泰勒公式来求sin(x)的多项式逼近。根据泰勒公式,sin(x)的泰勒展开式如下所示:在本函数中,控制计算值达到小数点后10位,函数代码如下所示:%This function calculate the value of sin(x

5、)%Using Taylors expansionfunction y = mysin(x)y = 0;tol = 0.5e-10;i = 0;er = 1;whileertol temp=y; y = y+(-1)i*x(2*i+1)/factorial(2*i+1);er = abs(temp-y);i = i+1;end2.2 mysqrt函数编写(计算开方值)%This function calculate the square root of inpout x%Argument x must between zero and onefunction y = mysqrt(x)low

6、= 0;high = 1; %the initial lower and upper boundstol = 0.5e-10; %the principle of 10 significant digitsmid = (high+low)/2; %the estimate of zero point valueer = 1;symstf(t) = t2-x;while(ertol)if f(mid)=0break;elseif f(mid)*f(low)0 high=mid;else low=mid;end temp=mid; %store the last estimated value m

7、id=(high+low)/2;er=abs(temp-mid);endy = mid;2.3 f(x)函数编写令其中x是初始摆角,即最大摆角。则周期比可表示为下面分别用复合梯形积分法、Romberg积分法、Gauss积分法,来构造函数。函数的输入变量是摆角(角度值),输出变量是周期比。2.3.1 复合梯形积分法%You should input the maximum swing angle(by degree) as the Argument%This function return the relative cycle of Simple Pendulumfunction y2 = tr

8、a(x)format longx=x/180*pi;symstg=(t)1/mysqrt(1-(mysin(x/2)2)*(mysin(t)2);%composite trapzoidal formulaa=0;b=pi/2; %integrating boundsn=50;h=(b-a)/n; %step sizes=0;for t=a+h:h:b-h s=s+g(t);endI=h/2*(g(a)+g(b)+h*s;y2=I*2/pi;2.3.2 Romberg积分法%You should input the maximum swing angle(by degree) as the Ar

9、gument%This function return the relative cycle of Simple Pendulumfunction y3 = rom(x)format longx=x/180*pi;symstg=(t)1/mysqrt(1-(mysin(x/2)2)*(mysin(t)2);%Romberg methoda=0;b=pi/2; %a and b are upper and lower limits of integrationm=1;h=b-a;j=0;R(1,1)=h*(g(a)+g(b)/2;while(j4) j=j+1; h=h/2; s=0;for p

10、=1:m t=a+h*(2*p-1); s=s+g(t);end R(j+1,1)=R(j,1)/2+h*s; m=m*2;for k=1:j R(j+1,k+1)=R(j+1,k)+(R(j+1,k)-R(j,k)/(4k-1);endend2/pi*Ry3=2/pi*R(j+1,j+1);2.3.3 Gauss积分法(两点)%You should input the maximum swing angle(by degree) as the Argument%This function return the relative cycle of Simple Pendulumfunction

11、 y1 = gau(x)format longx=x/180*pi;symstg=(t)1/mysqrt(1-(mysin(x/2)2)*(mysin(t)2);%Gauss methodI=pi/4*(5/9*g(pi/4-pi/4*sqrt(15)/5)+8/9*g(pi/4+pi/4*0)+5/9*g(pi/4+pi/4*sqrt(15)/5);y1=I*2/pi;2.4 myspline函数编写(计算三次样条函数)为了能够通过少许插值点来知道任意摆角的周期比,可以通过对插值点进行三次样条插值,具体说明见后文。该函数的输入量是摆角,输出量是周期比,计算代码如下所示:%x is indep

12、endent variable of this function%t and v is the vector of sampling pointfunction y = myspline( x,t,v )n = length(t); % Length of the input%The coefficients in A matrix.lambda = zeros(n-1,1);u = zeros(n-1,1);h = zeros(n-1,1);g = zeros(n-1,1);b = zeros(n,1);% A*M=b for calculate coefficent matrix M .%

13、 S(i) is the result of y in each spline section.A = eye(n)*2;S = zeros(n-1,1);for i = 1:n-1 h(i) = t(i+1) - t(i);endfor i = 2:n-1 lambda(i) = h(i)/(h(i-1)+h(i); A(i,i+1) = lambda(i); u(i-1) = 1-lambda(i); A(i,i-1) = u(i-1);endfor i = 1:n-2 g(i) = 6/(h(i)+h(i+1)*. (v(i+1)-v(i+2)/(t(i+1)-t(i+2)-. (v(i

14、)-v(i+1)/(t(i)-t(i+1); b(i+1) = g(i);end% Calculate the matrix M for later spline interpolationM = Ab;for i = 1:n-1 S(i) = 1/(6*h(i)*(M(i)*(t(i+1)-x)3+M(i+1)*(x-t(i)3)+. (v(i)-(M(i)*h(i)2)/6)*(t(i+1)-x)/h(i)+. (v(i+1)-(M(i+1)*h(i)2)/6)*(x-t(i)/h(i);if x t(i+1) y = S(i);endend3. 运动周期求解在f(x)函数编写模块中,已经

15、用复合梯形、Romberg和Gauss积分法三种方法写了对的求解算法。由于Gauss积分法的精度不高,故不采用该方法。复合梯形积分法可以通过增加小区间的数量来提高精度,Romberg积分法亦可以通过增加外推次数来提高精度。又由于Romberg方法可以通过控制外推终止条件来控制计算结果的精度,所以下面主要使用Romberg方法来计算(精确到小数点后6位):为了达到需要的精度,将代码做一些修改(修改部分加粗)%You should input the maximum swing angle(by degree) as the Argument%This function return the re

16、lative cycle of Simple Pendulumfunction y3 = rom(x)format longx=x/180*pi;symstg=(t)1/mysqrt(1-(mysin(x/2)2)*(mysin(t)2);%Romberg methoda=0;b=pi/2; %a and b are upper and lower limits of integrationm=1;h=b-a;j=0;R(1,1)=h*(g(a)+g(b)/2;tol=0.5e-6;err=1; %The initial value of errorwhile(jtol) j=j+1; h=h

17、/2; s=0;for p=1:m t=a+h*(2*p-1); s=s+g(t);end R(j+1,1)=R(j,1)/2+h*s; m=m*2;for k=1:j R(j+1,k+1)=R(j+1,k)+(R(j+1,k)-R(j,k)/(4k-1);end err=2/pi*abs(R(j+1,j+1)-R(j,j);end2/pi*Ry3=2/pi*R(j+1,j+1);通过以下代码计算各摆角对应的周期,并将数据写入Excel表中。(注:为了方便,以3为步长从0到90取值)step=3;i=0;for x=0:step:90i=i+1; y=rom(x); result(i,1) =

18、 x; result(i,2) = y;endxlswrite(rom.xls,result);计算结果与标准值的对比结果如下:可以看出,在精确到小数点后6位的情况下,计算值与标准值之间几乎没有误差。4. 函数拟合为了能够方便计算任意一摆角的周期比,可以在标准值中取一些插值点,然后利用这些插值点计算三次样条函数。有了三次样条函数后,就可以很方便地计算任意摆角的周期比。4.1 插值点的选取每隔取一个插值点,代码如下:theta=0:5:90;thm=theta*pi/180;to=ellipke(sin(thm/2).2)*2/pi;4.2插值点的选取选好插值点后,再调用之前写好的mysplin

19、e函数即可计算各个样条函数,输出摆角对应周期比的估计值,以计算对应的周期比为例:myspline(87,theta,to);输出结果为1.1667044.3 结果分析首先画出插值点的散点图和样条函数的图像:%the scatter plotset(0,defaultfigurecolor,w); %set the background color to whitei=0;for x=0:0.01:90i=i+1; y1(i)=myspline(x,theta,to);endx=0:0.01:90;scatter(x,y1,.r);hold onscatter(theta,to,*k);图像如下

20、所示,可见吻合地很好:为了更加精确地分析样条函数的误差情况,下面作出各点的样条函数值和标准值的差的函数(注:以为步长)%error plotset(0,defaultfigurecolor,w); %set the background color to whitefor x=0:1:90 y1=myspline(x,theta,to); t=x/180*pi; y2=ellipke(sin(t/2).2)*2/pi; line(x,x,0,y1-y2);end图像如下所示:可以看出,误差已经很小了,达到了10-5数量级,但是在两端的误差相对来说比较大。此时可以增加相应位置的插值点来改善:th

21、eta=0:1:4,5:5:85,86:1:90;thm=theta*pi/180;to=ellipke(sin(thm/2).2)*2/pi;再次作出误差图像,如下:可以看出,误差已经达到了10-8数量级,精度已经很高了。从图中也可以看出,误差都是为负的,也就是说样条函数的估计值要小于标准值。所以,各个区间的样条函数均是下凹程度要大于实际的函数。如果还需要提高精度,可以继续增加插值点。但是采用样条函数的意义本在于为了更加方便计算任意摆角的周期比;若是插值点过多,不同区间用不同的样条函数,导致样条函数也更多,反而繁琐。所以在实际使用中应当在两者中权衡。总结本文中提供了复合梯形积分法、Romberg积分法、Gauss积分法三种数值积分法来计算周期比,其中重点分析了Romberg积分法,因为其比较方便控制精度;梯形积分法也很适合,篇幅有限,就没有重复赘述。为了能够得到周期比与摆角的近似函数,以方便计算任意角度的周期比,本文中通过在标准值中取了若干插值点来求三次样条函数。若是三次样条函数在某些值处误差较大,可以通过在该处添加插值点,从而大大提高精确度。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1