数值分析法求正弦余弦积分函数_第1页
数值分析法求正弦余弦积分函数_第2页
数值分析法求正弦余弦积分函数_第3页
数值分析法求正弦余弦积分函数_第4页
数值分析法求正弦余弦积分函数_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、天津职业技术师范大学课 程 设 计 任 务 书 理 学院 数学1403 班 学生 张群 课程设计课题: 用数值积分法计算正弦积分函数和余弦积分函数一、课程设计工作日自 2016 年 7 月 4 日至 2016 年 7 月 5日二、同组学生: 无 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时间、主要参考资料等):课题来源:教师自拟类型:理论研究目的和意义:培养学生对数值分析中主要算法的应用能力,探索相关算法之间的内在联系。基本要求:根据数值分析课程所学的知识,应用Matlab软件编写程序,完成对算法及其内在原理的实验研究。完成时间: 参考资料:数值分析 李庆扬等 清华大

2、学出版社 指导教师签字: 教研室主任签字: 一、问题叙述用数值积分法计算正弦积分函数和余弦积分函数提示:正弦积分,余弦函数要求:(1)编写函数,对任意给定的x,可求出值。 (2)使用尽可能少的正余弦函数的调用,计算更精确的值。(用多种方法,创新方法)2、 问题分析 1 、数值积分基本原理:用数值分析求解积分的数值方法有很多,如简单的梯形法、矩形法、辛普森(Simpson)法、牛顿-科斯特(Newton-Cotes)法等都是常用的方法。它们的基本思想都是将整个积分区间a,b分成n个子区间xi,xi+1,i=1,2,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。2、 本题要求用

3、数值积分法计算正弦积分函数和余弦函数积分,那么应该从编写函数的入手,建立function的m文件,通过对函数的调用,对任意跟定的x值,求出积分函数的值。3、 数值积分法求解问题1、 梯形公式、矩形公式 首先,积分中值定理告诉我们,在积分区间a,b内存在一点,成立dx=(b-a)f(),就是说,底为b-a而高为f()的矩形面积恰等于所求区边梯形的面积。如果我们用两端点“高度”f(a)与f(b)的算术平均值作为平均高度f()的近似值,这样导出的求积公式dxf(a)+f(b)便是我们熟悉的梯形公式。将积分区间a,bn等分,每个小区间宽度均为h=,h称为积布步长。记a=x0x1xkxo=b,在小区间上

4、用小矩形面积近似小曲边梯形的面积,若分别取左端点和右端点的函数值为小矩形的高,则分别得到两个曲边梯形面积的近似计算公式。具体程序如下:clear x=linspace(0,pi); dx=x(2); y=sin(x); s1=sum(y)*dx s2=trapz(y)*dx sc1=cumsum(y)*dx; sc2=cumtrapz(y)*dx; plot(x,-cos(x)+1,x,sc1,'.',x,sc2,'o') hold on 由图可知这种方法精度太低,应选择其他方法。2、quad函数、quan1函数正弦:function y=si(t) a=1e-

