手机版

实验报告—数值分析

发布时间:2024-11-17   来源:未知    
字号:

江西理工大学上数值分析期末实验

《数值分析》实验报告

姓 名: 学 号: 专 业:

指导教师: 刘 建 生 教 授 日 期: 2015年12月25日

江西理工大学上数值分析期末实验

实验一 Lagrange/newton插值

一:对于给定的一元函数y f(x)的n+1个节点值yj f(xj),j 0,1, ,n。试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。

数据如下:

6f(0.99)的值(提示:结果为f(0.596) 0.625732, 计算f(0.59,f(0.99) 1.05423 )

试构造Lagrange多项式L6(x),计算的f(1.8),f(6.15)值。(提示:结果为

f(1.8) 0.164762, f(6.15) 0.001266 )

二:实验程序及注释

MATLAB程序:function f=lagrange(x0,y0,x )

n=length(x0); m=length(y0); format long s=0.0; for k=1:n p=1.0; for j=1:n if j~=k

p=p*(x-x0(j))/(x0(k)-x0(j)); end end

s=s+y0(k)*p; End f=s; end

江西理工大学上数值分析期末实验

结果运行:

结果与提示值完全吻合,说明Lagrange插值多项式的精度是很高的;

f(x)

(x x1)(x x2)(x x3)(x x4)(x x5)

(x0 x1)(x0 x2)(x0 x3)(x0 x4)(x0 x5)

(x x0)(x x1)(x x2)(x x3)(x x4)(x5 x0)(x5 x1)(x5 x2)(x5 x3)(x5 x4)

同时,若采用三点插值和两点插值的方法,用三点插值的精度更高。若同时采用两点插值,选取的节点距离x越近,精度越高。

江西理工大学上数值分析期末实验

三:采用newton插值进行计算 算法程序如下:

format long; x0=[0.4

0.55 0.65 0.80 0.95 1.05 ];

0.69675

0.90 1.00 1.25382 ];

y0=[0.41075 0.57815 n=max(size(x0));

y=y0(1); %disp(y); s=1;

dx=y0; for i=1:n-1 dx0=dx; for j=1:n-i

dx(j)=(dx0(j+1)-dx0(j))/(x0(i+j)-x0(j)); end df=dx(1); s=s*(x-x0(i));

y=y+s*df; %计算 %%disp(y); end disp(y)

x=0.596;

运行结果:

江西理工大学上数值分析期末实验

绘制出曲线图:

与结果相吻合。

所以newton法和Lagrange法的思想是一样的。Lagrange适合理论分析,但Lagrange法不如newton法灵活。Lagrange如果节点个数改变,算法需要重新编写,而Newton法克服这一缺点,所以应用更为灵活。

江西理工大学上数值分析期末实验

实验二 函数逼近与曲线拟合

一、问题提出

在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t的拟合曲线。 t(分钟) y(10 4)

要求:

1、用最小二乘法进行曲线拟合;

2、近似解析表达式为f(x)=a1t+ a2t2+ a3t;

3、计算出拟合函数f(x),并列出出f(x)与y(x)的误差; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、绘制出曲线拟合图。

二、问题分析 三、

从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。

三、实验程序及注释

三次拟合程序(最小二乘法):

t=[0 5 10 15 20 25 30 35 40 45 50 55]%输入时间t的数据

y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64]%输入含碳量数据

[p,s]=polyfit(t,y,3)%调用MATLAB最小二乘法的程序进行三次拟合并给出误差分析 format long%14位精度小数

plot(t,y,'*r')%绘制被拟合数据点的离散图 hold on

plot(t,y1,'b')%绘制三次拟合函数图(其中y1是拟合之后的数据) xlabel('时间t(分钟)') %注释x轴 ylabel('含碳量/10^-4') %注释y轴 title('三次拟合图') %注释图名 grid%坐标系网格化

四次拟合程序(最小二乘法):

