数值逼近课程设计报告

合集下载

数值逼近实验2

数值逼近实验2
1
0.85
1
0.723
1
0.614
1
0.522
1
• 构造矩阵bb
y
1.221 2.014 2.718
xy
x^2*y
0.244 0.049 1.410 2.718 0.997 1.690 2.718
1.649 0.824 0.412
2.340 1.989
• 求矩阵xx的各列之和x
• x=[5 3.250 2.503 2.090 1.826]
果p为拟合多项式的系数,按降幂排列。
• • • • • • •
例:x=[1 3 5 6 7 8 9 10]; y=[10 5 2 1 1 2 3 4]; p=polyfit(x,y,2) 得到: p=0.2763 -3.6800 13.4320 即: y=0.2763*x^2-3.6800*x+13.4320
• 4.lsqnonlin命令 • p=lsqnonlin(fun,minmax) • 该命令同样用于求非线性最小二乘拟合, 但是只用于求因变量拟合值的平方和最 小值,这里不多做介绍。
• 5.nlinefit非线性回归函数 • p=nlinefit(x,y,f,minmax) • 例:exp202.m
• 2.polyval函数 • 此函数用于求多项式在某一点的函 数值,其格式为: • y0=polyval(p,x0) • 其中p即为“ployfit”的计算结果向 量。 • 例: • y0=polyval(p,2) • y0=7.71773
• 注:当polyfit命令中结点个数为 n,多项式次数为n-1时,拟合结 果即为Lagrange插值多项式。 • 例: • x=[1 4 9]; y=[1 2 3]; • p=polyfit(x,y,2); • y0=polyval(p,5) • 结果为: • y0=2.2667

《数值逼近》课程设计报告

《数值逼近》课程设计报告

