1、前言一、上机实验目的 上机实验的目的是提高学生对算法的理解程度,并掌握用实用工具进行数值计算的方法,通过实践环节理解数值分析的应用和研究方法。 二、实验基本内容 本课程实验内容分为 6 个实验。学生可以在课内机时先完成指导书中给出的程序或验证算法,理解所学的知识,在此基础上再编写其他应用程序。指导书中的 15 个实验如下。 1拉格朗日插值法。2最小二乘拟合。 3数值积分。 4范数计算和 LU 分解。 5牛顿迭代法。 6龙格库塔法。 三、实验任务与时间安排 本课程是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术 进行编程练习。具体实践课时安排如下:实验序号周次 实验内容
2、拟实验时间实验形式 所需教师数所需实验仪器备注1 2,4 拉格郎日插值法 4 设计性 12 6 最小二乘拟合; 2 验证 13 8 数值积分; 2 验证 14 10 范数计算 2 验证 15 12 LU 分解 2 验证 16 14 牛顿迭代法 2 验证 17 16 龙格库塔法 2 验证 1实验指导书实验 1 拉格朗日插值法一、实验目的1 了解 lagrange 插值法的基本原理和方法;2 通过实例掌握用 MATLAB 求插值的方法;3 编程实现 lagrange 插值二、实验内容1在 matlab 中 command 窗口或新建 M 文件运行以下程序 x0=0.4 0.5 0.6 0.7 0.
3、8;%输入节点的 X 值 y0=-0.916291 -0.693147 -0.510826 -0.356675 -0.223144;%输入节点的 Y 值 T=interp1(x0,y0,0.54,linear); %对插值节点使用线性插值并计算 0.54 处的函数值,改变红色处的参数可得到不同的插值结果,可选项为cubic, nearest, spline等。 x=0.2:0.05:1.0;%从 0.2 开始到 1.0 每隔 0.05 取一个待求点 y=interp1(x0,y0,x,linear);%用插值法求出待求点对应的函数值 y plot(x0,y0,r*);%用红色星号标出插值点对
4、hold on;plot(x,y);%蓝色线为所得的插值函数图形2用 C 语言或 matlab 编写实现 lagrange 插值,要求:数据输入项(函数参数)为:插值节点及函数值,及待求点 x 的值输出为待求点 x 对应的函数值(程序流程图如下所示)输入 xi,yi,及 n,x,k=0y = 0P =1j=0,1nk=j?P = P*(x-xj)/(xk-xj)y = y+P*ykk=k+1输出 x,y kn三、实验步骤1开启软件平台MATLAB,编程可以选用自己熟悉的软件; 2根据各种数值解法步骤编写 M 文件3观察运行结果(数值或图形) ;四、实验要求与任务每个同学独立完成编程,并在课后提
5、交程序;同时验证 matlab 中相应函数的用法。实验 2 最小二乘拟合一、实验目的1 了解最小二乘拟合的基本原理和方法;2 掌握用 MATLAB 作最小二乘多项式拟合和曲线拟合的方法;3 通过实例学习如何用拟合方法解决实际问题,注意与插值方法的区别。4 了解各种参数辨识的原理和方法;5 通过范例展现由机理分析确定模型结构,拟合方法辨识参数,误差分析等求解实际问题的过程;二、实验内容1用 MATLAB 中的函数作一元函数的多项式拟合与曲线拟合;2用 MATLAB 中的函数作二元函数的最小二乘拟合,作出误差图;3针对预测和确定参数的实际问题,建立数学模型,并求解。三、实验步骤1开启软件平台MAT
6、LAB,开启 MATLAB 编辑窗口; 2根据各种数值解法步骤编写 M 文件3观察运行结果(数值或图形) ;四、实验要求与任务根据实验内容和步骤,完成以下具体实验 旧车价格预测某年美国旧车价格的调查资料如下表,其中 xi表示轿车的使用年数,y i表示相应的平均价格。试分析用什么形式的曲线来拟合上述的数据,并预测使用 4.5 年后轿车的平均价格大致为多少?xi 1 2 3 4 5 6 7 8 9 10yi 2615 1943 1494 1087 765 538 484 290 226 204多项式函数拟合:a,s=polyfit(xdata,ydata,n)其中 n 表示多项式的最高阶数,xda
7、ta,ydata 为将要拟合的数据,它是用数组的方式输入输出参数 a 为拟合多项式 11nnaxay 的系数 ,11na ,s为误差。另:多项式在 x 处的值 y 可用下面程序计算y=polyval(a,x),对上面给出的数据做多项式拟合,可取不同的 n 观测此时的误差,看取什么样的 n 较好。并在 matlab 中画出拟合曲线( 取拟合曲线上若干个点对,用 plot 命令实现)实验 3 数值积分一、实验目的1 了解数值积分的基本原理和方法;2 掌握用 MATLAB 求积分的方法;3 通过实例学习如何用几种方法求积分。4 了解书上介绍的几种数值积分的不同原理和方法;二、实验内容1用 MATLA
8、B 中的 QUAD 函数求出作业所示函数的数值积分;2用 MATLAB 中的 QUADL 函数求出作业中所示函数的数值积分。三、实验步骤1开启软件平台MATLAB ,开启 MATLAB 编辑窗口; 2根据各种数值解法步骤编写 M 文件3观察运行结果(数值或图形 );四、实验要求与任务根据实验内容和步骤,完成以下具体实验 根据提示计算积分dxe102实验提示:1 Quad 函数的使用方法,参数意义Q = QUAD(FUN,A,B)Fun 为待求积的函数A,B 为积分区间Quad 函数是使用误差为 10-6 的递归自适应 Simpson 公式计算 Fun 函数在 A,B 区间上的积分值。例子(摘自
9、帮助):求 dxx203511)首先,定义 myfun 函数为待求积函数function y = myfun(x)y = 1./(x.3-2*x-5);2)计算数值积分Q = quad(myfun,0,2);2 Quad8 函数的使用方法,参数意义Q = QUAD8(FUN,A,B)Fun 为待求积的函数A,B 为积分区间Quad8 函数是使用误差为 10-3 的递归自适应 Newton-Cotes 8 公式计算 Fun 函数在A,B 区间上的积分值。它是收敛速度比较高的一种方法,有些版本已经将此函数改为QUADL具体使用方法同 quad3 QUADL 函数的使用方法,参数意义Q = QUAD
10、L(FUN,A,B)Fun 为待求积的函数A,B 为积分区间Quad8 函数是使用自适应 Lobatto 求积公式计算 Fun 函数在 A,B 区间上的积分值。它也是收敛速度比较高的一种方法,具体使用方法同 quad注意,使用上面三个函数的时候 A,B ,Fun 函数的输出必须是以下三种类型的 float:,double,single实验 4 范数计算和 LU 分解一、实验目的1 了解矩阵范数的定义和常见的几种矩阵范数;2 掌握用直接法解线性方程组的常见几种方法;3 通过实例学习如何使用直接法中的 LU 分解求解线性方程组。4 掌握判断矩阵,线性方程组本身性质的方法条件数的计算;二、实验内容1
11、用 MATLAB 中的 NORM 函数求矩阵的范数;2用 MATLAB 中的 Cond 计算矩阵条件数;3用 MATLAB 中的 Chol 函数计算 Cholesky 分解(平方根) ,Lu 函数计算 Doolittle 分解。三、实验步骤1开启软件平台MATLAB ,开启 MATLAB 编辑窗口; 2根据各种数值解法步骤编写 M 文件3观察运行结果(数值或图形 );四、实验要求与任务根据实验内容和步骤,完成以下具体实验 实验:1 用 H=Hilb(n)函数生成一个 n 阶 hilbert 矩阵 H, (n=4)2 计算生成的矩阵 H 的范数3 计算 H 的条件数4 用平方根法分解 A6851
12、37A5 ,B,C 是否存在三角分解,若存在则用 LU764123,12B分解实现。实验 5 牛顿迭代法一、实验目的1 了解求解非线性方程的解的常见方法;2 掌握用二分法,迭代法解线性方程组;3 通过实例学习用牛顿法分解求解非线性方程。4 掌握判断迭代法,牛顿法收敛的条件,和收敛阶的计算;二、实验内容1 用牛顿迭代法求方程 在区间(1,5)之间的根。0634223xx三、实验步骤1用 C 语言或 matlab 完成编程2观察运行结果实验运行结果;四、实验要求与任务根据实验步骤,完成以下具体实验 实验:1 按照以下流程图完成牛顿迭代法x = newton( fname,dfname,x0,e,N )2 调用牛顿迭代法的函数计算实验内容中第一题。实验 6 龙格库塔法一、实验目的1 了解 matlab 中提供的求解常微分方程解的常见方法龙格库塔法的函数ODE45,ODE32 的使用方法;二、实验内容求解1)0(2x三、实验步骤1在 command 窗口中输入 help ode32 或者 help ode45 查看相关的函数调用格式和使用算法的情况2用函数求解实验内容的原函数,并画相应的图。四、实验要求与任务根据实验步骤,先观察帮助里面提供的例子,然后再求解实验内容