数值分析实验3计算142许莎莎 2014014517

数值分析实验三 专业班级:信计142 姓名:许莎莎 学号:2014014517 1)实验目的 掌握三种插值方法:牛顿多项式插值,三次样条插值,拉格朗日插值,并比较三种插值方法的优劣。编写牛顿多项式插值,三次样条插值,拉格朗日插值的程序编码,并在MATLAB软件中去实现 2)实验题目、内容、结果 1.已知函数在下列各点的值为 xi 0.2 0.4 0.6 0.8 1.0 f(xi) 0.98 0.92 0.81 0.64 0.38 试用4 次牛顿插值多项式P4(x)及三次样条函数S(x)(自然边界条件)对数据进行插值,用图给出{(xi,yi),xi=0.2+0.08i,i=0,1,11,10},P4(x),及S(x)。

牛顿插值多项式 function varargout=newtonliu(varargin) clear,clc x=[0.2 0.4 0.6 0.8 1.0]; fx=[0.98 0.92 0.81 0.64 0.38]; newtonchzh(x,fx); function newtonchzh(x,fx) n=length(x); fprintf('*****************²î·Ö±í*****************************\n'); FF=ones(n,n); FF(:,1)=fx'; for i=2:n for j=i:n FF(j,i)=(FF(j,i-1)-FF(j-1,i-1))/(x(j)-x(j-i+1)); end end for i=1:n fprintf('%4.2f',x(i)); for j=1:i fprintf('%10.5f',FF(i,j)); end fprintf('\n'); end

计算结果为:

xi f(xi) 一阶差商 二阶差商 三阶差商 四阶差商 0.20 0.980 0.40 0.920 -0.30000 0.60 0.810 -0.55000 -0.62500 0.80 0.640 -0.85000 -0.75000 -0.20833 1.00 0.380 -1.30000 -1.12500 -0.62500 -0.52083 所以有四次插值牛顿多项式为: P4(x)=0.98-0.3(x-0.2)-0.62500 (x-0.2)(x-0.4) -0.20833 (x-0.2)(x-0.4)(x-0.6)-0.52083 (x-0.2)(x-0.4)(x-0.6)(x-0.8) 三次样条插值 用三次样条插值函数由上题分析知,要求各点的M值:



06.7500-4.5000-3.7500-0MMMMM2.5000000020.50000000.50002.500000.50002.5000000 2

43210

function tgsanci(n,s,t) x=[0.2 0.4 0.6 0.8 1.0]; y=[0.98 0.92 0.81 0.64 0.38]; n=5 for j=1:1:n-1 h(j)=x(j+1)-x(j); end for j=2:1:n-1 r(j)=h(j)/(h(j)+h(j-1)); end for j=1:1:n-1 u(j)=1-r(j); end for j=1:1:n-1 f(j)=(y(j+1)-y(j))/h(j); end for j=2:1:n-1 d(j)=6*(f(j)-f(j-1))/(h(j-1)+h(j)); end d(1)=0 d(n)=0 a=zeros(n,n); for j=1:1:n a(j,j)=2; end r(1)=0; u(n)=0; for j=1:1:n-1 a(j+1,j)=u(j+1); a(j,j+1)=r(j); end b=inv(a) m=b*d' p=zeros(n-1,4); for j=1:1:n-1 p(j,1)=m(j)/(6*h(j)); p(j,2)=m(j+1)/(6*h(j)); p(j,3)=(y(j)-m(j)*(h(j)^2/6))/h(j); p(j,4)=(y(j+1)-m(j+1)*(h(j)^2/6))/h(j); end p

得到m=(0 -1.6071 -1.0714 -3.1071 0)T 即M0=0 ;M1= -1.6071;M2= -1.0714; M3= -3.1071; M4=0 则根据三次样条函数定义,可得:

S(x)= ]0.1,8.0[x)8.0(9.10.1 3036.38.00-x0.12.5893-]8.0,6.0[x6.0x3036.3x8.00857.4.60-x5893.2-x.800.8929-]6.0,4.0[x4.0x7508.4x6.04.6536 .40-x 8929.0x.601.3393- ]4.0,2.0[x)2.0(6536.44.0900.42.0 1.33934.00 3333333,)()()(),()()()(),()()()(,)()()(xxxxxxx

画牛顿插值以及三次样条插值图形 x=[0.2 0.4 0.6 0.8 1.0]; y=[0.98 0.92 0.81 0.64 0.38]; plot(x,y) hold on for i=1:1:5 y(i)=0.98-0.3*(x(i)-0.2)-0.62500*(x(i)-0.2)*(x(i)-0.4) -0.20833*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0.52083*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)*(x(i)-0.8) end k=[0 1 10 11] x0=0.2+0.08*k for i=1:1:4 y0(i)=0.98-0.3*(x(i)-0.2)-0.62500*(x(i)-0.2)*(x(i)-0.4) -0.20833*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0.52083*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)*(x(i)-0.8) end plot( x0,y0,'o',x0,y0 ) hold on y1=spline(x,y,x0) plot(x0,y1,'o') hold on s=csape(x,y,'variational') fnplt(s,'r') hold on gtext('三次样条自然边界') gtext('原图像') gtext('4次牛顿插值')

2.在区间[-1,1]上分别取难0、20用两组等距节点对龙格函数f(x)=2

1

1+25x 作

多项式插值及三样条插值,对每个n 值,分别画出插值函数及f(x)的图形。 建立M文件 多项式插值 function [C,D]=newpoly(X,Y) n=length(X); D=zeros(n,n) D(:,1)=Y' for j=2:n for k=j:n D(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))) m=length(C); C(m)= C(m)+D(k,k); end

当n=20时,在Command Window中输入以下的命令: clear,clf,hold on; X=-1:0.2:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.2:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 当n=20时,在Command Window中输入以下的命令:

clear,clf,hold on; X=-1:0.1:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.1:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 三样条插值 当n=10时,在Command Window中输入以下的命令: clear,clc X=-1:0.2:1; Y=1./(25*X.^2+1); dx0= 0.0739644970414201;dxn= -0.0739644970414201; S=csfit(X,Y,dx0,dxn) x1=-1:0.01:-0.5;y1=polyval(S(1,:),x1-X(1)); x2=-0.5:0.01:0;y2=polyval(S(2,:),x2-X(2)); x3=0:0.01:0.5; y3=polyval(S(3,:),x3-X(3)); x4=0.5:0.01:1;y4=polyval(S(4,:),x4-X(4)); plot(x1,y1,x2,y2,x3,y3,x4,y4, X,Y,'.')

合集下载

(完整版)数值分析答案第三章习题

(完整版)数值分析答案第三章习题
旧工艺有无显著差异( 0.05 )?
解:(1)建立假设 H0 : 0.973
n=100, x 2.62 ,s=0.06
(2)在 H0 成立的前提下,构造统计量
u x 0 ~ N (0,1)
s/ n
(3)给定 0.05 ,查得 u 1.96 ,使
2
p u u
2
(4)由样本计算,
x 62.24,s*2 404.77,问这天保险丝融化时间
分散度与通常有无明显差异( 1%)?假定融
化时间是正态母体。
解:(1)建立假设H0: 2 02 400
(2)在H
成立前提下,构造统计量
0
2
(n
1)s*2
02
~
2 (n 1)
(3)给定显著水平 0.01,查得
20.00(5 24) 45.559, 20.99(5 24) 9.886,使
:
2
2 0
1.62
s* 2.296
(2)在 H0 成立的前提下,构造统计量
2 (n 1)s* ~ 2 (n 1) 0
(3)给定 0.05 ,查得
2 (5) 14.49
2
1 2 (5) 1.237 2
(4)由样本计算,
2
6 2.296 2 1.62
12.355
2 (6) 14.49
确,收集到一组使用新安眠药的睡眠时间为
26.7,22.0,24.1,21.0,27.2,25.0,
23.4
试问:从这组数据能否说明新安眠药的睡眠时
间已达到新的疗效(假定睡眠时间服从正态分
布,取 0.05 )?
解:
x1 ~ (20.8,1.62 ) x2 ~ (, 22 )