[p,s]=polyfit(t,y,4) %调用MATLAB最小二乘法的程序进行四次拟合并给出误差分析 format long%14位精度小数

plot(t,y,'*r')%绘制被拟合数据点的离散图

3

0 0

5 1.27

10 2.16

15 2.86

20 3.44

25 3.87

30 4.15

35 4.37

40 4.51

45 4.58

50 4.02

55 4.64

江西理工大学上数值分析期末实验

hold on

plot(t,y2,'b')%绘制三次拟合函数图(其中y2是拟合之后的数据) xlabel('时间t(分钟)') %注释x轴 ylabel('含碳量/10^-4') %注释y轴 title('四次拟合图') %注释图名 grid%坐标系网格化

四、实验数据结果及分析

三次拟合可以得到其拟合多项式为:

y1=0.00003436415436t3-0.00521556221556t2+0.26339852739853t+0.01783882783883

拟合函数与被拟合函数图之间的对比如下: (1) 红色星号为原始数据;

(2) 带圈的曲线为最小二乘后而成的结果曲线。

由此可见拟合函数与原函数离散数据点拟合成程度相当好,通过[p,s]=polyfit(t,y,n)对拟合误差进行分析,如图:

江西理工大学上数值分析期末实验

图2-2

由此可知,三次拟合精度较好。

为了提高结果的可信度,我们另外选取一个近似表达式,尝试拟合效果的比较。于是,进行四次拟合:

其中,拟合得到的多项式为:

y2=0.00000060256410t4-0.00003191789692 t3-0.00293227466977t2

+0.23806931494432t+0.06044871794872 拟合如图

2-3

图2-3

同样对四次拟合进行误差分析可得:

江西理工大学上数值分析期末实验

图2-4

由此可见,四次拟合误差0.49493<0.50824(三次拟合误差),精度更高。

五、实验结论

在用高阶多项式对某一函数进行曲线拟合时, 并不是拟合出来的多项式与被拟合函数在整个区间上都能符合,polyfit()只能保证在输入数据x所能达到的区间上及其附近.求得的多项式可以最大限度在逼近原函数。利用最小二乘法对本问题进行的曲线拟合精度较高,而且,在一般情况下,拟合的多项式次数越多,精度越高。

实验三 数值积分与数值微分

一、问题提出

计算下列积分值:

(1

)I=

01

(I 1.5343916)

(2)I=

sinx

(f(0) 1,I 0.9460831) x0

1

ex

(3) I= 2

4 x0

江西理工大学上数值分析期末实验

(4) I=

ln(1 x)

2 1 x0

1

要求:

1、 编制数值积分算法的程序;

2、 分别用两种算法计算同一个积分,并比较其结果;

3、 分别取不同步长h (b a)/n,试比较计算结果(如n = 10, 20等);

4、 给定精度要求ε,试用变步长算法,确定最佳步长。

二、问题分析

由上可知这四个积分找不到用初等函数表示的原函数,直接计算起来很困难,因此我们考虑利用函数在若干点得函数值,近似地计算该函数在一个区间上得定积分。这里采用的方法有三种:复合梯形公式,复合Simpson公式,Romberg算法。

三、实验程序及注释

1、复合梯形公式MATLAB程序: function I=T_quad(x,y)

%复化梯形求积公式,其中,

% x为向量,被积函数自变量的等距节点; % y为向量,被积函数节点处的函数值; n=length(x);m=length(y); if n~=m

error('the length of X and Y must be equal!'); return; end

h=(x(n)-x(1))/(n-1); a=[1 2*ones(1,n-2) 1]; I=h/2 * sum(a.*y);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2、复合Simpson公式MATLAB程序: function I=S_quad(x,y)

% x为向量,被积函数自变量的等距节点; % y为向量,被积函数节点处的函数值; n=length(x);m=length(y); if n~=m

error('the length of X and Y must be equal!'); return; end