5、8; %函数在0点无界,去掉0点 y=quad('sin(x)./x',a,t) y=quadl('sin(x)./x',a,t)余弦:function y=ci(t) a=-1e1; %函数在0点无界,去掉0点 y=quad('cos(x)./x',a,t) y=quadl('cos(x)./x',a,t)图像:x=1:100;for i=1:100 y2(i)=si(x(i);endplot(x,y2,'r')title('辛普森')x=1:100;for i=1:100 y2(i)=ci(x(

6、i);endplot(x,y2,'b')title('辛普森') 给定任意x值,均可计算出对应的正弦、余弦函数积分。但从结果可以看出精度不是很高。3、 复合求积公式由于牛顿-科特斯公式在n8时不具有稳定性,故不可能通过提高阶的方法来提高求积精度。为了提高精度通常可把积分区间分成若干子区间(通常是等分),再在每个子区间上用低级求积公式。这种方法为复合求积法。3.3.1 复合梯形公式将区间划分为n等分,分点在每个子区间上采用梯形公式,则得记, 称为复合梯形公式。复合梯形公式的余项由于且所以使 于是复合梯形公式的余项为 事实上只要设,则可得收敛性,只要把改写成为程序如

7、下:正弦:function T_n=fhtxs(a,b,n)h=(b-a)/n;for k=0:n x(k+1)=a+k*h; if x(k+1)=0 x(k+1)=10(-10); endendT_1=h/2*(SS(x(1)+SS(x(n+1);for i=2:n F(i)=h*SS(x(i);endT_2=sum(F);T_n=T_1+T_2;余弦:function T_n=fhtxc(a,b,n)h=(b-a)/n;for k=0:n x(k+1)=a+k*h; if x(k+1)=0 x(k+1)=10(-10); endendT_1=h/2*(CC(x(1)+CC(x(n+1);f

8、or i=2:n F(i)=h*CC(x(i);endT_2=sum(F);T_n=T_1+T_2;图像: 正弦 余弦3.3.2 复合新普斯求积公式将区间划分为n等分,在每个子区间上采用辛普森公式,若记则得l 称为复合辛普森求积公式。程序如下:正弦function S_n=fhxpss(a,b,n)h=(b-a)/n;for k=0:n x(k+1)=a+k*h; x_k(k+1)=x(k+1)+1/2*h; if(x(k+1)=0)|(x_k(k+1)=0) x(k+1)=10(-10); x_k(k+1)=10(-10); endendS_1=h/6*(SS(x(1)+SS(x(n+1);

9、for i=2:n F_1(i)=h/3*SS(x(i);endfor j=1:n F_2(j)=2*h/3*SS(x_k(j);endS_2=sum(F_1)+sum(F_2);S_n=S_1+S_2;余弦:function S_n=fhxpsc(a,b,n)h=(b-a)/n;for k=0:n x(k+1)=a+k*h; x_k(k+1)=x(k+1)+1/2*h; if(x(k+1)=0)|(x_k(k+1)=0) x(k+1)=10(-10); x_k(k+1)=10(-10); endendS_1=h/6*(CC(x(1)+CC(x(n+1);for i=2:n F_1(i)=h/

10、3*CC(x(i);endfor j=1:n F_2(j)=2*h/3*CC(x_k(j);endS_2=sum(F_1)+sum(F_2);S_n=S_1+S_2;图像与复合梯形所得图像基本相同,深入分析两只复合函数的优劣,对于积分函数 假设x=1,则将区间0,1划分为8等份,应用复合梯形求得T8=0.9456909而如果将0,1分为4等份,应用复合辛普森有S4=0.9460832通过参考数值分析(李庆阳)的结论,发现无论是复合梯形公式还是复合辛普森公式,最终结果都会随着h值的减小而更加精确。对复合梯形公式和复合辛普森公式计算出的结果进行比较,发现复合梯形法的结果T8只有两位有效数字,而复合

11、辛普森的结果却有六位有效数字,所以复合辛普森公式计算出的结果更加的精确。4、 插值型的求积公式clc, clearx0=0:0.5:5; y0= Inf 1.7552 0.5403 0.0472 -0.2081 -0.3205 -0.3300 -0.2676 -0.1634 -0.0468 0.0567;%所求积分函数的数值pp=csape(x0,y0) ; %默认的边界条件,Lagrange边界条件format long gchazhi=pp.coefs %显示每个区间上三次多项式的系数s=quadl(t)ppval(pp,t),0,5) %求积分format %恢复短小数的显示格式x=0:

12、0.1:5;y=cos(x)/x;y1=spline(x0,y0,x);z=0*x;hold onplot(x,z,x,y,'k-',x,y1,'r')plot(x0,y0,'*')hold offclearx0=0:0.5:5; y0= Inf 1.7552 0.5403 0.0472 -0.2081 -0.3205 -0.3300 -0.2676 -0.1634 -0.0468 0.0567; %所求积分函数的数值pp=csape(x0,y0) ; %默认的边界条件,Lagrange边界条件format long gchazhi=pp.coe

13、fs %显示每个区间上三次多项式的系数s=quadl(t)ppval(pp,t),0,5) %求积分format %恢复短小数的显示格式x=0:0.1:5;y=cos(x)/x;y1=spline(x0,y0,x);z=0*x;hold onplot(x,z,x,y,'k-',x,y1,'r')plot(x0,y0,'*')hold off如图所示:5、 高斯求积公式function ql,Ak,xk=gsqj(fun,a,b,n,tol)if nargin=1 a=-1;b=1;n=7;tol=1e-8;elseif nargin=3 n=7;

14、tol=1e-8;elseif nargin=4 tol=1e-8;elseif nargin=2|nargin>5 error('The Number of Input Arguments Is Wrong!');end% 计算求积节点syms xp=sym2poly(diff(x2-1)(n+1),n+1)/(2n*factorial(n);tk=roots(p); % 求积节点% 计算求积系数Ak=zeros(n+1,1);for i=1:n+1 xkt=tk; xkt(i)=; pn=poly(xkt); fp=(x)polyval(pn,x)/polyval(pn,tk(i); Ak(i)=quadl(fp,-1,1,tol); % 求积系数end% 积分变量代换,将a,b变换到-1,1xk=(b-a)/2*tk+(b+a)/2;% 检验积分函数fun有效性fun=fcnchk(fun,'vectorize');% 计算变量代换之后积分函数的值SS=fun(xk)*(b-a)/2;%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论