当前位置:文档之家› 数值计算实验三(3.2)

数值计算实验三(3.2)

数值计算实验三(3.2)
数值计算实验三(3.2)

实验三(3.2教材P44)

一.实验目的

绘制飞机的降落曲线

一架飞机飞临北京国际机场上空时,其水平速度为540km/h ,飞行的高度为1000m 。飞机从距机场指挥塔的横向距离12000m 开始降落。根据经验,一架水平飞行的飞机其降落曲线是一条三次曲线。建立直角坐标系,设飞机的着落点为原点O ,降落的飞机为动点平(x,y),则x 表示飞机距指挥塔的距离,y 表示飞机的飞行高度,降落区曲线为y(x)=a 0+a 1x+a 2x^2+a 3x^3,该函数满足条件:y(0)=0; y(12000)=1000;y ’(0)=0;y ’(12000)=0

(1)试利用y(x)满足的条件确定三次多项式中的四个系数;

(2)用所求出的三次多项式函数绘制出飞机降落曲线。

二.实验原理

由于332210)(x a x a x a a x y +++=,所以2321)('x a x a a x y ++=,根据初始条件,可列出一个方程组UX=b ; X=[a 0 a 1 a 2 a 3]T ; b = [0 1000 0T 0],根据公式X=U -1b 即可求出X 。求出X 之后便可求出y(x)的表达式,然后画出它在区间[0,12000]上的图像。

三.实验结果

四.实验分析

在求解系数a0 a1 a2 a3时,由于计算时会出现舍入误差,所以求得的系数与准确值之间存在一定的误差,但由于误差很小所以对总体的影响也不大。

五.程序步骤

U=[1 0 0 0;1 12000 12000^2 12000^3;0 1 0 0;0 1 24000 3*12000^2];

b=[0 1000 0 0]';

X=inv(U)*b;

format long

X; %%以上的程序是为了求出多项式中的四个系数x=0:12000;

y=X(1)+X(2)*x+X(3)*x.^2+X(4)*x.^3; %%将所求出的系数代入多项式

plot(x,y,'.m');

xlabel('自变量x');

ylabel('因变量y');

title('飞机的降落曲线') %%确定xy轴以及标题

grid on

数值计算实验课题目

数值实验课试题 本次数值实验课结课作业,请按题目要求内容写一篇文章。按题目要求 人数自由组合,每组所选题目不得相同(有特别注明的题目除外)。试题如下: 1)解线性方程组的Gauss 消去法和列主元Gauss 消去法(2人)/*张思珍,巩艳华*/ 用C 语言将不选主元和列主元Gauss 消去法编写成通用的子程序,然后用你编写的程序求解下列84阶的方程组 ???? ?????? ? ??=??????????? ????????????? ? ?1415151515768 168 168 168 1681684 8382321 x x x x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 2)解线性方程组的平方根法(4人)/*朱春成、黄锐奇、张重威、章杰*/ 用C 语言将平方根法和改进的平方根法编写成通用的子程序,然后用你编写的程序求解对称正定方程组b Ax =,其中 (1)b 随机的选取,系数矩阵为100阶矩阵 ?????? ???? ? ? ?101 1101 1101 1101 1101110 ; (2)系数矩阵为40阶的Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为 1 1-+= j i a ij ,向量b 的第i 个分量为∑=-+ = n j i j i b 1 1 1. 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编

3.《数值分析简明教程》,王能超编 3)三对角线方程组的追赶法(3人)/*黄佳礼、唐伟、韦锡倍*/ 用C 语言将三对角线方程组的追赶法法编写成通用的子程序,然后用你编写的程序求解如下84阶三对角线方程组 ???? ?????? ? ??=??????????? ????????????? ? ?1415151515768 168 168 168 16816 84 8382321 x x x x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值分析简明教程》,王能超编 4)线性方程组的Jacobi 迭代法(3人)/*周桂宇、杨飞、李文军*/ 用C 语言将Jacobi 迭代法编写成独立的子程序,并用此求解下列方程组, 精确到小数点后5位 ???? ? ??=????? ??????? ? ?-149012 2111221 3 2 1 x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 5)线性方程组的Gauss-Seidel 迭代法(3人)/*张玉超、范守平、周红春*/ 用C 语言将Gauss-Seidel 迭代法编写成独立的子程序,并用此求解下列方程组,精确到小数点后5位 ???? ? ??=????? ??????? ? ?--39721 1111112 3 2 1 x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 6)解线性方程组的最速下降法法(2人)/*赵育辉、阿热孜古丽*/ 用C 语言将最速下降法编写成通用的子程序,然后用你编写的程序求解对称

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