数值分析与实验答案

数值分析与实验答案

数值分析与实验答案【篇一:数值分析实验报告(一)(完整)】2345【篇二:数值分析实验报告(matlab实现)】xt>实验课程名称数值分析开课实验室数学与统计学院实验室学院数学与应用数学专业班学生姓名学号开课时间2012 至 2013 学年第一学期1234【篇三:数值分析实验报告】线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和newton法及改进的newton法。

利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b)0且f(x)在(a,b)内仅有一实根,取中点一步步求得根的近似解,在满足精度要求时,即为所求的值。

newton法乃利用xk?1?xk?f(xk),由递推产生近似于真值的解,但newton法的初值选择好坏f(xk)直接影响迭代的次数甚至迭代的收敛与发散。

即若x0 偏离所求根较远,newton法可能发散的结论。

并且本实验中还利用利用改进的newton法求解同样的方程,且将结果与newton法的结果比较分析。

前言:(目的和意义)掌握二分法与newton法的基本原理和应用。

掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。

熟悉matlab语言编程,学习编程要点。

体会newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。

重复运行计算,直至满足精度为止。

《数值计算方法实验》课程实验教学大纲

《数值计算方法实验》课程实验教学大纲

《数值计算方法实验》课程实验教学大纲课程名称:数值计算方法实验(Numerical Method Experiments)课程编码:10020400410 课程负责人:课程性质:独立设课课程属性:专业基础实验课学时学分:总学时18 总学分0.5 实验学时18 实验学分0.5开出时间:三年级上学期适用专业:信息与计算科学综合性、设计性实验项目数1个,总学时:4 其中课内学时:4课外学时:0主笔人:审核人:、批准人:一、课程简介《数值计算方法》在信息与计算科学领域有着非常重要的地位,为计算机编程提供算法;对培养学生的抽象思维能力,提高学生的编程能力有很重要的作用;是为我系信息与计算科学专业高年级学生开设的一门重要课程,它为计算机及其相关专业人员解决数值计算方面的问题提供方法,对提高学生的利用计算机解决实际问题的能力有很大帮助。

《数值计算方法实验》作为《数值计算方法》课程的必要实践环节,其主要目的是让学生在学习理论教学中关于典型数学问题的数值求解方法后,能够构造求解该类问题数值解的算法,并编程上机实现算法,在上机过程中加强对算法的理解,并应用算法去解决实际问题,另外通过编程练习提高学生的程序设计能力。

本实验课程中涉及MATLAB软件、插值、数据拟合、数值积分、线性方程(非线性方程)求解、矩阵特征值特征根的计算、微分方程求解等方面的内容。

二、实验目的及要求本课程一共安排了8个实验,要求学生能够依据课本提供的理论方法设计相应的算法,并利用Matlab数学软件平台编写程序求解特定问题的数值解,并在计算机上调试,进而验证算法,并可利用调试成功的程序解决实际问题。

1.验证性实验实验一和实验二主要使学生掌握Matlab的软件环境,并能应用Matlab编写数值计算方面的程序及绘图。

实验三,四,六,七,八是让学生针对理论课中学习过的不同问题编程求解他们的数值解并在计算机上验证。

2.设计性实验实验五为设计性实验,要求学生自行针对特定问题设计算法,根据算法编写程序,并引导学生对实验结果进行观察,分析和归纳,进而猜想出一般结果三、实验方式及要求1、验证性实验以传授知识为主,要求学生掌握基础知识、基本技能。

数值分析实验报告

数值分析实验报告

function cubicspline12%第一类边界条件的三次样条插值,输出插值函数。