《数值逼近》课程设计报告数值逼近课程设计报告一、目的意义(1)进一步熟悉掌握复化梯形和复化抛物线公式(2)学会比较复化梯形公式和复化抛物线公式如何达到所要求的精度(3) 提高编程能力(4)通过数值方法求出很难求得原函数的积分和解析表达是没有明确的给出积分的近似值二、内容要求积分计算问题:分别用复化梯形和复化Simpsom 求积公式计算积分dx e x x x 5.1402)(13-⎰-,并比较计算量(精度为10-8)。

三、问题解决的方法与算法方法:解决该积分问题时,运用了数值积分近似解法的方法,运用复化梯形和复化Simpsom 求积公式进行计算3.1 复化梯形积分3.1.1复化梯形积分公式表达式()()()1122n n i i h T f a f b f x -=⎡⎤=++⎢⎥⎣⎦∑ 3.1.2复化梯形积分误差表达式[]()()()2,,12n b a h R f f a b ηη-''=-∈3.2复化抛物线积分3.2.1复化抛物线积分公式表达式()()()()()11/21142n n bk k a k k f x dx f a f x f x f b --==⎡⎤≈+++⎢⎥⎣⎦∑∑⎰3.2.2复化抛物线积分误差表达式[]()()()()()()()54444,,28802880n b a h b a R f f f a b n ηηη--=-=-∈3.3算法 3.3.1复化梯形积分算法第一步:根据精度计算n 的值,输入两端点的值,计算步长h第二步:根据步长计算出各个节点x[i]的值,i=0,1,2,…,n第三步:根据x[i]计算出各个节点对应y[i]的值,i=0,1,2,…,n第四步:对各个节点的值进行求和第五步:输出最终的积分的值3.3.2复化抛物线积分算法第一步:根据精度计算n 的值,端点a,b 的值,计算步长h第二步:根据步长计算出各个节点x[i]的值,i=0,1,2,…,n第三步:根据x[i]计算出各个节点对应y[i]的值,i=0,1,2,…,n第四步:对各个节点的值进行求和,分情况,对左右端点先求和,对剩下的端点,奇数的求和后乘以4倍,偶数的求和后乘以2倍,最终将各个值进行加和第五步:对加和的值乘以步长除以3第六步:输出最终的积分的值四、计算程序// 复化梯形公式.cpp : 定义控制台应用程序的入口点。

数值分析实验报告2

数值分析实验报告2

实验报告实验项目名称函数逼近与快速傅里叶变换实验室数学实验室所属课程名称数值逼近实验类型算法设计实验日期班级学号姓名成绩512*x^10 - 1280*x^8 + 1120*x^6 - 400*x^4 + 50*x^2 - 1并得到Figure,图像如下:实验二:编写程序实现[-1,1]上n阶勒让德多项式,并作画(n=0,1,…,10 在一个figure中)。

要求:输入Legendre(-1,1,n),输出如a n x n+a n-1x n-1+…多项式。

在MATLAB的Editor中建立一个M-文件,输入程序代码,实现勒让德多项式的程序代码如下:function Pn=Legendre(n,x)syms x;if n==0Pn=1;else if n==1Pn=x;else Pn=expand((2*n-1)*x*Legendre(n-1)-(n-1)*Legendre(n-2))/(n);endx=[-1:0.1:1];A=sym2poly(Pn);yn=polyval(A,x);plot (x,yn,'-o');hold onend在command Windows中输入命令:Legendre(10),得出的结果为:Legendre(10)ans =(46189*x^10)/256 - (109395*x^8)/256 + (45045*x^6)/128 - (15015*x^4)/128 + (3465*x^2)/256 - 63/256并得到Figure,图像如下:实验三:利用切比雪夫零点做拉格朗日插值,并与以前拉格朗日插值结果比较。

在MATLAB的Editor中建立一个M-文件,输入程序代码,实现拉格朗日插值多项式的程序代码如下:function [C,D]=lagr1(X,Y)n=length(X);D=zeros(n,n);D(:,1)=Y';for j=2:nfor k=j:nD(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1));endendC=D(n,n);for k=(n-1):-1:1C=conv(C,poly(X(k)));m=length(C);C(m)= C(m)+D(k,k);end在command Windows 中输入如下命令:clear,clf,hold on;k=0:10;X=cos(((21-2*k)*pi)./22); %这是切比雪夫的零点Y=1./(1+25*X.^2);[C,D]=lagr1(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.01:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到Figure ,图像如下所示:比较后发现,使用切比雪夫零点做拉格朗日插值不会发生龙格现象。

数值分析实验报告-插值、逼近

数值分析实验报告-插值、逼近

实验报告:函数逼近&插值多项式补充1 2k 1问题1 :对于给函数f (x) 2,取点X k cos , k取0, 1,…,n。

n取101+25x 2n 2或20。

试画出拟合曲线并打印出方程,与第二章计算实习题2的结果进行比较。

1 问题2 :对于给函数f(x) 2在区间卜1,1]上取x i=-1+0.2i ------------------------------------------ (i=0,1,2,…,10),试求31+25x次曲线拟合,试画出拟合曲线并打印出方程,与第二章计算实习题2的结果进行比较。

实验目的:通过编程实现牛顿插值方法和函数逼近,加深对多项式插值的理解。

应用所编程序解决实际算例。

实验要求:1 .认真分析问题,深刻理解相关理论知识并能熟练应用;2. 编写相关程序并进行实验;3. 调试程序,得到最终结果;4. 分析解释实验结果;5. 按照要求完成实验报告。

实验原理:详见《数值分析第5版》第二章、第三章相关内容。

实验内容:(1)问题1 :这里我们可以沿用实验报告一的代码,对其进行少量修改即可。

当n=10时,代码为:clear allclck=0:10;n=len gth(k);x1=cos((2*k+1)/2/n*pi);y1=1./(1+25.*x1.A2);f=y1(:);for j=2: nfor i=n :-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p;F(1)=1;p(1)=y1(1);for i=2: nF(i)=F(i-1)*(x-x1(i-1));P(i)=f(i)*F(i);end syms P P=sum(p);P10=vpa(expa nd(P),5); xO=-1:O.OO1:1; yO=subs(P,x,xO);y2=subs(1/(1+25*x A 2),x,x0); plot(x0,y0,x0,y2) grid on xlabel('x') ylabel('y')由 此 我 们 可 以 得 到P i0(x)=-46.633*xA10+3.0962e-14*xA9+130.11*xA8-7.2714e-14*xA7-133.44*xA6+7.1777e- 14*xA5+61.443*xA4-1.5805e-14*xA3-12.477*xA2-1.6214e-16*x+1.0并可以得到牛顿插值多项式在 [-1 , 1]上的图形,并和原函数进行对比,得Fig. 1。