if rem(n-1,2)~=0 %如果n-1不能被2整除,则调用复化梯形公式 I=T_quad(x,y); return; end

N=(n-1)/2;h=(x(n)-x(1))/N;a=zeros(1,n);

江西理工大学上数值分析期末实验

for k=1:N

a(2*k-1)=a(2*k-1)+1; a(2*k)=a(2*k)+4;

a(2*k+1)=a(2*k+1)+1; end

I=h/6*sum(a.*y);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3、Romberg算法MATLAB程序: function I=R_quad_iter(fun,a,b,ep) % Romberg求积公式,其中, % fun为被积函数;

% a,b为积分区间端点,要求a<b; % ep精度系数,缺省值为1e-5. if nargin < 4 ep=1e-5; end

m=1;h=b-a;

I=h/2*(feval(fun,a)+feval(fun,b));T(1,1)=I; while 1

N=2^(m-1);h=h/2;I=I/2; for i=1:N;

I=I+h*feval(fun,a+(2*i-1)*h); end

T(m+1,1)=I;M=2*N;k=1; while M>1;

T(m+1,k+1)=(4^k*T(m+1,k)-T(m,k)/(4^k-1)); M=M/2;k=k+1; end

if abs(T(k,k)-T(k-1,k-1))<ep break; end

m=m+1; end

I=T(k,k);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4、自适应步长梯形公式:

function I=R_quad_iter(fun,a,b,ep) % 梯形递推求积公式,其中, % fun为被积函数;

% a,b为积分区间端点,要求a<b; % ep精度系数,缺省值为1e-5. if nargin < 4 ep=1e-5;end; N=1;h=b-a;

T=h/2*(feval(fun,a)+feval(fun,b)); while 1

江西理工大学上数值分析期末实验

h=h/2;I=T/2; for k=1:N;

I=I+h*feval(fun,a+(2*k-1)*h); end

if abs(I-T)<ep break; end

N=2*N;T=I; end

对四个积分求解:

%

对I=

(I 1.5343916)求解

x=0:1/40:1/4;

y=sqrt(4-(sin(x)).^2); format long

I=T_quad(x,y) %调用复化梯形公式求得积分值I =0.49870482652029 I=S_quad(x,y) %调用复化辛普森公式求得积分值I =0.49871111844568 fun=inline('sqrt(4-(sin(x)).^2)');

I=R_quad_iter(fun,0,1) %调用龙贝格算法可得积分值I=0.498711118445678 x=0:1/400:1/4;

y=sqrt(4-(sin(x)).^2);

I=T_quad(x,y) %调用复化梯形公式求得积分值I = 0.49871105466684 I=S_quad(x,y) %调用复化辛普森公式求得积分值I = 0.49871111757532

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %对I=

sinx

(f(0) 1,I 0.9460831)求解: x0

1

x=0.1:0.1:1;

y=sin(x)./x %可以得到y值,由题可知f(0)=1。

y=[1 0.99833416646828 0.99334665397531 0.98506735553780 0.97354585577163 0.95885107720841 0.94107078899173 0.92031098176813 0.89669511362440 0.87036323291943 0.84147098480790]; x=0:0.1:1;

I=T_quad(x,y) %调用复化梯形公式可以求得I=0.94583207186691

I=S_quad(x,y) %调用复化辛普森公式求得积分值I= 0.94608316883807 x=0.01:0.01:1;%x使用不同的步长 y=sin(x)./x

I=T_quad(x,y) %调用复化梯形公式可以求得I=0.94608266887360

I=S_quad(x,y) %调用复化辛普森公式求得积分值I= 0.94608313833507

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ex

%对I= 求解: 2

4 x0

1

江西理工大学上数值分析期末实验

x=0:0.1:1;

y=exp(x)./(4+x.^2);