%其中x是节点向量,y是相应的函数值向量,fp1是原函数在第一个节点的一阶导数值,fpn是原函数在最后一个节点的一阶导数值.x=input('请输入插值节点:x=')y=input('请输入相应的函数值:y=')fp=input('请输入第二类边界条件,即在首尾两节点的二阶导数值:(fp1,fpn)=')fp1=fp(1);fpn=fp(2);n=length(x);h=diff(x);%h是一个向量,h(i)=x(x+1)-x(i)divdif=diff(y)./h; %计算差商f[x(i),x(i+1)]%下面求系数矩阵和常数项矩阵D=zeros(n,n);D(1,1)=2;D(1,2)=1;D(n,n-1)=1;D(n,n)=2;b=zeros(n,1);b(1)=6*((y(2)-y(1))/h(1)-fp1)/h(1);b(n)=6*((y(n-1)-y(n))/h(n-1)+fpn)/h(n-1);for i=2:n-1D(i,i)=2;D(i,i-1)=h(i-1)/(h(i)+h(i-1));D(i,i+1)=1-D(i,i-1);b(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1))/(h(i)+h(i-1));end%求M矩阵M=D\b%下面求次样条插值函数在各子区间上的系数,a(i,1),a(i,2),a(i,3),a(i,4)分别表示x^3,x^2,x和常数项的系数,及插值多项式%的表达式,未知数用t表示。

syms tfor i=1:n-1a(i,1)=(M(i+1)-M(i))/(6*h(i));a(i,2)=(x(i+1)*M(i)-x(i)*M(i+1))/(2*h(i));a(i,3)=0.5*x(i)^2*M(i+1)/h(i)-0.5*x(i+1)^2*M(i)/h(i)+(y(i+1)-y(i))/h(i)-(M(i+1)-M(i))*h(i)/6;a(i,4)=-x(i)^3*M(i+1)/(6*h(i))+x(i+1)^3*M(i)/(6*h(i))-x(i)*(y(i+1)-y(i))/h(i)+x(i)*(M(i+1)-M(i))*h(i)/6+y(i)-M(i)*h(i)^2/6;endxx=input('请输入自变量的值:xx=')m=length(xx);for k=1:mfor i=2:n-1if xx(k)<x(i)s=a(i-1,1)*t^3+a(i-1,2)*t^2+a(i-1,3)*t+a(i-1,4);yy(k)=a(i-1,1)*xx(k)^3+a(i-1,2)*xx(k)^2+a(i-1,3)*xx(k)+a(i-1,4)%zz=M(i-1)*(x(i)-xx)^3/6/h(i-1)+M(i)*(-x(i-1)+xx)^3/6/h(i-1)+(y(i-1)-M(i-1)*h(i-1)^2/6)*(x(i)-xx)/h(i-1)+(y(i)-M(i)*h(i-1)^2/6)*(-x(i-1)+xx)/h(i-1)breakendendif xx(k)>=x(n-1)yy(k)=a(n-1,1)*xx(k)^3+a(n-1,2)*xx(k)^2+a(n-1,3)*xx(k)+a(n-1,4)%zz=M(n-1)*(x(n)-xx)^3/6/h(n-1)+M(n)*(-x(n-1)+xx)^3/6/h(n-1)+(y(n-1)-M(n-1)%*h(n-1)^2/6)*(x(n)-xx)/h(n-1)+(y(n)-M(n)*h(n-1)^2/6)*(-x(n-1)+xx)/h(n-1)endend%画出节点函数的图形,样条插值函数的图形,以及点(xx,yy)hold onplot(x,y,'*');plot(xx,yy,'O');for i=1:n-1xi=x(i):(x(i+1)-x(i))/100:x(i+1);yi=a(i,1).*xi.^3+a(i,2).*xi.^2+a(i,3).*xi+a(i,4);plot(xi,yi,'r');endgtext({'*表示节点处的图形','红色曲线是三次样条多项式的图形'});hold off。

实验报告数值型数据(3篇)

实验报告数值型数据(3篇)

第1篇一、实验目的1. 学习数值型数据的处理方法;2. 掌握描述性统计指标的计算方法;3. 熟悉数值型数据的可视化展示方法。

二、实验背景本实验以某地区某年居民收入数据为例,对数值型数据进行处理和分析。

数据包括居民总收入、家庭人口数、平均每人收入等指标。