数值逼近实验报告3

数值逼近实验报告3

实验报告实验项目名称数值积分与数值微分实验室数学实验室所属课程名称数值逼近实验类型算法设计实验日期2013年10月30日班级11信息与计算科学学号2011119404姓名冯学宁成绩公式以及高斯-勒让德公式的内容转化成程序语言,用MATLAB实现;第二步,分别用以上求积公式的程序编码求解不同的问题。

【实验过程】(实验步骤、记录、数据、分析)实验的主要步骤是:首先分析问题,根据分析设计MATLAB程序,利用程序算出问题答案,分析所得答案结果,再得出最后结论。

实验:用不同数值方法计算积分(1) 取不同的步长h.分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善?(2) 用龙贝格求积计算完成问题(1)。

(3)用勒让德多项式确定零点,再代入计算高斯公式,使其精度达到10-4(1)在MATLAB的Editor中建立一个M-文件,输入程序代码,实现复合梯形求积公式的程序代码如下:function s=T(n)a=0.0000001;b=1;h=(b-a)/n;s=h*(f(a)+f(b))/2;if n>1for k=1:n-1x=a+k*h;s=s+h*f(x);endE=s+4/9%复合梯形误差end在command Windows中输入命令:T(10),T(100)以及T(1000),得出的结果为:>>T(10)E =0.02719.1563e-06ans =-0.4444总结由结果(1)、(2)可知复合辛普森法求积分精度明显比复合梯形法求积的精度要高,且当步长取不同值时即n越大、h越小时,积分精度越高。

实验结果说明不存在一个最小的h,使得精度不能再被改善。

又两个相应的关于h 的误差(余项)其中η属于a到b。

可知h愈小,余项愈小,从而积分精度越高。

(2)在MATLAB的Editor中建立一个M-文件,输入程序代码,实现龙贝格算法的程序代码如下:function [q,n]=Roberg(f,a,b)M=1;abs0=10;k=0;T=zeros(1,1);h=b-a;T(1,1)=(h/2)*(subs(f,a)+subs(f,b));while abs0>0.0001k=k+1;h=h/2;p=0;for i=1:Mx=a+h*(2*i-1);p=p+subs(f,x);endT(k+1,1)=T(k,1)/2+h*p;M=2*M;for j=1:kT(k+1,j+1)=((4^j)*T(k+1,j)-T(k,j))/(4^j-1);endabs0=abs(T(k+1,j+1)-T(k,j));。

数值逼近报告

数值逼近报告

图 2 f ( x ) x 的函数图像和勒让德逼近函数图像(取 n=2)
勒让德逼近 MATLAB 代码 function f = Legendre(y,k,x0) syms t; P(1:k+1) = t; P(1) = 1; P(2) = t; c(1:k+1) = 0.0; c(1)=int(subs(y,findsym(sym(y)),sym('t'))*P(1),t,-1,1)/2; c(2)=int(subs(y,findsym(sym(y)),sym('t'))*P(2),t,-1,1)/2; f = c(1)+c(2)*t; for i=3:k+1 P(i) = ((2*i-3)*P(i-1)*t-(i-2)*P(i-2))/(i-1); c(i) = int(subs(y,findsym(sym(y)),t)*P(i),t,-1,1)/2; if(i==k+1) f = f + c(i)*P(i);
1、Euler 方法
function [ x,y ] = Euler( f,a,b,y0,h ) %解初值问题:y'=f(x,y),y(a)=y0 %欧拉方法 n=(b-a)/h; x = (a+h:h:b); y(1) = y0 + h*feval(f,a,y0); for i = 2:n y(i) = y(i-1) + h*feval(f,x(i-1),y(i-1)); end x=[a x]; y=[y0 y];
求解如上线性方程组我们即可得到所需之 Pade 逼近。 例:我们通过如下例子观察 Pade 逼近的效果。考察函数
f x 1 1 3 5 1 x x 2 x3 2 8 16 1 x