I=T_quad(x,y) %调用复化梯形公式可求得积分值I =0.39087531274504 I=S_quad(x,y) %调用复化辛普森公式求得积分值I= 0.39081195686445 x=0:0.01:1;%x使用不同的步长 y=exp(x)./(4+x.^2);

I=T_quad(x,y) %调用复化梯形公式可求得积分值I= 0.39081184557538 I=S_quad(x,y) %调用复化辛普森公式求得积分值I= 0.39081184557538

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %对I=

ln(1 x)

求积分: 2 1 x0

1

x=0:0.1:1;

y=log(1+x)./(1+x.^2);

I=T_quad(x,y) %调用复化梯形公式可求得积分值I =0.27128371750865 I=S_quad(x,y) %调用复化辛普森公式求得积分值I= 0.27220124573417 x=0:0.01:1;%x使用不同的步长 y=log(1+x)./(1+x.^2);

I=T_quad(x,y) %调用复化梯形公式可求得积分值I= 0.27218912310178 I=S_quad(x,y) %调用复化辛普森公式求得积分值I =0.27219826157968

%给定精度要求ε,试用变步长算法,确定最佳步长: fun=inline('sqrt(4-(sin(x)).^2)'); I=R_quad_iter(fun,0,1/4)

二、应用题

1.文学家要确定一颗小行星绕太阳运行的轨道,他在轨道平面内建立以太阳为原点的直角坐标系,在两坐标轴上取天文测量单位(一天文单位为地球到太阳的平均距离:9300万里)

在五个不同的时间对小行星作了五次观察,测得轨道上五个点的坐标数据如下表所示:

由开普勒第一定律知,小行星轨道为一椭圆,椭圆的一般方程可表示为:

现需要建立椭圆的方程以供研究。

江西理工大学上数值分析期末实验

(1)分别将五个点的数据代入椭圆一般方程中,写出五个待定系数满足的等式,整理后写

出线性方程组AX = b。

(2)用MATLAB求低价方程组的指令A \ b求出待定系数

(3)卫星轨道是一个椭圆,其周长的计算公式是:

c

s 4a1 sin2 d

a

2

式中,a是椭圆的半长轴,

距离,

径。

是地球中心与轨道中心(椭圆中心)的

。其中h为近地点距离,H为远地点距离,R = 6371(km)为地球半

有一颗人造卫星近地点距离h = 439 (km),远地点距离H = 2384(km)。试分别按下列方案计算卫星轨道的周长,误差限取为

三、要求

1、 编制数值积分算法的程序;

2、 对基本题,分别取不同步长h (b a)/n,试比较计算结果(如n = 10, 20

等), 并比较其结果;

4、 对应用题,用给定精度ε,试用(1)用逐次分半梯形法。(2)用逐次分半辛普生法,并确定最佳步长。

逐次梯形法的主函数程序:

function [jifen,num]=zhuci_tixing(a,b,tol) if (nargin==3) eps=1.0e-3; end delt=1; n=1; h=b-a;

T=h*(zhuci_tixing_f(a)+zhuci_tixing_f(b))/2; while delt>3*tol h=h/2;

江西理工大学上数值分析期末实验

T0=T; s=0; for i=1:n

x=a+h*(2*i-1); s=s+zhuci_tixing_f(x); end

T=T0/2+h*s; n=2*n; delt=T-T0; end jifen=T;

num=n; end

执行程序后的结果:

江西理工大学上数值分析期末实验

实验分析:

逐次分半的积分算法具有很高的精度,对于复杂的工程实践问题具有很高的应用价值。 同时,在利用复合梯形公式、复合Simpson公式以及Romberg算法等计算数值积分时,精度已经很高,并且随着步长越小,积分精度越高。另外,当给定一个精度的时候,我们还可以利用自适应步长法,确定所需要的最佳步长和结果。

同样在对比中可见:simpson公式的收敛速度比梯形公式的收敛速度快。

实验报告—数值分析.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)