曲线拟合的数值计算方法实验

曲线拟合的数值计算方法实验 【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。 关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束 一、实验目的 1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。 2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。 3.掌握实现曲线拟合的编程技巧。 二、实验原理 1.曲线拟合 曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。用解析表达式逼近离散数据的一种方法。在科学实验或社会活动中,通过 实验或观测得到量x与y的一组数据对(X i ,Y i )(i=1,2,...m),其中各X i 是彼此不同的。人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x,c)来反映量x与y之间的依赖关系,即在一定意义下“最佳”地逼近或 拟合已知数据。f(x,c)常称作拟合模型,式中c=(c 1,c 2 ,…c n )是一些待定参 数。当c在f中线性出现时,称为线性模型,否则称为非线性模型。有许多衡量拟合优度的标准,最常用的一种做法是选择参数c使得拟合模型与实际观测值在

数值计算实验报告

2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:安元龙 学号:2012060501 成绩:

数值计算方法与算法实验报告 学期: 2014 至___2015 第 1 学期 2014年 10月26日课程名称:__数值计算方法与算法 __ 专业:信息与计算科学 12级5班实验编号: 1实验项目Neton插值多项式指导教师__孙峪怀姓名:安元龙学号: 2012060501 实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页) 1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)/(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp/*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)*/ Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. #include #define MAX_N 20 typedef struct tagPOINT { double x; double y; }POINT; int main() { int n; int i,j; POINT points[MAX_N+1];double diff[MAX_N+1]; double x,tmp,newton=0;

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

实验三 MATLAB 数值计算(2)

实验三 MATLAB 数值计算 一、实验目的: 熟悉MATLA B多项式的运用。 (1)多项式的求值、求根和部分分式展开 (2)多项式的乘除法和微积分 (3)多项式拟合和插值 二、实验内容和步骤: 1. 多项式求值 函数polyval可以用来计算多项式在给定变量时的值,是按数组运算规则进行计算的。 语法: polyval(p,s) 说明:p为多项式, s为给定矩阵。 【例1】计算p(x)= 3x2+2x+1多项式的值。 p = [3 2 1]; polyval(p,2) %计算x=2时多项式的值 ans = 17 x=0:0.5:3; polyval(p,x) %计算x为向量时多项式的值 ans = 1.0000 2.7500 6.0000 10.7500 17.0000 24.7500 34.0000 2. 多项式求根 ?roots用来计算多项式的根。 语法: r=roots(p) 说明:p为多项式;r为计算的多项式的根,以列向量的形式保存。 ?与函数roots相反,根据多项式的根来计算多项式的系数可以用poly函数来实现。 语法: p=poly (r) 【例2】计算多项式p(x)= x3-6x2-72x-27的根以及由多项式的根得出系数。 p = [1 -6 -72 -27] roots(p) %计算多项式的根 ans = 12.1229 -5.7345 -0.3884 poly([ 12.1229;-5.7345;-0.3884]) %计算多项式的系数

ans = 1.0000 -6.0000 -7 2.0000 -27.0011 3. 特征多项式 对于一个方阵s ,可以用函数poly 来计算矩阵的特征多项式的系数。特征多项式的根即为特征值,用roots 函数来计算。 语法: p=poly (s) 说明:s 必须为方阵;p 为特征多项式。 【例3】 根据矩阵来计算的特征多项式系数。 A =[1 2 3;4 5 6;7 8 0] p = poly(A) A = 1 2 3 4 5 6 7 8 0 p = 1.0000 -6.0000 -7 2.0000 -27.0000 r = roots(p) r = 12.1229 -5.7345 -0.3884 程序分析:p= x 3-6x 2-72x-27为矩阵A 的特征多项式,12.1229, -5.7345和-0.3884为矩阵s 的特征根。 4. 部分分式展开 用residue 函数来实现将分式表达式进行多项式的部分分式展开。 k(s)n p s n r 2p s 2r 1p s 1r A(s)B(s)+-++-+-= 语法: [r,p,k]=residue(b,a) 说明:b 和a 分别是分子和分母多项式系数行向量;r 是[r 1 r 2 …r n ]留数行向量;p 为[p 1 p 2 …p n ]极点行向量;k 为直项行向量。 【例4】 将表达式 进行部分分式展开。 b = [ 5 3 -2 7] a = [-4 0 8 3]

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

线性方程组AX=B的数值计算方法实验

线性方程组A X=B的数值计算方法实验 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

线性方程组AX=B的数值计算方法实验 学号:姓名:梁哲豪 一、实验描述 在自然科学和工程技术中很多问题的解决常常归结为解线性代数方程组。例如电学中的网络问题,船体数学放样中建立三次样条函数问题,用最小二乘法求实验数据的曲线拟合问题,解非线性方程组问题,用差分法或者有限元法解常微分方程,偏微分方程边值问题等都导致求解线性方程组,而且后面几种情况常常归结为求解大型线性方程组。线性代数方面的计算方法就是研究求解线性方程组的一些数值解法与研究计算矩阵的特征值及特征向量的数值方法。 关于线性方程组的数值解法一般有两类: 直接法:若在计算过程中没有舍入误差,经过有限步算术运算,可求得方程组的精确解的方法。 迭代法:用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有占存储单元少,程序设计简单,原始系数矩阵在迭代过程中不变等优点,但存在收敛性及收敛速度等问题。 上三角线性方程组的求解: 基本算法: 高斯消元法:将原方程组化为三角形方阵的方程组: l ll=l ll/l ll l ll=l ll?l ll?l ll (k=1,2,…,n-1; i=k+1,k+2, …,n ;j=k+1,k+2, …,n+1)

由回代过程求得原方程组的解: l l=l ll+1/l ll l l=(l ll+1?∑l ll l l)/l ll LU分解法: 将系数矩阵A转化为A=L*U,L为单位下三角矩阵,U为普通上三角矩阵,然后通过解方程组l*y=b,u*x=y,来求解x。 二、实验内容 1、许多科学应用包含的矩阵带有很多零。在实际情况中很重要的三角形线性方程组有如下形式: …… 构造一个程序求解三角形线性方程组。可假定不需要变换。而且可用第k行消去第k+1行的 x。 k 核心代码: #include #include #include #define N 4//矩阵阶数 void ColPivot(double c[N][N+1],double[]);//函数声明 void main(){ int i,j; double x[N]; double c[N][N+1]={1,3,5,7,1,

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值实验题目

数值计算实验重庆大学数理学院 信息与计算科学系 董海云 2009年9月4日

实验一 线性方程组的数值解法 1.实验目的: (1)高斯列主元消去法求解线性方程组的过程 (2)熟悉用迭代法求解线性方程组的过程 (3)设计出相应的算法,编制相应的函数子程序 2.实验内容 分别用高斯列主元消去法 ,Jacobi 迭代法,Gauss--Saidel 迭代法,超松弛迭代法求解线性方程组 ????? ???????-=????????????????????????------7251013914443211312433010 24321x x x x 3、 实验原理 写出本次实验所用算法的算法步骤叙述或画出算法程序框图 4.实验环境及实验文件存档名 写出实验环境及实验文件存档名 3、 实验结果及分析 输出计算结果,结果分析和小结等。 实验二、 求特征值 1实验目的:学会 方法求特征值 2.实验内容: (1)设计古典Jacobi 方法算法,编制并调试相应的函数子程序 (2)运用该程序求下列矩阵的特征值 3.实验原理 写出本次实验所用算法的算法步骤叙述或画出算法程序框图 4.实验环境及实验文件存档名 写出实验环境及实验文件存档名 5.实验结果及分析 输出计算结果,结果分析和小结等。 实验三 插值方法实验目的: (1) 学会拉格朗日插值、牛顿插值等基本方法 (2) 设计出相应的算法,编制相应的函数子程序 (3) 会用这些函数解决实际问题 , 35.05.05.025.05.05.01? ???? ??=A

2.实验内容 (1)设计拉格朗日插值算法,编制并调试相应的函数子程序 (2)设计牛顿插值算法,编制并调试相应的函数子程序 (3)给定函数四个点的数据如下: 试用拉格朗日插值确定函数在x=2.101,4.234处的函数值。 (4)已知, ,,392411===用牛顿插值公式求5的近似值。 3.实验原理 写出本次实验所用算法的算法步骤叙述或画出算法程序框图 4.实验环境及实验文件存档名 写出实验环境及实验文件存档名 5.实验结果及分析 输出计算结果,结果分析和小结等。 实验四 数值微积分 1.实验目的: (1)学会复化梯形、复化辛浦生求积公式的应用 (3)设计出相应的算法,编制相应的函数子程序 (4)会用这些函数解决实际问题 2.实验内容 (1)设计复化梯形公式求积算法,编制并调试相应的函数子程序 (2)设计复化辛浦生求积算法,编制并调试相应的函数子程序 (4)分别用复化梯形公式和复化辛浦生公式计算定积分 ?10 sin dx x x 取n=2,4,8,16,精确解为0.9460831 3、 实验原理 写出本次实验所用算法的算法步骤叙述或画出算法程序框图 4.实验环境及实验文件存档名 写出实验环境及实验文件存档名 5.实验结果及分析 输出计算结果,结果分析和小结等。 实验五 常微分方程的数值解法 1.实验目的: (1)学会四阶龙格-库塔方法的使用 (2)设计出相应的算法,编制相应的函数子程序 (3)会用这些函数解决实际问题 2.实验内容

数值计算方法实验5

实验报告 学院(系)名称: 主程序部分列选主元部分

实验结果: 一.列主元消去法 输入各个数据,最终使用列选主元法,得到结果为:x1=x2=x3=1二.高斯-赛德尔迭代法 输入各个数据,输出每一步迭代数据,最终结果为:x1=0.285716,附录(源程序及运行结果) 一.列主元高斯消去法 #include #include void print(double a[3][3],int n,double b[3]){ printf("输出矩阵:\n"); for(int i=0;ifabs(d)){ d=a[i][k]; l=i; } i++; } printf("选出主元:%lf\n",d); if(d==0) printf("矩阵奇异!\n"); else if(l!=k){ for(int j=k;j

数值计算实验二报告

贵州师范大学数学与计算机科学学院学生实验报告 课程名称: 数值分析 班级:数学专业2班 实验日期: 2013年 9月 26 日 学 号: 姓名: 指导教师: 杨 一 都 实验成绩: 一、实验名称 实验二: Lagrange 插值与曲线拟合的最小二乘法 二、实验目的及要求 1.让学生掌握Lagrange 插值与曲线拟合的最小二乘法 2.让学生能够用这些方法解决一些实际问题 三、实验环境 每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0). 四、实验内容 题1: 对函数211)(x x f += ,取n+1个等距分布的插值节点,取不同的n ,作n 次Lagrange 插值,把)(x f 和插值多项式的图象绘制在同一张图上进行比较. 题 曲线拟合较好?为什么?你能找出更好的拟合曲线吗? 提示:用残差平方的大小来判断拟合的优劣,越小越好. 五、算法描述及实验步骤 1. (1)算法描述: 画出2 11)(x x f +=的原函数图像与它的Lagrange 多项式插值图像在同一 图上进行比较。 (2)实验步骤: ①.在M-file 编辑窗口编辑Lagrange 插值M 文件; ②.画出f(x)原函数图像; ③.在命令窗口调用Lagrange 插值取n=10画拟合图像; ④.观察比较两个图像。 2. (1)利用最小二乘法对给定数据点分别画一次,二次和三次多项式拟合曲线。 (2)实验步骤: a.输入数据点; b.建立一个划分为四个部分的图像窗口; c.画一次多项式拟合图像在第一部分; d.画二次多项式拟合图像在第二部分;

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

数值分析实验题目及解答

内容包括: 实验题目1:算法的数值稳定性实验 实验题目2:LU分解实验 实验题目3:三次样条插值外推样条实验 实验题目4:第二类Fredholm 积分方程实验实验题目5:M级显式R_K法

实验题目:算法的数值稳定性实验 实验内容:计算积分()1 0()d 1515n x I n x a x ==+? (n=1,2,…,20) 易得到下面递推公式 ()()1 1I n aI n n =--+ 并有估计式 ()() ()() 1 1 111I n a n a n << +++ 计算方法: 算法一:采用下面递推公式计算: ()()1 1I n aI n n =--+ ()1,2,,20 n = 取初值()116 0ln ln 15a I a +== 算法二: 采用下面递推公式计算: ()()111I n I n a n ??-= -+???? ()20,19,,1 n =

结果分析:(分析哪个好哪个不好,原因是什么) 我觉得算法二比较好, 原因一:根据式 ()() ()() 1 1 111I n a n a n << +++得知,I(n)不可能小于 零,而算法一的计算结果有部分结果小于零。原因二:对算法一记初始误差 ε0=/I 0-I(0)/>0; 则εn =/I n -I(n)/=a/I n-1-I(n-1)/=a n *ε0 由此可知,当n=20时, ε20把ε0放大了a 20倍,其结果造成严重的。 而对于算法二^ ^ 11n n a εε-= ,…, ^ ^ 01 n n a εε=,尽管有初始误差^ 20ε,但随着计算的进程,这个误差的影响不断减小。 附:源程序:(把源程序附上) 算法一程序: >> format long >> a=15;I=log(16/15); for n=1:20 n I=-a*I+1/n end 算法二程序: >> format long >> a=15;I=31/10080; >> for n=20:-1:1 n I I=1/a*(-I+1/n); End

(完整版)数值计算方法上机实习题答案

1. 设?+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-=Λ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与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]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