《数值逼近》教学大纲

《数值逼近》教学大纲

《数值逼近》教学大纲第一篇:《数值逼近》教学大纲《数值逼近》教学大纲(课程编号520271)(学分3.5,学时56)一、课程的性质和任务本课程是信息与计算科学专业的专业大类课。

函数逼近论研究函数的各类逼近性质,是计算数学和其它科学工程计算中诸多数值方法的理论基础。

本课程除了介绍几类古典的函数逼近理论和方法之外,还介绍了现代逼近理论中样条函数、曲线与曲面拟合等方面的理论与技巧。

在介绍上述内容的同时,安排学生上机实习,使学生能够更深刻地理解与掌握逼近论的基本理论与方法,达到理论与实践相结合的目的。

二、课程内容、基本要求 Weierstrass 定理与线性算子逼近掌握 Weierstrass 第一定理、第二定理,了解算子逼近理论。

一致逼近掌握函数一致逼近理论中的Borel 存在定理、最佳逼近定理,熟练掌握Tchebyshev 最小零偏差多项式,了解三角多项式逼近理论和代数多项式逼近理论中的 Jackson 型和 Bernstein 型定理。

多项式插值方法熟练掌握 Lagrange 插值公式、Newton 插值公式、Hermite 插值,等距节点插值与差分,插值余项估计等。

平方逼近理论掌握最小二乘法、最佳平方逼近理论,空间中的直交函数系与广义Fourier 级数、直交函数系的构造方法、直交多项式的一般性质,了解直交多项式级数的收敛性、几种特殊的直交多项式。

数值积分掌握Newton-Cotes 公式、Romberg 方法,熟练掌握代数精度法构造求积公式,熟练掌握Gauss 型求积理论,了解Euler-Maclaurin 公式,三角精度与周期函数的求积公式、奇异积分的计算等内容。

样条逼近方法掌握样条函数及其基本性质、B-样条及其性质、三次样条插值。

曲线、曲面的生成和逼近了解微分几何中的曲线、曲面论,掌握数据处理、累加弦长法、参数样条曲线、Bezier 方法、B-样条方法等曲线与曲面设计方法。

三、课程的教学环节课内 56 学时,课外 12 学时(学生自行上机完成数值实习作业)。

实验1:二分法和迭代法

实验1:二分法和迭代法