三、实验数据居民总收入(万元):20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100家庭人口数:4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20平均每人收入(万元):5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5四、实验步骤1. 数据清洗与整理- 检查数据是否存在缺失值、异常值等;- 对数据进行排序,便于后续分析。

2. 描述性统计分析- 计算居民总收入、家庭人口数、平均每人收入的均值、中位数、众数、极值、标准差等指标;- 分析数据的分布情况,如正态分布、偏态分布等。

3. 数值型数据可视化展示- 绘制居民总收入、家庭人口数、平均每人收入的柱状图、折线图、散点图等;- 分析数据之间的关系,如居民总收入与家庭人口数的关系、平均每人收入与家庭人口数的关系等。

五、实验结果与分析1. 描述性统计分析- 居民总收入均值:60.2万元- 居民总收入中位数:60万元- 居民总收入众数:60万元- 居民总收入极值:20万元和100万元- 居民总收入标准差:11.5万元- 家庭人口数均值:12.1- 家庭人口数中位数:12- 家庭人口数众数:12- 家庭人口数极值:4和20- 家庭人口数标准差:2.9- 平均每人收入均值:5万元- 平均每人收入中位数:5万元- 平均每人收入众数:5万元- 平均每人收入极值:5万元- 平均每人收入标准差:0通过描述性统计分析,可以看出居民总收入、家庭人口数、平均每人收入都呈正态分布,且均值、中位数、众数相等。

数值分析实验报告(计算二次方程的根)

数值分析实验报告(计算二次方程的根)

《数值分析》课程实验报告【实验内容与要求】为了精确计算所有情况下的二次方程0a 2=++c bx x的根,设a 0≠,04b 2>-ac ,构造算法和程序。

并计算下列二次方程的根:1.,032x2=--x2. ,010001.10000x2=++x3.0100001.100000x2=+-x【算法说明】1. 在a 不等于0的情况下,首先判断ac 4b 2-是否大于0,若ac 4b 2-小于0,则无实数根,若ac 4b2-大于0,则有两个不同的实数根21,x x 。

2. 在ac 4b 2-大于0的情况下,若,0b >则a b b 2ac4-x 21+-=acb b 4c 2x 22-+-=若,0b <则a b b 2ac4--x 21-=acb b 4-c 2x 22--=【源程序】#include<stdio.h> #include<math.h> void main() {double a,b,c;double x1,x2; double k;printf("请输入a,b,c: \n");scanf("%lf%lf%lf",&a,&b,&c);k=b*b-4*a*c;printf("%lf\n",k);if(a!=0)//a不为0{//判断b2-4ac是否大于0if(k<0){printf("无实数根");}else if(k>0)//当有实数根时{//判断b是否大于0if(b>0){x1=(-b+sqrt(k))/(2*a);x2=(2*c)/(-b+sqrt(k));printf("x1=%lf\nx2=%lf\n",x1,x2);}else if(b<0){x1=(-b-sqrt(k))/(2*a);x2=(2*c)/(-b-sqrt(k));printf("x1=%lf\nx2=%lf\n",x1,x2);}}}}【实验结果】该图为二次方程032x 2=--x 的两根 即:,0000000.164b 2>=-ac 000000.3,000000.1x 21=-=x该图为二次方程010001.10000x 2=++x 的两个根即:,0999999984b 2>=-ac999980.9999-,000100.0x 21=-=x该图为二次方程0100001.100000-x 2=+x 的两个根即:,0000000.9999999984b 2>=-ac 966146.99999,000010.0x 21=-=x【实验结果分析与说明】二次方程在04,0a 2>-≠ac b的情况下,若ac b 4b 2-≈,那么若,0b >则 024,-24b -x 2221≈-+-=≈--=a acb b x a b a ac b ,若,0b <则 aa acb b x a ac b b-24,024b -x 2221≈-+-=≈--=。

河北工业大学数值分析实验三实验四实验报告

数值分析实验报告指导老师:宛艳萍姓名:班级:学号:实验三 复化辛卜生法,龙贝格法1.实验名称:复化辛卜生法,龙贝格法2.实验目的1)通过实际计算体会各种方法的精确度。