现代数值计算方法实验三

实验报告 实验三 插值法与拟合实验 一、实验目的 1、懂得利用数据建模两种方法(插值法和拟合多项式法)对一批数据()11,y x , ()22,y x ,……,()n n y x ,进行处理,学会对数据的结果进行误差分析. 2、比较分析这些方法的优缺点,并且在适合的场合应用相应的方法. 二、实验题目 1. 插值效果的比较 实验题目:将区间][5,5-10等分,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与()x f y =的图形进行比较: )2 11x x f += ; ()x x f a r c t a n =; ()4 21x x x f += . (1) 做拉格朗日插值; (2) 做三次样条插值. 2. 拟合多项式实验 实验题目:给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数(i x ,i y )和拟合函数的图形. 三、实验原理 数据建模有两大方法:一类是插值方法,要求所要函数()x ?严格遵守从数 据()11,y x ,()22,y x ,……,()n n y x ,;另一类是拟合方法,允许函数()x ?在数据点上的有误差,但是要求达到某种误差指标的最小化.

第一题 ⑴拉格朗日插值算法原理 %malagr.m function yy=malagr(x,y,xx) %用途:拉格朗日插值法求解 %格式:yy=malagr(x,y,xx), x是节点向量,y是节点对应的函数值向量,% xx是插值点(可以是多个),,yy返回插值结果 m=length(x);n=length(y); if m~=n, error('向量x与y的长度必须一致');end s=0; for i=1:n t=ones(1,length(xx)); for j=1:n if j~=i t=t.*(xx-x(j))/(x(i)-x(j)); end end s=s+t*y(i); end yy=s; end ⑵三次样条插值算法原理: %maspline.m function m=maspline(x,y,dy0,dyn,xx) %用途:三阶样条插值(一阶导数边界条件) %格式:m=maspline(x,y,dy0,dyn,xx), x为节点向量,y为数据, %dy0,dyn为左右两端点的一阶导数如果xx缺省,则输出各节点的 %的一阶导数值,,m为xx的三阶样条插值

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

数值计算方法实验3

学院(系)名称:

附录(源程序及运行结果): 一.变步长梯形法 #include #include double f(double x){return 4/(1+x*x);} void main(){ double a,b,h,T1,T2,e,S,x; printf("请输入区间a和b:"); scanf("%lf,%lf",&a,&b); printf("精度:"); scanf("%lf",&e); h=b-a; T2=h/2*(f(a)+f(b)); do{ T1=T2; S=0; x=a+h/2; do{ S=S+f(x); x=x+h; }while(x=e); printf("用变步长梯形法输出T2:%lf\n",T2); } 运行结果: 二.龙贝格积分法 #include #include double f(double x){return sin(x);} void main(){ double a,b,h,T1,T2=1,e,S,S1,S2=1,x,C1,C2,R1=0,R2=1; printf("请输入区间a和b:"); scanf("%lf,%lf",&a,&b); printf("精度:"); scanf("%lf",&e); h=2*(b-a); T2=(b-a)/2*(f(a)+f(b)); int k=0; while(fabs(R2-R1)>=e){ k=k+1; h=h/2; T1=T2; S1=S2; S=0; x=a+h/2; do{S=S+f(x); x=x+h; }while(x

相关主题
文本预览
相关文档 最新文档