Ex=(k+1)( 1-0.99995^k)+ 0.99995^k=k(1-0.99995^k)+1 设 f(k)=Ex/k=1-0.99995^k+1/k 当 f(k)最小时,总共所需的化验次数最少,即 f ’(k*)=0 时,k*所需化验次数最少 f ’(k)=(-0.99995^k)*(ln0.99995)-1/(k^2) f’(100)= -5.0248e-05 f’(200)= 2.4504e-05 利用二分法,程序如下: f=@(k)(-0.99995^k)*(log(0.99995))-1/(k^2); a=100;b=200; tol=1e-12;maxit=100; my_bisection(f,a,b,tol,maxit) 结果为 1.419222563505173e+02 即 k=141 或 142 时,f(k)最小 代入得 f(141)= 0.014117580646837
四、实验结果: (1) 取有根区间为 [3, 4], 利用二分法求得的根为: 3.262983107765649 取迭代初值为 3, 利用迭代法求得的根为: 3.262983107764216(2来自 二分法和迭代法的迭代图像为:
(3) 结论: … …
任课教师:鲍亮
2017 年 3 月 19 日
(2) 迭代法的程序:
function Vx=my_iteration(phi,x0,tol,maxit) Vx=zeros(1,maxit);k=2;Vx(1)=x0; while abs(phi(x0)-x0)>tol&&k<=maxit+1 x0=phi(x0); Vx(k)=x0; k=k+1; if k>3 if abs(Vx(k-1)-Vx(k-2))>abs(Vx(k-2)-Vx(k-3)) '不收敛' break else end else end end Vx=Vx(1:k-1);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称数值逼近专业信息与计算科学班级计算092姓名杜青学号 50指导教师秦新强、胡钢日期 2011-07-01理学院应用数学系一、目的意义(1)进一步熟悉掌握复化梯形公式。

(2)进一步掌握熟悉复化抛物线公式。

(3) 学会比较复化梯形公式和复化抛物线公式如何达到所要求的精度。

二、内容要求积分计算问题:分别用复化梯形和复化Simpsom 求积公式计算积分dx e x x x 5.142)(13-⎰-,并比较计算量(精度为10-8)。

三、问题解决的方法与算法方法:利用复化梯形和复化抛物线积分公式。

算法:输入:端点a 、b 以及要计算的积分公式f(x);输出:积分f(x)在指定区间上的近似值以及当其达到所要求的精度时要做的等分数n 的值。

Step1:编写复化梯形公式程序。

Step2:通过所要达到的精度作为条件,算出要做的等分数以及对应的近视值。

Setp3:编写复化抛物线积分公式程序。

Setp4:通过所要达到的精度作为条件,算出要做的等分数以及对应的近视值。

Setp5:然后比较复化梯形和复化抛物线的所需等分数,比较谁的精度比较高。

四、计算程序1.复化梯形数值积分及其应用报告1#include <>#include <>double f(double x){double s;s=13*(x-x*x)*exp*x);return s;}void main(){int n,i;double h,m,y,a,b,t[3000];printf("请输入端点的值a,b\n"); scanf("%lf",&a);scanf("%lf",&b);for(n=1;;n++){h=(b-a)/n;m=(f(a)+f(b))/2;for(i=1;i<n;i++){m+=f(a+i*h);}t[n]=m*h;h=(b-a)/(n+1);m=(f(a)+f(b))/2;for(i=1;i<n+1;i++){m+=f(a+i*h);}t[n+1]=m*h;if(fabs(t[n+1]-t[n])< break;}printf("求得结果为n=%d",n);printf("求得结果为:t[n+1]=%10.8f\n",t[n+1]); }2.复化抛物线#include <>#include <>double f(double x){double s;s=13*(x-x*x)*exp*x);return s;}void main(){int i,n;double h,m,p,q,x,s,a,b,t[1000];printf("请输入端点的值a,b\n");scanf("%lf",&a);scanf("%lf",&b);for(n=1;;n++){h=(b-a)/(2*n);m=f(a)+f(b);p=0;q=0;for(i=1;i<2*n;i++){ x=a+i*h;if(i%2==0)q=q+f(x);elsep=p+f(x);}t[n]=h*(m+2*q+4*p)/3;h=(b-a)/(2*(n+1));m=f(a)+f(b);p=0;q=0;for(i=1;i<2*(n+1);i++){ x=a+i*h;if(i%2==0)q=q+f(x);elsep=p+f(x);}t[n+1]=h*(m+2*q+4*p)/3;if(fabs(t[n+1]-t[n])< break;}printf("求得结果为:n=%d\n",n);printf("求得结果为:%10.8f\n",t[n+1]);}五、计算结果与分析1.复化梯形的运行结果:2.复化抛物线的运行结果:分析与评价:通过对复化梯形的运行结果和复化抛物线的运行结果的分析得到,当其所要求的精度相同时,复化抛物线的的等分数明显比复化梯形的等分数少,因此可以得到复化抛物线的精度比复化梯形的精度高。

六、参考文献[1] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2005.[2] 秦新强. 数值逼近, 西安:西安理工大学印刷厂,2010.一、目的意义(1)掌握分段线性插值多项式的算法实现。

(2)学会分析误差和精度,熟练运用各类编程的语句。

(3)进一步提高用数值算法解决实际问题的能力。

二、内容要求机械设计问题:万能拉拨机中有一个圆柱形凸轮(见图1),其底圆半径R=30cm,凸轮的上端面不在同一平面上,要根据从动杆位移变化的需要进行设计制造。

将底圆周长36等分为x i (i =0,1, …, 36),每一圆弧段长为h=52.36mm,对应于每 一分点的柱高为y i (i =0,1, …, 36)。

为方便,将圆柱展开为平面,柱面的的顶端成为图2所示的平面曲线,并已知该曲线上的37个点的坐标(表1)。

y CA B y i y ix 0 O x i x 17 x 36 x图1 凸轮模型 图2 展开曲线机械设计问题报告2表1:测量数据表=0, x36=1884.96mm, h=52.36mm。

xBC是直线段,AB是曲线段,为了数控加工,需要计算出圆周上任一点处的柱高,试构造算法、设计程序、编程计算。

三.问题解决的方法和算法方法:利用分段线性插值和线性插值。

算法:Step1:输入题目所给的数据(x[i],y[i])。

Step2:编写曲线段时要用的分段线性插值的程序。

Step3:编写直线端时要用的线性插值的程序。

Step4:任意输入一个插值点。

Step5:通过判断条件计算插值点所对应的函数值。

四.程序设计#include <>#include <>#define N 17void main(){ int i,n;double X,Y;double m1,m2,m3,m4;double x[N+1];doubley[N+1]={,,525,,,492,451,,,,,,,,,,,};double h=;for(i=0;i<N+1;i++){x[i]=i*h;printf("x[%d]=%lf\n",i,x[i]);}printf("请输入要插入的值X=");scanf("%lf",&X);if(X>=0&&X<={for(i=0;i<N;i++){if(X>=x[i]&&X<x[i+1]){m1=x[i];m2=x[i+1];m3=y[i];m4=y[i+1];Y=;Y=m3*(X-m2)/(m1-m2)+m4*(X-m1)/(m2-m1)+Y;}else if(X=x[i])Y=y[i];elseY=y[i+1];}}else if(X>=&&X<=Y=elseprintf("输入的插入点不在范围内,请重新输入\n");printf("Y=%lf\n",Y);}五.对计算结果的分析和评价此运行结果为第一种情况,当插入点的值在曲线范围内所对应的x0~x17。

此运行结果为第二种情况,当插入点的值在直线范围内所对应的x18~x36。

此运行结果为第三种情况,当插入点的值不在题目所给的范围内时。

分析与评价:运用数值算法解决实际问题时,要注意各种误差。

该题目运用的是分段线性插值和线性插值,虽然存在误差,但是对所要求的结果的影响不大,所以本程序的结果是比较准确的。

六.参考文献[1] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2005.[2] 秦新强. 数值逼近, 西安:西安理工大学印刷厂,2010.报告3综合应用问题一、目的意义(1)掌握最小二乘法的基本算法。

(2)通过最小二乘法可以拟合多次多项式的算法。

(3)熟练运用编程所要用的各种语句,该算法主要学会矩阵的乘法以及如何解方程组的程序的实现。

二、内容要求6.多项式拟合问题:考虑将[0,1] 30 等分节点,用多项式y = 1+ x +L+ x 5生成数据,再分别用多项式拟合求其3 次、5 次、10 次、15 次插值多项式,并分析误差产生原因。

三.算法和方法方法:最小二乘法。

算法:Step1:计算和输入题目所给的数据对(x[i],y[i])。

Step2:输入系数矩阵和系数矩阵的转置,两个矩阵相乘得到新矩阵。

Step3:系数矩阵的转置与函数值矩阵相乘,得到新矩阵。

Step4:得到所要求的方程组解方程组。

Step5:得到多项式的各项系数。

即可以写出所要求的拟合多项式。

四.程序设计。

#include <>#include <>#include <>#include <>#define N 7C语言程序设计[M]. 北京:清华大学出版社,2005.[2] 秦新强. 数值逼近, 西安:西安理工大学印刷厂,2010.。

相关文档
最新文档