2)会编写用复化辛卜生、龙贝格算法求定积分的程序。

3.算法描述1)用复化辛卜生法计算积分 dxx I ⎰+=12)1/(1算法:复化辛卜生公式为S n =h/6∑∑+-=+++)]()2/(4)([11k k kn k x f h x f xf ,计算过程为:1.令,/)(n a b h -= ),2/(1h a f s +=;02=s2.对1,,2,1-=n k计算),2/(11h kh a f s s +++=)(22kh a f s s ++=3.))(24)((6/21b f s s a f h s +++= 。

2)龙贝格算法计算dxxI ⎰+=102)1/(156e ε=-算法)((12/12∑-=++=n k k n n n x f h T T ;/)(n a b h n -= n k h k x )2/1(2/1+=+)(3/122n n n n T T T S -+= )_(15/122n n n n S S S C +=)(63/122n n n n C C C R -+=用事后估计法控制精度2|5e -6n n R R -< 。

4.源程序:1)/* 用复化辛卜生公式求积分 */ #include "stdio.h" float fx(float x){double f;f=1.0/(1.0+x*x); return f; } double fs(int n){double a=0.0,b=1.0,h,s,s1,s2=0; int i;h=(b-a)/n; s1=fx(a+h/2); for(i=1;i<n;i++){s1=s1+fx(a+i*h+h/2); s2=s2+fx(a+i*h);}s=(h/6.0)*(fx(a)+fx(b)+4*s1+2*s2);return s;}void main(){printf("实验三复化辛卜生法计算机112 耿向飞学号:112434\n");printf("s(2)=%lf\ns(4)=%lf\ns(8)= %lf",fs(2),fs(4),fs(8));}2)/* 龙贝格法 */#include "stdio.h"#include "math.h"#define E 2.71828182//被积函数f(x)double fx(double x){double f;f=1/(1+x*x);return f;}//梯形公式求tndouble tx(int n){double s3=0.0,h,t,b=1.0,a=0.0;int i;h=(b-a)/n;for(i=1;i<n;i++)s3=s3+fx(i*h);t=(h/2)*(fx(a)+fx(b)+2*s3);return t;} double s(int n){double s;s=tx(2*n)+(1.0/3.0)*(tx(2*n)-tx(n ));return s;}double c(int n){double c;c=s(2*n)+(1.0/15.0)*(s(2*n)-s(n)) ;return c;}double r(int n){double r;r=c(2*n)+(1.0/63.0)*(c(2*n)-c(n)) ;return r;}void main(){double rr,pp;int n=1;rr=r(n);pp=r(2*n)-r(n);printf("实验三龙贝格法计算机112 耿向飞学号:112434\n");printf("结果为:%.15lf 误差小于等于: %.15lf",rr,pp);}5.运行结果1)复化辛卜生公式2)龙贝格算法6.对算法的理解与分析:复化辛卜生公式和龙贝格算法适用于求数值积分,而且都能提高计算积分的精度龙贝格算法其实是在复化辛卜生公式递推的基础之上生成的一种精度高,而且收敛速度也较快的一种算法。

数值分析实验题和程序

一、实验3.1编制以函数{}n kk x=危机的多项式最小二乘拟合程序,并用于对表3.11中的数据作3次取权数1i w ≡,求拟合曲线3*kk k a xφ==∑中的参数{}k a 、平方误差2σ,并作离散数据{},i i x y 的拟合曲线*()y x φ=的图形。

程序代码: x0=-1:0.5:2;y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552]; n=3;alph=polyfit(x0,y0,n) %参数{a k } y=polyval(alph,x0);r=(y0-y)*(y0-y)' %平方误差2σ=r y=polyval(alph,x); x=-1:0.01:2; y=plot(x,y,'k--'); xlabel('x');ylabel('y0 * and polyfit.y--'); hold on;plot(x0,y0,'*');title('离散数据的3项拟合') gridon;实验结果:拟合函数*()y x φ=的图形:拟合曲线3*kkka xφ==∑中的参数{}k a中3210,,,a a a a依次为alph中的四个数值。

alph =1.9991 -2.9977 -0.0000 0.5491平方误差2σ=r。

r =2.1762e-005实验分析:最小二乘曲线拟合是在离散情形下的最佳平方逼近,拟合的曲线很光滑,而且所有的7个数值点均在曲线上,拟合效果很好;拟合的平方误差很小,为10-5量级。

二、实验3.2编制正交化多项式最小二乘拟合程序,并用于求解上题中的3次多项式最小二乘拟合问题,作拟合曲线的图形,计算平方误差,并与上题结果进行比较。

程序代码:x=-1:0.5:2;y=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];n=3;result=inputdlg({'请输入权向量w:'},'charpt-3',1,{'[1 1 1 1 1 1 1]'});w=str2num(char(result));m=length(x)-1;s1=0;s2=ones(1,m+1);v2=sum(w);d(1)=y*w';c(1)=d(1)/v2;for k=1:nxs=x.*s2.^2*w';a(k)=xs/v2;if(k==1)b(k)=0;elseb(k)=v2/v1;ends3=(x-a(k)).*s2-b(k)*s1;v3=s3.^2*w';d(k+1)=y.*s3*w';c(k+1)=d(k+1)/v3;s1=s2;s2=s3;v1=v2;v2=v3;endr=y.*y*w'-c*d'alph=zeros(1,n+1)T=zeros(n+1,n+2);T(:,2)=ones(n+1,1);T(2,3)=-a(1);if(n>=2)for k=3:n+1for i=3:k+1T(k,i)=T(k-1,i)-a(k-1)*T(k-1,i-1)-b(k-1)*T(k-2,i-2);endendendfor i=1:n+1for k=i:n+1alph(n+2-i)=alph(n+2-i)+c(k)*T(k,k+2-i);endendxmin=min(x);xmax=max(x);dx=(xmax-xmin)/(25*m);t=(xmin-dx):dx:(xmax+dx);s=alph(1);for k=2:n+1s=s.*t+alph(k);endplot(x,y,'x',t,s,'-');xlabel('x');ylabel('y');grid on;disp(alph);disp(r);实验结果:拟合曲线图形:参数{}k a 中3210,,,a a a a 依次为alph 中的四个数值:1.9991 -2.9977 -0.0000 0.5491 平方误差2σ=r :2.1762e-005实验分析:比较实验3.1和3.2的结果发现:对于同一个数据表,两种方法的拟合参数、误差均是相等的,表示这两种方法的拟合效果是一样的。

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。

即若x0 偏离所求根较远,Newton法可能发散的结论。

并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。

前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。

掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。

熟悉Matlab语言编程,学习编程要点。

体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk)产生逼近解x*的迭代数列{xk},这就是Newton法的思想。

当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。

另外,若将该迭代公式改进为xk?1?xk?rf(xk) 'f(xk)其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:本实验采用Matlab的M文件编写。

其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。

数值分析实验报告

end
%消元过程
fori=k+1:n
m=A(i,k)/A(k,k);
forj=k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*A(k,k);
end
det=det*A(n,n);
%回代过程
ifabs(A(n,n))<1e-10
flag='failure';return;
*x=(x0,x1….,xn),插值节点
*y=(y0,y1,…,yn);被插函数f(x)在插值节点处的函数值
*t求插值函数Pn(x)在t处的函数值
*返回值 插值函数Pn(x)在t处的函数值
*/
procedureNewton
forj=0to n
d1jyj;
endfor
forj=1to n
fori=j to n
[n,m]=size(A);nb=length(b)
%当方程组行与列的维数不相等时,停止计算,并输出出错信息
ifn~=m
error('The row and columns of matrix A must beepual!');
return;
end
%当方程组与右端项的维数不匹配时,停止计算,并输出错误信息
clear
fprintf('gauss-seidel迭代法')
x1_(1)=0;
x2_(1)=0;
x3_(1)=0;
fori=1:9
x1_(i+1)=7.2+0.1*x2_(i)+0.2*x3_(i);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档