数值分析MATLAB上机实验
- 格式:docx
- 大小:132.55 KB
- 文档页数:21
数值分析上机实习报告学号:姓名:专业:联系电话:任课教师:序 (3)一、必做题 (4)1、问题一 (4)1.1 问题重述 (4)1.2 实验方法介绍 (4)1.3 实验结果 (5)2、问题二 (7)2.1 问题重述 (7)2.2 实验原理 (7)雅各比算法:将系数矩阵A分解为:A=L+U+D,则推到的最后迭代公式为: (8)2.3 实验结果 (8)二、选做题 (10)3、问题三 (10)3.1 问题重述 (10)3.2 实验原理 (10)3.3 实验结果 (11)总结 (11)序伴随着计算机技术的飞速发展,所有的学科都走向定量化和准确化,从而产生了一系列的计算性的学科分支,而数值计算方法就是解决计算问题的桥梁和工具。
数值计算方法,是一种研究并解决数学问题的数值近似解方法,是在计算机上使用的解数学问题的方法。
为了提高计算能力,需要结合计算能力与计算效率,因此,用来解决数值计算的软件因为高效率的计算凸显的十分重要。
数值方法是用来解决数值问题的计算公式,而数值方法的有效性需要根据其方法本身的好坏以及数值本身的好坏来综合判断。
数值计算方法计算的结果大多数都是近似值,但是理论的严密性又要求我们不仅要掌握将基本的算法,还要了解必要的误差分析,以验证计算结果的可靠性。
数值计算一般涉及的计算对象是微积分,线性代数,常微分方程中的数学问题,从而对应解决实际中的工程技术问题。
在借助MA TLAB、JA V A、C++ 和VB软件解决数学模型求解过程中,可以极大的提高计算效率。
本实验采用的是MATLAB软件来解决数值计算问题。
MA TLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,其对解决矩阵运算、绘制函数/数据图像等有非常高的效率。
本文采用MATLAB对多项式拟合、雅雅格比法与高斯-赛德尔迭代法求解方程组迭代求解,对Runge-Kutta 4阶算法进行编程,并通过实例求解验证了其可行性,使用不同方法对计算进行比较,得出不同方法的收敛性与迭代次数的多少,比较各种方法的精确度和解的收敛速度。
第三章数值计算3.1LU分解和恰定方程组的解Matlab矩阵的分解形式主要有:三角分解、正交化、特征值分解。
3.1.1LU三角分解、行列式和逆1、LU分解是利用Gaussian列主元消去法进行的。
为了保证主元消去策略的实施,一般来说,必须对被分解矩阵实施行置换因此有:LU=PA 式中L为主对角元为1的下三角矩阵,U是上三角矩阵,P是由0或1组成的行置换矩阵:[L UP]=lu(A)2、A-1=U-1L-1P Matlab根据以上算法编制了相应的指令:det(a) 求矩阵a的行列式inv(a) 求矩阵a的逆矩阵3.1.2恰定方程组的解在求解方程式,尽量不要使用inv(a)*b指令,而应采用a\b,后者计算速度比前者快,精确度高。
【例3.1.2-1】“求逆”法和“左除”法解恰定方程的性能对比(1)randn('state',0);A=gallery('randsvd',100,2e13,2); %产生条件数为2e13的100阶随机矩阵x=ones(100,1);b=A*x;(2)ticxi=inv(A)*b;ti=toc(3)tic;xd=A\b;td=toc;3.1.3矩阵特征值和矩阵函数矩阵A与向量x相乘,即表示矩阵对向量的变换(transformation),一般说来,向量在变换的作用下将发生旋转(rotation),反射(reflection)和放大缩小。
但对于任何一个矩阵来说,中存在那么一些特殊的向量,再对其变化的作用下,向量的方向不变,而仅长短发生变化。
这种向量就是所谓的特征向量(eigenvector),它满足方程 Ax=λx3.1.3.1特征值和特征向量的求取d=eig(a) 仅仅计算a的特征值[v d]=eig(a) 计算矩阵a的特征向量阵v和特征对角阵d,使av=vd成立。
【例3.1.3.1-1】简单实阵的特征值问题。
A=[1,-3;2,2/3];[V,D]=eig(A)V =0.7746 0.77460.0430 - 0.6310i 0.0430 + 0.6310iD =0.8333 + 2.4438i 00 0.8333 - 2.4438i3.2数据分析3.2.1 基本统计函数指令note: 1、median(x) 当x为向量时,先把x元素有小到大排列,然后在新排成数组中;n为奇取(n+1)/2个元素;n为偶数时取n/2与(n/2+1)元素的平均值,作为总位数。
数值分析上机实习报告专业:土木工程班级:学号:姓名:指导老师:联系电话:2015.12.12序言随着本学期逐渐接近尾声,我也逐渐掌握了数值分析的一些基本理论•本次上机作业是理论与实践的结合•本次作业使用了matlab与C++两种语言•其中matlab具有编程效率高,用户使用方便,方便的绘图功能的优点。
而C++是一种基本的编程语言,在实际的工程中也有广泛的应用。
本次作业根据题目的特点,结合两种语言各自的优势,采用了不同的方法。
其中牛顿法,Steffensen加速法采用了c语言。
插值与多项式拟合使用了两种语言。
Ru n ge-Kutt a 4阶算法仅使用了matlab编程。
本次作业注重问题的计算过程,分析总结,及编程。
由于所涉及原理课本均有详细陈述,在此不再赘述。
第一题 (3)1.1题目 (3)1.2计算过程和结果 (3)1.3结果分析 (3)第二题 (4)2.1题目 (4)2.2计算过程和结果 (4)2.3结果分析 (8)第三题 (8)3.1题目 (8)3.2问题求解及过程 (8)3.3结果分析 (9)总结 (10)附件 (11)第一题 (11)1.1.1第一问牛顿法 (11)1.1.2 第一问牛顿-Steffensen法 (11)1.2.1第二问牛顿法 (12)1.2.2 第二问牛顿-Steffensen法 (13)第二题 (14)2.1.1最小二乘法求解 (14)2.2.1拉格朗日差值多项式拟合 (15)2.2.2牛顿插值 (15)第三题 (17)3.1.1Runge-Kutta 4 阶算法 (17)1.1题目分别用牛顿法,及基于牛顿算法下的Steffe nsen加速法⑴求ln(x+sin x)=0的根。
初值x0分别取0.1, 1,1.5, 2, 4进行计算。
(2)求sin x=0的根。
初值x0分别取1,1.4,1.6, 1.8,3进行计算。
分析其中遇到的现象与问题。
1・2计算过程和结果1.对方程In(x+sinx)=O,可求解x+sinx=1的解。
方詡文金兴:爭[数值分析]2017-2018第二学期上机实习题1:编程计算亍丄,其中C= 4. 4942x10307,给出并观察计算结心C"果,若有问题,分析之。
解:mat lab 编程如下:E) funct ion diy i ti formatlong g;n 二input C 输入ii 值= c= 4.4942E307; sum 二0; s 二 0;E3 for i = l:n s = l/ (c*i);>> diyiti 输入n 值:10 104.6356e-308 >> diyiti输入ri 值:1001004.6356e-308 >> diyiti 输入n 值:1000 10004.6356e-308 >> diyiti揄入n 值* 1000001000004・ 6356e-308 >> diyiti输入n 值;1000000001000000004.6356e-308图二:运行结果Mat lab 中,forma t long g 对双精度,显示15位定点或浮点格式,由上图 可知,当输入较小的n 值5分别取10, 100, 1000, 100000, 100000000)的时候, 结果后面的指数中总是含有e-308,这和题目中的C 值很相似,我认为是由于分 母中的C 值相对于n 值过大,出现了 “大数吃小数”的现彖,这是不符合算法原 则的。
2:利用牛顿法求方程-1^ = 2于区间241的根,考虑不同初值下牛顿法的收敛情况。
解:牛顿法公式为:利用mat lab 编程function di2ti21 3i=l ;2 2.85208156699784 xO 二input ('输入初值x0:‘ );A 二[i x0];3 2.55030468822809 t=x0+ (x0-log (xO) -2) /(1-1/xO) ; %迭代函数4 1.91547247100476 三 while (abs (t _x0)>0.01)i=i+l; 5 0.37867158538991 xO 二 t; 6 0.774964959780275 A = [A;i xO];t =x0+(x0-log(xO)-2)/(1-1/xO): 7 4.11574081641933 cnd| 8 5.04162436446126 disp (A);96.81782826645596当输入初值二3的时候并不能收敛。
数值分析第三次上机实验报告学院班级:学生学号:学生姓名:同作者:实验日期:1.实验题目: P232 3.(1) 一、实验目的:设f(x)=1/x,(1)求f(x)在[1,2] 上的零次和一次最佳一致逼近多项式。
(2)求f(x)在[1,2] 上的零次和一次最佳平凡逼近多项式。
二、实验环境:1.matlab2014b/macOS Seirra2.G 楼机房三、实验内容及实验原理:1.零次最佳逼近多项式 原理1: ()()02M m P x +=所以f(x)=1/x 在[1,2]上的零次最佳一致逼近多项式()01132P 24x +== 原理2:()()()0000,,f P x ϕϕϕ=()101P x a a x =+f(x)=1/x 在[1,2]上的零次最佳平方逼近多项式()()()210020011,ln 2,dx f x P x dxϕϕϕ===⎰⎰ 2. 一次最佳逼近多项式 (1)一次最佳一致逼近多项式: 解:21'()f x x =- ,32''()0f x x =>∴ 1,2为交错点,设101P ()x a a x =+111()()12212f b f a a b a --===---且由112111'(),2f x x x =-=-=1111(1()()()322224f a f x a a xa-+++ =-==故得131P()42x x+=-(2)一次最佳平方逼近多项式解:设10101P(),1,x c c x xϕϕ=+==001000011111(,)(,)(,)=(,)(,)(,)c fc fϕϕϕϕϕϕϕϕϕϕ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦由0111,,x fxϕϕ===得:2001(,)1dxϕϕ==⎰221117(,)3x dxϕϕ==⎰2100113(,)(,)2xdxϕϕϕϕ===⎰2011(,)ln2f dxxϕ==⎰211(,)1f dxϕ==⎰得到法方程组:01013ln2237123c cc c⎧+=⎪⎪⎨⎪+=⎪⎩解之得:**01c8.9782,c0.4766==1P()8.97820.4766x x∴=+四、实验结果及其分析:经拟合结果无误。
刘力辉 2010210804011.“画圆为方”问题也是古希腊人所提出几何三大难题中的另一个问题。
即求作一个正方形,使其面积等于已知圆的面积。
不妨设已知圆的半径为 R = 1,试用数值试验显示“画圆为方”问题计算过程中的误差。
(1)MATLAB 程序:y=pi^(1/2); % to generate 15-bit value of square root of pi b=1; d=1; for k=1:8 b=b*10;d=d/10; % b and d combined to control the digit of x x=d*fix(b*y); s(k)=x^3; l(k)=x; endformat long [l',s'](2)误差分析:2. 设,I x xd x n n=+⎰501由 x n = x n + 5 x n – 1 – 5 x n – 1 可得递推式 I n = – 5I n – 1 + 1/ n(1)从 I 0 尽可能精确的近似值出发,利用递推公式:I I nn n =-+-511 ( n = 1,2,…20)计算从 I 1 到 I 20 的近似值;(2)从 I 30 较粗糙的估计值出发,用递推公式:I I nn n -=-+11515 ( n= 30,29, …, 3, 2 )计算从I 1 到 I 20 的近似值;(3) 分析所得结果的可靠性以及出现这种现象的原因。
I 0 =dx x⎰+1051=ln (5+x )10|=ln 6-ln 5 所以I0≈0.18232155679395format longI0=log2(6)/log2(exp(1))-log2(5)/log2(exp(1)) % calculate the value of I0=ln6-ln5 for n=1:20I0=-5*I0+1/n; % recycling equation between I(n+1) and I(n) s(n)=I0; end s'则计算结果为:表1I1 0.0883922160302300 I11 0.0140713362538500 I2 0.0580389198488700 I12 0.0129766520640700 I3 0.0431387340890000 I13 0.0120398166027400 I4 0.0343063295550100 I14 0.0112294884148600 I5 0.0284683522249700 I15 0.0105192245923700 I6 0.0243249055418100 I16 0.0099038770381400 I7 0.0212326151481100 I17 0.0093041442210800 I8 0.0188369242594600 I18 0.0090348344501700 I9 0.0169264898137900 I19 0.0074574066965100 I10 0.0153675509310500I20 0.0127129665174600从计算的数据看出I 20=0.0127129665174600 > I 19=0.0074574066965100又I n 的积分范围为0~1,所以应该有I n >I n+1。
电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析学生姓名:学号:指导教师:一、实验名称实验二 线性方程组求解和函数的数值逼近二、实验目的通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步的理解。
实验涉及的核心知识点:病态方程求解、矩阵分解和方程组求解、Lagrange 插值。
实验重点与难点:算法设计和MATLAB 编程三、实验内容1. 对高阶多项式()()()()()2011220k p x x x x x k ==---=-∏编程求下面方程的解()190p x x ε+=并绘图演示方程的解与扰动量ε的关系。
2. 对220n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量b 的方法,确定方程组()n H x b =最后,用矩阵分解方法求解方程组,并分析计算结果。
3. 对函数()21125f x x =+ []1,1x ∈-的Chebyshev 点()()21cos 21k k x n π⎛⎫-= ⎪ ⎪+⎝⎭,1,2,,1k n =+编程进行Lagrange 插值,并分析插值结果。
四、实验数据及结果分析1. 对高阶多项式()()()()()2011220k p x x x x x k ==---=-∏编程求下面方程的解()190p x x ε+=并绘图演示方程的解与扰动量ε的关系。
p=[1,-1]; for i=2:20 n=[1,-i];p=conv(p,n); % 求多项式乘积 endm=zeros(1,21); % m 的最高次幂为20,有21项 hold on x=1:20;d=[-1,0,0.1,0.5,1]; for i=1:5delt=d(i); m(2)=delt;y=(roots(p+m))'; % 求多项式的根 plot(x,y,'-o','color',[i/5,i/20,i/10]); endtitle('方程p(x)=0的解与扰动量delt 的关系')legend('delt=-1','delt=0','delt=0.1','delt=0.5','delt=1')24681012141618200102030405060方程p(x)=0的解与扰动量delt 的关系delt=-1delt=0delt=0.1delt=0.5delt=12.对220n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量b 的方法,确定方程组()n H x b =最后,用矩阵分解方法求解方程组,并分析计算结果。
实验1 MATLAB语言上机操作实践一、实验目的(1)了解MATLAB语言的主要特点及作用。
(2)熟悉MATLAB主界面,初步掌握MA TLAB命令窗和编辑窗的操作方法。
(3)重点掌握指令窗的基本操作方式和常用操作指令。
二、实验原理1、MATLAB的工作环境MATLAB由Math Works公司开发的一种跨平台的,用于矩阵数值计算的数学语言,取名MATLAB即Matrix Laboratory 矩阵实验室的意思。
它即是一种科学计算软件,主要适用于控制和信息处理领域的分析设计,也是一种以矩阵运算为基础的交互式程序语言,能够满足工程计算和绘图的需求。
与其它计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高,并且很容易由用户自行扩展。
因此,当前它已成为美国和其它发达国家大学教学和科学研究中必不可少的工具。
MATLAB语言自1988年推出3.x(DOS)版本,目前已发布了4.x、5.x、6.x、7.x等(Windows)版本。
随着版本的升级,内容也在不断扩充。
图1.1 MATLAB7.0集成环境MATLAB7.0集成环境如图1.1示,包括MA TLAB主窗口、命令窗口(Command Window)、工作空间窗口(Workspace)、当前目录窗口(Current Directory) 、命令历史窗口(Command History)等。
MATLAB的工作环境主要由命令窗(Command Windows)、文本编辑器(File Editor)、若干个图形窗(Figure Windows)及文件管理器组成。
MATLAB视窗采用了Windows视窗风格(如图1.2),各视窗之间的切换可用快捷键Alt+Tab。
使用MATLAB4.x以上的版本,可在Windows主界面上直接点击MATLAB图标,进入MATLAB 命令窗口。
2. MATLAB中如何获取帮助①“纯文本”帮助:help功能提供matlab大部分主题的在线帮助信息❑help help 显示如何使用help 的帮助信息❑help 显示help 主题分类列表❑help topic 显示具体主题下的函数名(FunName)列表,❑help FunName 获得具体函数或命令的用法说明例1:虽然help可以随时提供帮助,但必须知道准确的函数名称。
不动点迭代:运行结果:代码截图:牛顿迭代:运行结果:代码截图:1)运行结果:代码截图:a二分法运行结果:代码截图:牛顿法:运行结果:代码截图:弦位法:代码截图:第二次上机作业运行结果:代码截图:A欧拉方法运行结果:代码截图:B改进的欧拉方法运行结果:代码截图:C四阶龙格库塔方法:代码截图:第三次上机作业第6章:(7版)P368: 5(e), 8, 9Using1) Gaussian elimination2) Gaussian elimination with partial pivoting.3) Gaussian elimination with scaled partial pivoting and three-digit chopping arithmetic to solvethe following linear systems, and compare the approximations to the actual solution.1.19x1 +2.11x2 − 100x3 + x4 = 1.12,14.2x1 − 0.122x2 + 12.2x3 − x4 = 3.44,100x2 − 99.9x3 + x4 = 2.15,15.3x1 + 0.110x2 − 13.1x3 − x4 = 4.16.Actual solution [0.176, 0.0126,−0.0206,−1.18]解:1)高斯消元法运行结果代码截图:2)部分选主元高斯消元法运行结果:代码截图:3)具有比例因子部分选主元高斯消元法运行结果:代码截图:2.Solve Ax = b using the Crout factorization for tridiagonal systems. Let A be the 10×10 tridiagonal matrix given byaii = 2, ai,i+1 = ai,i−1 = −1, for each i = 2, . . . , 9and a11 = a10,10 = 2, a12 = a10,9 = −1.Let b be the ten-dimensional column vector given byb1 = b10 = 1 and bi = 0, for each i = 2, 3, . . . , 9.运行结果:代码截图:3.1)雅克比迭代运行结果:程序截图:2)GS迭代运行结果代码截图:3)SOR方法运行结果:代码截图:。
数值分析上机实验⽬录1 绪论 (1)2 实验题⽬(⼀) (2)2.1 题⽬要求 (2)2.2 NEWTON插值多项式 (3)2.3 数据分析 (4)2.3.1 NEWTON插值多项式数据分析 (4)2.3.2 NEWTON插值多项式数据分析 (6)2.4 问答题 (6)2.5 总结 (7)3 实验题⽬(⼆) (8)3.1 题⽬要求 (8)3.2 ⾼斯-塞德尔迭代法 (8)3.3 ⾼斯-塞德尔改进法—松弛法 (9)3.4 松弛法的程序设计与分析 (9)3.4.1 算法实现 (9)3.4.2 运算结果 (9)3.4.3 数据分析 (11)4 实验题⽬(三) (13)4.1 题⽬要求 (13)4.2 RUNGE-KUTTA 4阶算法 (13)4.3 RUNGE-KUTTA 4阶算法运算结果及数值分析 (14)总结 (16)附录A (17)1绪论数值分析是计算数学的⼀个主要部分,它主要研究各类数学问题的数值解法,以及分析所⽤数值解法在理论上的合理性。
实际⼯程中的数学问题⾮常复杂,所以往往需要借助计算机进⾏计算。
运⽤数值分析解决问题的过程:分析实际问题,构建数学模型,运⽤数值计算⽅法,进⾏程序设计,最后上机计算求出结果。
数值分析这门学科具有⾯向计算机、可靠的理论分析、好的计算复杂性、数值实验、对算法进⾏误差分析等特点。
本学期开设了数值分析课程,该课程讲授了数值分析绪论、⾮线性⽅程的求解、线性⽅程组的直接接法、线性⽅程组的迭代法、插值法、函数逼近与曲线拟合、数值积分和数值微分、常微分⽅程初值问题的数值解法等内容。
其为我们解决实际数学问题提供了理论基础,同时我们也发现课程中很多问题的求解必须借助计算机运算,⼈⼯计算量太⼤甚⾄⽆法操作。
所以学好数值分析的关键是要加强上机操作,即利⽤计算机程序语⾔实现数值分析的算法。
本报告就是基于此⽬的完成的。
本上机实验是通过⽤计算机来解答数值分析问题的过程,所⽤的计算⼯具是⽐较成熟的数学软件MATLAB。
第二次上机作业一. 任务:用MATLAB 语言编写连续函数最佳平方逼近的算法程序(函数式M 文件)。
并用此程序进行数值试验,写出计算实习报告。
二. 程序功能要求:在后面的附一leastp.m 的基础上进行修改,使其更加完善。
要求算法程序可以适应不同的具体函数,具有一定的通用性。
所编程序具有以下功能:1. 用Lengendre 多项式做基,并适合于构造任意次数的最佳平方逼近多项式。
可利用递推关系 0112()1,()()(21)()(1)()/2,3,.....n n n P x P x xP x n xP x n P x n n --===---⎡⎤⎣⎦=2. 被逼近函数f(x)不用内联函数构造,而改用M 文件建立数学函数。
这样,此程序可通过修改建立数学函数的M 文件以适用不同的被逼近函数(要学会用函数句柄)。
3. 要考虑一般的情况]1,1[],[)(+-≠∈b a x f 。
因此,程序中要有变量代换的功能。
4. 计算组合系数时,计算函数的积分采用变步长复化梯形求积法(见附三)。
5. 程序中应包括帮助文本和必要的注释语句。
另外,程序中也要有必要的反馈信息。
6. 程序输入:(1)待求的被逼近函数值的数据点0x (可以是一个数值或向量)(2)区间端点:a,b 。
7. 程序输出:(1)拟合系数:012,,,...,n c c c c(2)待求的被逼近函数值00001102200()()()()()n n s x c P x c P x c P x c P x =++++三:数值试验要求:1. 试验函数:()cos ,[0,4]f x x x x =∈+;也可自选其它的试验函数。
2. 用所编程序直接进行计算,检测程序的正确性,并理解算法。
3. 分别求二次、三次、。
最佳平方逼近函数)x s (。
4. 分别作出逼近函数)x s (和被逼近函数)(x f 的曲线图进行比较。
(分别用绘图函数plot(0x ,s(0x ))和fplot(‘x cos x ’,[x 1 x 2,y 1,y 2]))四:计算实习报告要求:1.简述方法的基本原理,程序功能,使用说明。
Matlab上机实习实习报告十八周我们进行了本学期的第二次实习——Matlab上机实习。
本次实习一星期,共实习了五个部分。
分别是:一,Matlab基本操作;二,数值数组及其运算;三,Matlab图形绘制基础;四:SIMULINK仿真基础;五:句柄图形和图形用户界面制作。
下面分别介绍各部分内容:实习内容一Matlab基本操作1.实习目的:●掌握Matlab的启动和退出;●熟悉的命令窗口;●熟悉其它常用窗口和工具栏;2.输入一段程序:t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,’-r’,t,y0,’:b’,t,-y0,’:b’)输出结果:3.了解文件中的一些功能和指令.例如:clear 清除当前工作区中所有变量clc 清除指令窗内容clf 清除图形窗口cd 设置当前工作目录exit,quit 退出MATLAB实习内容二数值数组及其运算1.实习目的●掌握一维数组的创建和寻访●掌握二维数组的创建和寻访●掌握MATLAB的矩阵和数组的运算●熟悉MATLAB关系操作和逻辑操作2.要求在闭区间[0,2pi]上产生50个等距采样的一维数组A,试用两种不同的指令实现。
要访问1到5元素如何实现;寻访7到最后一个元素如何实现;寻访第2.6.8个元素如何实现;寻访大于2的元素如何实现;给第3.5.9个元素赋值100如何实现:(1)>> A=linspace(0,2*pi,50);>> A=0:(50/49):50;>> AA =Columns 1 through 90 1.0204 2.0408 3.0612 4.0816 5.1020 6.1224 7.1429 8.1633Columns 10 through 189.1837 10.2041 11.2245 12.2449 13.2653 14.2857 15.3061 16.3265 17.3469Columns 19 through 2718.3673 19.3878 20.4082 21.4286 22.4490 23.4694 24.4898 25.5102 26.5306Columns 28 through 3627.5510 28.5714 29.5918 30.6122 31.6327 32.6531 33.6735 34.6939 35.7143Columns 37 through 4536.7347 37.7551 38.7755 39.7959 40.8163 41.8367 42.8571 43.8776 44.8980Columns 46 through 5045.9184 46.9388 47.9592 48.9796 50.0000(2)>> whos A>> A(1:5)ans =0 1.0204 2.0408 3.0612 4.0816(3)>> A(7:50)ans =Columns 1 through 86.12247.14298.16339.1837 10.2041 11.2245 12.2449 13.2653Columns 9 through 1614.2857 15.3061 16.3265 17.3469 18.3673 19.3878 20.4082 21.4286Columns 17 through 2422.4490 23.4694 24.4898 25.5102 26.5306 27.5510 28.5714 29.5918Columns 25 through 3230.6122 31.6327 32.6531 33.6735 34.6939 35.7143 36.7347 37.7551Columns 33 through 4038.7755 39.7959 40.8163 41.8367 42.8571 43.8776 44.8980 45.9184Columns 41 through 4446.9388 47.9592 48.9796 50.0000(4)>> A([2 6 8])ans =1.0204 5.1020 7.1429(5)>> poison=find(A>2)poison =Columns 1 through 143 4 5 6 7 8 9 10 11 12 13 14 15 16Columns 15 through 2817 18 19 20 21 22 23 24 25 26 27 28 29 30Columns 29 through 4231 32 33 34 35 36 37 38 39 40 41 42 43 44Columns 43 through 4845 46 47 48 49 50 (6)>> A([3 5 9])=100 (7)>> A=[1 2 3;4 5 6] A =1 2 3 4 5 63. 在指令窗口输入A=[1 2 3;4 5 6] 观察结果:分别用“全坐标”“单坐标”来寻访第2行第1列的元素,并说明二维数组元素的存储顺序。
MATLAB上机报告专业:姓名:学号:一、向量运算1.1向量的生成1.直接输入法--------------------------------------------------- 32.冒号表达式法 ------------------------------------------------- 33.函数法 ------------------------------------------------------- 3 2. 1向量的加减和数乘运算-------------------------------------------- 3向量的点、叉积运算--------------------------------------------- 31.点积运算------------------------------------------------------ 32.向量的叉积运算 --------------------------------------------- 3二、矩阵运算2.1矩阵元素的表示及相关操作1.元素的下标表示法2.矩阵元素的赋值2.2矩阵的创建1.直接输入法52.抽取法3.拼接法 ----------------------------------------------- 64.函数法-------------------------------------------------------- 75.拼接函数和变形函数法----------------------------------------- 86.加载法7.M文件法--------------------------------------------- 10 2.3矩阵的代数运算1.求矩阵行列式的值2.矩阵的加减、数乘与乘法--------------------- 103.求矩阵的逆矩阵4.矩阵的除法5.矩阵的秩------------------------ 116.求矩阵的特征值与特征向量7.矩阵的乘嘉与开方运算------------- 128.矩阵的指数与对数9,矩阵转置 ----------------------------------- 1310.矩阵的提取与翻转--------------------------------------------- 14三、数组运算3.1多维数组的创建1.下标赋值法2.工具阵函数法-------------------------------------- 153 .拼接和变形函数法 ---------------------------------------------- 16 3.2数组的代数运算1・数组的加减,数乘与乘法---------------------------------------- 172.数组的除法----------------------------------------------------- 183.数组的乘募与开方4.数组的指数与对数--------------------------- 195.数组或矩阵的单纯转置 ------------------------------------------ 20 3.3数组的关系与逻辑运算1.数组的关系运算------------------------------------------------ 20203 .与逻辑运算相关的函数 ----------------------------------------- 213.4数组和矩阵函数的通用形式------------------------------------------ 22四、字符串运算4.1字符串变量与一维字符数组1.给字符串变量赋值2.一维字符数组的生成------------------------- 22 4.2对字符串的多项操作1.求字符串长度 -------------------------------------------------- 232.字符串与一维数组数值的相互转换------------------------------- 233•比字^^串--------------------------------------------------------- 234•查找字符串5.显示字符串--------------------------------------- 244.3二维字符数组----------------------------------------------- 24五、习题部分1 .单项选择题------------------------------------------- 242 •判断题----------------------------------------------- 24六、实验二部分一、实验目的------------------------------------------------ 26二、实验内容------------------------------------------------ 26三、实验步骤------------------------------------------------ 263.1向量的生成和运算1)向量的生成直接输入法、冒号表达式法----------------------------------- 26函数法、练习题 -------------------------------------------- 272)向量的运算------------------------------------------------- 283.2矩阵的创建、引用和运算1)矩阵的创建和引用直接输入法、抽取法--------------------------------------- 29拼接法,函数法------------------------------------------- 30拼接函数和变形函数法、练习题----------------------------- 31 2)矩阵的运算矩阵的加减、数乘与乘法、求矩阵的逆矩阵------------------- 34矩阵的除法、练习题---------------------------------------- 353. 3多维数组的创建及运算1)多维数组的创建--------------------------------------------- 362)多维数组的运算--------------------------------------------- 37 练习题---------------------------------------------------- 383.4字符串的操作1)字符串的创建---------------------------------------------- 382)求字符串长度---------------------------------------------- 393)字符串与一维数值数组的相互转换------------------------- 39练习题--------------------------------------------------- 40相关知识点及练习结果一、向量运算1.直接输入法» A=[2,3,4,5,6],B=[1;2;3;4;5]/C=[4 5 6 7 8 9];A= 2 3 4 5 6 B= 123452.冒号表达式法» A=l:2:10,b=l:10/C=10:-l:lA= 1 3 5 7 9b= 1 2 3 4 5 6 7 8 9 10C= 10 9 8 7 6 5 4 3 2 13.函数法Linspace()是线性等分函数,logspace ()是对数等分函数» A=linspace(l,30/10),B=logspace(0/4/5)A = 1.0000 4.2222 7.4444 10.6667 13.8889 17.1111 20.333323.5556 26.7778 30.0000B= 1 10 100 1000 100002.1向量的加减和数乘运算只有维数相同的行向量之间可以相加减,维数相同的列向量也可以相加减,标量数值可以与向量直接相乘除。
实验报告一题目: 数值运算中误差分析的方法与原则摘要:在我们的日常生活与学习中,很多具体问题抽象成数学模型都可以解决,而求解这些数学模型就要用到数值分析,本实验讨论的是数值分析中的误差。
前言:(目的和意义)掌握误差来源,会对误差进行分析,了解简化计算步骤的基本原理和应用。
数学原理:误差会随着计算步骤的增加而积累,计算步骤越多,误差越大。
为了减小数值计算结果的误差,应该尽量减少计算步骤,并对误差做好分析与处理。
程序设计一:(1)计算110n x n I e x e dx -=⎰ (0,1,...)n =并估计误差。
本实验采用Matlab 的M 文件编写,程序如下:I=1-exp(-1);n=input('请输入n 的值');format longfor N=1:nI=1-n*I;endI当n=17时,I= -4.769577843020550e+020程序设计二:(2)计算多项式11110()...n n n n n P x a x a xa x a --=++++( 03a = 123k k a a -=+)并计算100(0.5)P 与150(13)P 的值本实验采用Matlab 的M 文件编写,程序如下:n=input('请出入n 的值');x=input('请出入x 的值');a=3;p=3;for i=1:na=2*a+3;b=x^i;p=p+a*b;endp计算结果:150(13)P = 1.099478611479765e+213100(0.5)P =600结果分析和讨论:(1) 计算时,要防止大数“吃”掉小数(2) 要避免除数绝对值远远小于被除数绝对值;(3) 要避免两相近数相减;(4) 注意简化计算步骤,减少运算次数。
同样一个计算问题,若能减少运算次数,不但可以节省计算时间,还能减小舍入误差。
例如上述第二题,如果要直接计算n n a x 的值再逐项相加,那么一共要做(1)(1) (212)n n n n ++-+++=次乘法和n 次加法。
MATLAB上机实验一一、实验目的初步熟悉MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息; 命令窗口二、实验内容1 熟悉MATLAB 平台的工作环境;2 熟悉MATLAB 的5 个工作窗口;3 MATLAB 的优先搜索顺序;三、实验步骤1. 熟悉MATLAB 的5 个基本窗口①Command Window 命令窗口②Workspace 工作空间窗口③Command History 命令历史记录窗口④Current Directory 当前目录窗口⑤Help Window 帮助窗口1 命令窗口Command Window;在命令窗口中依次输入以下命令:>>x=1>> y=1 2 34 5 67 8 9;>> z1=1:10,z2=1:2:5;>> w=linspace1,10,10;>> t1=ones3,t2=ones1,3,t3=ones3,1>> t4=ones3,t4=eye4x =1z1 =1 2 3 4 5 6 7 8 9 10t1 =1 1 11 1 11 1t2 =1 1 1t3 =111t4 =1 1 11 1 11 1 1t4 =1 0 0 00 1 0 00 0 1 00 0 0 1思考题:①变量如何声明,变量名须遵守什么规则、是否区分大小写;答:1变量声明1.局部变量每个函数都有自己的局部变量,这些变量只能在定义它的函数内部使用;当函数运行时,局部变量保存在函数的工作空间中,一旦函数退出,这些局部变量将不复存在;脚本没有输入输出参数,由一系列MATLAB命令组成的M文件没有单独的工作空间,只能共享调用者的工作空间;当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中;2.全局变量在函数或基本工作空间内,用global声明的变量为全局变量;例如声明a为全局变量:>>global a声明了全局变量的函数或基本工作空间,共享该全局变量,都可以给它曲赋值;如果函数的子函数也要使用全局变量,也必须用global声明;3.永久变量永久变量用persistent声明,只能在M文件函数中定义和使用,只允许声明它的函数存取;当声明它的函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量:>>persistent a2变量命名规则如下:始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符;N与硬件有关,由函数namelengthmax返回,一般N=63;不能使用关键字作为变量名关键字在后面给出;避免使用函数名作为变量名;如果变量采用函数名,该函数失效;3区分大小写②试说明分号、逗号、冒号的用法;答:分号:加上分号“;”其作用是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存的同时,还将运算结果显示出来;逗号:分割列表冒号:从什么到什么,比如1:10意思是——1到10③linspace 称为“线性等分”函数,说明它的用法;可使用help命令,格式如下:>>help linspace④说明函数ones 、zeros 、eye 的用法;答;1ones函数:全部元素都为1的常数矩阵; 2zeros函数:全部元素都为0的矩阵; 3eye函数:单位矩阵;4linspace函数:如a=linspacen1,n2,n3,表示在线性空间上,行矢量的值从n1到n22 工作空间窗口Workspace;单击工作空间窗口右上角的按钮,将其从MATLAB 主界面分离出来;①在工作空间查看各个变量,或在命令窗口用who, whos注意大小写查看各个变量;②在工作空间双击变量,弹出Array Editor 窗口数组编辑器窗口,即可修改变量;③使用save 命令把工作空间的全部变量保存为文件;>>save④输入下列命令:>>clear all %清除工作空间的所有变量观察工作空间的变量是否被清空;使用load 命令把刚才保存的变量载入工作空间;>>load⑤清除命令窗口命令:>>clc3 历史命令窗口Command History;打开历史命令窗口,可以看到每次运行MATLAB 的时间和曾在命令窗口输入过的命令,练习以下几种利用历史命令窗口重复执行输入过的命令的方法;①在历史命令窗口中选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择Copy,然后再Paste 到命令窗口;②在历史命令窗口中双击要执行的一行命令,或者选中要重复执行的一行或几行命令后,用鼠标将其拖动到命令窗口中执行;③在历史命令窗口中选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择Evaluate Selection,也可以执行;④或者在命令窗口使用方向键的上下键得到以前输入的命令;例如,按方向键“↑”一次,就重新将用户最后一次输入的命令调到MATLAB 提示符下;重复地按方向上键“↑”,就会在每次按下的时候调用再往前一次输入的命令;类似地,按方向键“↓”的时候,就往后调用一次输入的命令;按方向键“←”或者方向键“→”就会在提示符的命令中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本的方法编辑这些命令;4 当前目录命令窗口Current Directory;MATLAB 的当前目录即是系统默认的实施打开、装载、编辑和保存文件等操作时的文件夹;打开当前目录窗口后,可以看到用“save”命令所保存的文件是保存在目录C:\MATLAB6p5\work 下;5 帮助窗口Help Window;单击工具栏的图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能启动帮助窗口;①通过Index 选项卡查找log2函数的用法,在Search index for 栏中输入需要查找的词汇“log2”,在左下侧就列出与之最匹配的词汇条目,选择“log21”,右侧的窗口就会显示相应的内容;②也可以通过Search 选项卡查找log2 函数的用法;Search 选项卡与Index 选项卡不同,Index 只在专用术语表中查找,而Search 搜索的是整个HTML 帮助文件;2. MATLAB 的数值显示格式设置屏幕显示方式有紧凑Compact和松散Loose两种,其中Loose 为默认方式;>>a=ones1,30>>format compact>>a数字显示格式有short、long、short e、long e 等,请参照教材的列表练习一遍;>>format long>>pi>>format short>>pi>>format long>>pi>>format +>>pi>>-pi3. 变量的搜索顺序在命令窗口中输入以下指令:>>pi>>sinpi;>>exist'pi'>>pi=0;>>exist'pi'>>pi>>clear pi>>exist'pi'>>pi思考题:① 3 次执行exist'pi'的结果一样吗如果不一样,试解释为什么答:不一样,pi原来是库存函数,但是如果被赋值则系统默认被赋予的值为pi后来的值,但是当执行clear pi之后所赋的值被清空,因此pi的值又成为②圆周率pi 是系统的默认常量,为什么会被改变为0答:pi原来是库存函数,但是如果被赋值则系统默认被赋予的值为pi后来的值,但是当执行clear pi之后所赋的值被清空,因此pi的值又成为实验二 MATLAB语言基础一、实验目的基本掌握MATLAB向量、矩阵、数组的生成及其基本运算区分数组运算和矩阵运算、常用的数学函数;交接字符串的操作;二、实验内容1 向量的生成和运算;2 矩阵的创建、引用和运算;3 多维数组的创建及运算;4 字符串的操作;三、实验步骤1.向量的生成和运算1 向量的生成直接输入法:A =2 3 4 5 6>> B=1;2;3;4;5B =12345冒号生成发:>> A=1:2:10 ,B=1:10 ,C=10:-1:1A =1 3 5 7 9B =1 2 3 4 5 6 7 8 9 10C =10 9 8 7 6 5 4 3 2 1函数法:Linspace 是线性等分函数,logspace 是对数等分函数;>> A=linspace1,10 ,B=linspace1,30,10A =Columns 1 through 9Columns 10 through 18Columns 19 through 27Columns 28 through 36Columns 37 through 45Columns 46 through 54Columns 55 through 63Columns 64 through 72Columns 73 through 81Columns 82 through 90Columns 91 through 99Column 100B =Columns 1 through 9Column 10>> A=logspace0,4,5A =1 10 100 1000 10000练习:使用logspace 创建1-4 的有10个元素的行向量;答案:>> A=logspace1,10,4piA =+010Columns 1 through 9Columns 10 through 122 向量的运算维数相同的行向量只见可以相加减,维数相同的列向量也可以相加减,标量可以与向量直接相乘除;>> A=1 2 3 4 5, B=3:7,A =1 2 3 4 5B =3 4 5 6 7>> AT=A', BT=B',AT =12345BT =34567>> E1=A+B, E2=A-BE1 =4 6 8 10 12E2 =-2 -2 -2 -2 -2 >> F=AT-BT,F =-2-2-2-2-2>> G1=3A, G2=B/3,G1 =3 6 9 12 15G2 =向量的点积与叉积运算;>> A=ones1,10;B=1:10; BT=B';>> E1=dotA,BE1 =55>> E2=ABTE2 =55>> clear>> A=1:3,B=3:5,A =1 2 3B =3 4 5>> E=crossA,BE =-2 4 -22.矩阵的创建、引用和运算1 矩阵的创建和引用矩阵是由nm 元素构成的矩阵结构,行向量和列向量是矩阵的特殊形式;直接输入法:>> A=1 2 3;4 5 6A =1 2 3 4 5 6 >> B= 1 4 72 5 83 6 9B =1 4 72 5 83 6 9 >> A1ans =1>> A4:endans =5 36 >> B:,1ans =123>> B:ans =123456789>> B5ans =5抽取法>> clear>> A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16A =1 2 3 45 6 7 89 10 11 1213 14 15 16>> B=A1:3,2:3B =2 36 710 11>> C=A1 3,2 4C =2 410 12>> A1 3;2 4ans =1 95 13函数法:>> A=ones3,4A =1 1 1 11 1 1 11 1 1 1>> B=zero3Undefined function or method 'zero' for input arguments of type 'double'. >> B=zeros3B =0 0 00 0 00 0 0>> C=eyes3,2Undefined function or method 'eyes' for input arguments of type 'double'. >> C=eye3,2C =1 00 10 0>> D=magic3D =8 1 63 5 74 9 2拼接法>> clear>> A=ones3,4A =1 1 1 11 1 1 1>> B=zeros3B =0 0 00 0 00 0 0>> C=eye4C =1 0 0 00 1 0 00 0 1 00 0 0 1>> D=A BD =1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 >> F=A;CF =1 1 1 11 1 1 11 1 1 10 1 0 0 0 0 1 0 0 0 0 1 拼接函数和变形函数法:>> clear>> A=0 1;1 1A =0 11 1>> B=2ones2B =2 22 2>> cat 1,A,B,Aans =0 11 12 22 20 11 1>> cat 2 A,B,Acat 2 A,B,AError: Unexpected MATLAB expression.>> cat2,A,B,Aans =0 1 2 2 0 11 12 2 1 1>> repmatA,2,2ans =0 1 0 11 1 1 10 1 0 11 1 1 1>> repmatA,2ans =0 1 0 11 1 1 10 1 0 11 1 1 1练习:使用函数法、拼接法、拼接函数法和变形函数法,按照要求创建以下矩阵:A为43⨯的3⨯的单位矩阵、D为33⨯的0矩阵/C为33⨯的全1矩阵、B为3魔方阵、E由C 和D纵向拼接而成,F抽取E的2---5行元素生成、G由F经变形为46⨯的大3⨯的矩阵而得、以G为子矩阵用复制函数repmat生成8矩阵H;答案:>> A=ones3,4A =1 1 1 11 1 1 11 1 1 1>> B=zeros3,3B =0 0 00 0 00 0 0>> C=eye3C =1 0 00 1 00 0 1>> D=magic3D =8 1 63 5 74 9 2>> E=C;DE =1 0 00 1 00 0 18 1 63 5 74 9 2>> F=2:5,:F=2:5,:Error: Expression or statement is incorrect--possibly unbalanced , {, or . >> F=E2:5,:F =0 1 00 0 18 1 63 5 7>> G=respaceE,3,4Undefined command/function 'respace'.>> G=respaceF,3,4Undefined command/function 'respace'.>> G=reshapeF,3,4G =0 3 1 10 1 5 68 0 0 7>> H=repmatG,2,2H =0 3 1 1 0 3 1 1 0 1 5 6 0 1 5 6 8 0 0 7 8 0 0 7 0 3 1 1 0 3 1 1 0 1 5 6 0 1 5 6 8 0 0 7 8 0 0 7 2)矩阵的运算矩阵的加减、数乘与乘法已知矩阵:>> A=1 23 -1,A =1 23 -1>> B=-1 01 2B =-1 01 2>> A+Bans =0 24 1>> 2Aans =2 46 -2>> 2A-3Bans =5 43 -8>> ABans =1 4-4 -2矩阵的逆矩阵>> format rat;A=1 0 1;2 1 2;0 4 61 0 12 1 2 0 4 6 >> A1=invAA1 =-1/3 2/3 -1/6 -2 1 0 4/3 -2/3 1/6 >> AA1ans =1 0 0 0 1 0 0 0 1 矩阵的除法>> a=1 2 1;3 1 4;2 2 1,b=1 1 2,d=b'a =1 2 1 3 1 42 2 1b =1 1 2112>> c1=binva,c2=b/ac1 =6/7 3/7 -4/7 c2 =6/7 3/7 -4/7 >> c3=invad, c4=a\bc3 =12/7-4/7Error using ==> mldivideMatrix dimensions must agree.>> c3=invad, c4=a\dc3 =12/7-4/7c4 =12/7-4/7练习:按下列要求求出各种的矩阵运算的值求矩阵的秩、特征值和特征向量、矩阵的乘幂与开方;矩阵的指数与对数矩阵的提取与翻转答案:>> A=6 3 4 3-2 5 7 -48 -1 -3 -7A =6 3 4 3-2 5 7 -48 -1 -3 -7>> B=rankAB =3>> rb=rankArb =3>> X,Lamda=eigAError using ==> eigMatrix must be square.>> X,Lamda=eigsAError using ==> eigsA must be a square matrix or a function which computes Ax. >> C=6 3 4-2 5 78 -1 -3C =6 3 4-2 5 78 -1 -3>> X,Lamda=eigsCX =Lamda =0 00 00 0>> X,Lamda=eigCX =Lamda =0 0 0 0 0 0 >> X,Lamda=eigCX =Lamda =0 0 0 0 0 0 >> D=A^2Error using ==> mpower Matrix must be square. >> D=C^2D =34 12 626 22 34>> E=sqrtmCE =+ - -+ - -- + +>> F=expmCF =+004>> G=logmCWarning: Principal matrix logarithm is not defined for A with nonpositive real eigenvalues. A non-principal matrix logarithm is returned.> In funm at 153In logm at 27G =+ - -- + + >> H=fliplrCH =4 3 6 75 -2 -3 -1 8 >> I=triuCI =6 3 4 0 57 0 0 -3 >> J=trilCJ =6 0 0 -2 5 0 8 -1 -3 >> K=diagCK =65-33.多维数组的创建及运算1)多维数组的创建>> A1=1,2,3;4 5 6;7,8,9;A2=reshape10:18,3,3 A2 =10 13 1611 14 1712 15 18>> T1:,:,1=ones3;T1:,:,2=zeros3T1:,:,1 =1 1 11 1 11 1 1T1:,:,2 =0 0 00 0 00 0 0>> T2=ones3,3,2T2:,:,1 =1 1 11 1 11 1 1T2:,:,2 =1 1 11 1 11 1 1>> T3=cat3,A1,A2,T4=repmatA1,1,1,2T3:,:,1 =1 2 34 5 67 8 9T3:,:,2 =10 13 1611 14 1712 15 18T4:,:,1 =1 2 34 5 67 8 9T4:,:,2 =1 2 34 5 67 8 92)多维数组的创建数组运算用小圆点加在运算符的前面表示,以区分矩阵的运算;特点是两个数组相对应的元素进行运算;>> A=1:6;B=ones1,6;>> C1=A+B,C2=A-BC1 =2 3 4 5 6 7C2 =0 1 2 3 4 5 >> C3=A.B,C4=B./A,C5=A.\BC3 =1 2 3 4 5 6C4 =C5 =关系运算或逻辑运算的结果都是逻辑值;>> I=A>3,C6=AII =0 0 0 1 1 1C6 =4 5 6>> A1=A-3,I2=A1&AA1 =-2 -1 0 1 2 3 I2 =1 1 0 1 1 1>> I3=~II3 =1 1 1 0 0 0 4.字符串的操作1 字符串的创建>> S1='Ilike MATLAB'S1 =Ilike MATLAB>> S2='I''m a stuent.'S2 =I'm a stuent.>> S3=S2,'and',S1S3 =I'm a MATLAB2)求字符串长度>> lengthS1ans =12>> sizeS1ans =1 123)字符串与一维数值数组的相互转换>> CS1=absS1CS1 =73 108 105 107 101 32 77 65 84 76 65 66>> CS2=doubleS1CS2 =73 108 105 107 101 32 77 65 84 76 65 66>> charCS2ans =Ilike MATLAB>> setstrCS2ans =Ilike MATLAB练习:用char 和向量生成的方法创建如下字符串AaBbCc......XxYyZz.>> S1=65:90;S2=97:122;>> C=S1;S2;>> C=C:';>> S3=doubleC;charS3ans =AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvWwXxYyZz实验三 MALTAB数值运算一、实验目的掌握MATLAB的数值运算及其运算中所用到的函数,掌握结构数组和细胞数组的操作;二、实验内容1)多项式运算;2)多项式插值和拟合;3)数值为积分;4)结构数组和细胞数组;三、实验步骤1、多项式运算1)多项式表示;在MATLAB中,多项式表示成向量的形式;如:432S S S+-+在MATLAB中表示为359>> s=1 3 -5 0 92)多项式的加减法相当于向量的加减法,但必须注意阶次要相同;如不同,低阶次的要补0;如多项式23547+-++相加;s s s s++与多项式432239s s>> s1=0 0 2 3 11>> s2=1 2 -5 4 7>> s3=s1+s2答;s1 =0 0 2 3 11s2 =1 2 -5 4 7s3 =1 2 -3 7 183)多项式的乘、除法分别用函数conv和的deconv实现; >> s1=2 3 11>> s2=1 3 -5 4 7>> s3=convs1,s2>> s4=deconvs3,s1答;s1 =2 3 11s2 =1 3 -5 4 7s3 =2 9 10 26 -29 65 77s4 =1 3 -5 4 74)多项式求根用函数roots;>> s1=2 4 2>> rootss1答;s1 =2 4 2ans =-1-15)多项式求值用函数polyval>> s1=2 4 1 -3>> polyvals1,3>> x=1:10>> y=polyvals1,x答;s1 =2 4 1 -3ans =90x =1 2 3 4 5 6 7 8 9 10y =Columns 1 through 84 31 90 193 352 579 886 1285 Columns 9 through 10练习:求23(1)(3)(1)21s s ss s+++++的“商”及余数;>> s1=1 0 1;s2=1 3;s3=1 1;>> s4=1 0 2 1;>> q,r=deconvconvconvs1,s2,s3,s4答;q =1 4r =0 0 2 -5 -12、多项式插值和拟合有一组实验数据如附表1-1所示;附表1-1分别用拟合二阶至三阶和插值线性和三次样条的方法来估算X=时Y的值;以下是实现一阶拟合的语句;>> x=1:10>> y=16 32 70 142 260 436 682 1010 1342 1960>> p1=polyfitx,y,1 %一阶拟合>> y1=polyvalp1, %计算多项式P1在x=的值答;x =1 2 3 4 5 6 7 8 9 10y =Columns 1 through 816 32 70 142 260 436 682 1010Columns 9 through 101342 1960p1 =y1 =+0033、数值微积分1)差分使用diff函数实现;>> x=1:2:9>> diffx答;x =1 3 5 7 9ans =2 2 2 22)可以用因变量和自变量差分的结果相处得到数值微分;>> x=linspace0,2pi,100;>> y=sinx;>> plotx,y>> y1=diffy./diffx;>> plotx1:end-1,y1答;3)cumsum函数求累计积分,trapz函数用梯形法求定积分,即曲线的面积;>> x=ones1,10>> cumsumx>> x=linspace0,pi,100;>> y=sinx;>> trapzx,y>> p=cumsumy;>> p100pi/100-1答;x =1 1 1 1 1 1 1 1 1 1ans =1 2 3 4 5 6 7 8 9 10ans =ans =练习:图A1是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为X轴,由南向北方向为Y 轴,选择方便的原点,并将从最西边界点到最东边界点在X轴上的区间适当划分为若干段,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,这样就得到表1,根据地图比例尺回到18mm相当于40Km,试由测量数据计算瑞士国km比较;地图的数据见附表1-2单位mm;土近似面积,与其精确值412282附表1-2X 7 13 34 48 56 61 91Y1 44 45 47 50 50 38 30 30 34 36 34 41 45 46续表提示:由高等数学的知识,一条曲线的定积分是它与x轴所围成的面积,那么两条曲线所围成的面积可由两条曲线的定积分相减得到;4、结构数组与细胞数组1)机构数组的创建;>> ='Jack';>> student2.n>> ='Lucy';>> student或者用struct函数创建;>> student=struct'number',{'001','002'},'name',{'Jack','Lucy'};答;student =1x2 struct array with fields:numbername2)机构数组的操作;>> student1.subject= %添加subject域并赋予空值>> student1.score=>> filednamesstudeng>>fieldnamesstudeng>>fieldnamesstudent>> getfieldstudent,{2},'name'>> student=rmfieldstudent,'subject' %删除subject域>> student=setfieldstudent,{1},'score',90;>> student2.score=88; %比较和上一条语句是否效果一样答;student =1x2 struct array with fields:numbernamesubjectstudent =1x2 struct array with fields:numbernamesubjectscoreUndefined function or variable 'studeng'.练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average;结构数组的大小为2×2;3)细胞数组的创建;>> A={'How are you',ones3;1 2;3 4,{'cell'}}; %直接创建>> B1,1={'Hello world'}; %由各个细胞元素创建>> B1,2={magic3};>> B2,1={1 2 3 4};答或者用cell函数先创建空的细胞数组,然后再给各个元素赋值c=cell1,2;>> c1,1={'Hello world'};>> c1,2={magic3};>> c1,3={1 2 3 4};4)细胞数组的操作;>> ans1=A1,1>> ans2=A1,1>> whos ans1 ans2>> celldispA>> a1=A{2,1}1,2>> a2 a3=dealA{1:2}答;ans1 ='How are you'ans2 ='How are you'Name Size Bytes Class Attributesans1 1x1 84 cellans2 1x1 84 cellA{1,1} =How are youA{2,1} =1 23 4A{1,2} =1 1 11 1 11 1 1A{2,2}{1} =cella1 =2a2 =How are youa3 =1 23 4实验四 MALTAB符号运算一、实验目的掌握符号变量和符号表达式的创建,掌握MALTAB的symbol工具箱的一些基本运用;二、实验内容1)符号变量、表达式、方程及函数的表示; 2)符号微积分运算;3)符号表达式的操作和转换;4)符号微分方程求解;三、实验步骤1、符号运算的引入在数值运算中如果求x xxπsinlim→,则可以不断让的让x趋近0,一球的表达式趋近什么数,但终究不能令x=0,因为在数值运算中0不是能作除数的;MATLAB的符号运算能解决这内问题;输入如下命令:>> f=sym'sinpix/x'>> limitf,'x',0答;f =sinpix/xans =pi2、符号常量、符号变量、符号表达式的创建1)使用sym创建输入以下命令,观察Workspace中A、B、f是什么内性的数据,占用多少字节的内存空间;>> A=sym'1' %符号常量>> B=sym'x' %符号变量>> f=sym'2x^2+3x-1' %符号表达式>> clear>> f1=sym'1+2' %有单引号,表示字符串>> f2=sym1+2 %无单引号>> f2=sym1+2>> f4=sym'2x+3' %为什么出错>> x=1>> f4=sym2x+3答;A =1B =x2x^2+3x-1f1 =1+2f2 =3f2 =3f4 =2x+3x =1f4 =5通过看MATLAB的帮助可知,sym的参数可以使字符串或是数值类型,无论是哪种类型都会生成符号类型数据; 2)使用syms创建>> clear>> syms x y z>> x,y,z>> f1=x^2+2x+1>> f2=expy+expz^2>> f3=f1+f2答;x =xy =yz =zf1 =x^2+2x+1f2 =expy+expz^2f3 =x^2+2x+1+expy+expz^23、符号矩阵创建>> syms a1 a2 a3 a4>> A=a1 a2;a3 a4>> A1,A3答;A =a1, a2a3, a4ans =a1a24、符号算术运算1)符号向量相乘、相除符号量相成和数值量相乘一样,分成矩阵乘和数组乘;>> a=sym5;b=sym7;>> c1=ab>> c2=a/b>> a=sym5;B=sym3 4 5;>> C1=aB,C2=a\B>> syms a b>> A=5 a;b 3;B=2a b;2b a;>> C1=AB,C2=A.B>> C3=A\B,C4=A./B答;c1 =35c2 =5/7C1 =15, 20, 25C2 =3/5, 4/5, 1C1 =10a+2ab, 5b+a^22ab+6b, b^2+3aC2 =10a, ab2b^2, 3aC3 =2ab-3/-15+ab, a^2-3b/-15+ab2ba-5/-15+ab, -5a-b^2/-15+abC4 =5/2/a, a/b1/2, 3/a2)符号数值任意精度控制和运算任意精度的VPA运算可以使用命令digits设定默认的精度和vpa对指定对象以新的精度进行计算来实现; >> a1=sym'2sqrt5+pi'>> a=sym'2sqrt5+pi'>> b=sym2sqrt5+pi>> digits>> vpaa>> digits15>> c1=vpaa,56>> c2=vpab,56答a1 =2sqrt5+pia =2sqrt5+pib =Digits = 32ans =ans =c1 =c2 =注意观察c1和c2的数值类型,c1和c2是否相等;3) 符号类型与数值类型的转换使用命令sym 可以把数值型对象转换成有理数性符号对象,命令vpa 可以讲数值型对象转换为任意精度的VPA 型符号对象;使用double,numeric 函数可以将有理数型和VPA 型符号对象转换成数值对象.>> clear>> a1=sym'2sqrt5+pi'>> b1=doublea1 %符号转数值>> b2=isnumericb1 %判断是否转换成了数值>> a2=vpaa1,70 %数值转符号答;a1 =2sqrt5+pib1 =b2 =1a2 =85、 符号表达式的操作和转换1独立变量的确定原则独立变量的确定原则:在符号表达式中默认变量是惟一的;MATLAB 会对单个英文小写字母除i 、j 外进行搜索,且以x 为首选独立变量;如果表达式中字母不唯一,且无x,就选在字母表最接近x 的字母;如果有相连的字母,则选择在字母表中较后的那一个;例如:'*3'z y +中,y 是默认独立变量;)'*sin('b t a +,t 是默认独立变量;输入以下命令,观察并分析结果;>> clear>> f=sym'a+b+i+j+x+y+xz'>> findsymf>> findsymf,1>> findsymf,2>> findsymf,3>> findsymf,4>> findsymf,5>> findsymf,6答;f =a+b+i+j+x+y+xzans =a, b, j, x, xz, yans =xans =x,xzans =x,xz,yans =x,xz,y,jans =x,xz,y,j,bans =x,xz,y,j,b,a2符号表达式的化简符号表达式化简主要包括表达式美化pretty 、合并同类项collcet 、多项式展开expand 、因式分解factor 、化简simple 或simplify 等函数;①合并同类项collect;分别按x 的同幂项和e 指数同幂项合并表达式: 2(1)()t t x xe x e --+++;>> syms x t;>> f=x^2+x^exp-t+1x+exp-t;>> f1=collectf>> f2=collectf,'exp-t'答;f1 =x^3+exp-tx^2+x^exp-t+1x+x^exp-t+1exp-tf2 =x^2+x^exp-t+1exp-t+x^2+x^exp-t+1x②对显示格式加以美化pretty;针对上例,用格式美化函数可以使显示的格式更符合数学书写习惯;>> prettyf1>> prettyf2答;f1 =x^3+exp-tx^2+x^exp-t+1x+x^exp-t+1exp-tf2 =x^2+x^exp-t+1exp-t+x^2+x^exp-t+1x>> prettyf1prettyf23 2 exp-t exp-tx + exp-t x + x + 1 x + x + 1 exp-t2 exp-t 2 exp-tx + x + 1 exp-t + x + x + 1 x注意与直接输出的f1和f2对比;③多项式展开expand;展开12x-成x不同次幂的多项式.(1)>> syms x>> f=x-1^12;>> expandf>> prettyexpandf答;ans =1+x^12-12x^11+66x^10-220x^9+495x^8-792x^7+924x^6-792x^5+495x^4-220x^3+66x^2-12x 12 11 10 9 8 7 6 51 + x - 12 x + 66 x - 220 x + 495 x - 792 x + 924 x - 792 x4 3 2+ 495 x - 220 x + 66 x - 12 x④因式分解factor;将表达式121x-做因式分解;>> syms x;f=x^12-1;>> prettyfactorf答;ans =1+x^12-12x^11+66x^10-220x^9+495x^8-792x^7+924x^6-792x^5+495x^4-220x^3+66x^2-12x 12 11 10 9 8 7 6 51 + x - 12 x + 66 x - 220 x + 495 x - 792 x + 924 x - 792 x4 3 2+ 495 x - 220 x + 66 x - 12 x>> syms x;f=x^12-1;prettyfactorf2 2 2 4 2x - 1 1 + x + x 1 + x 1 - x + x 1 + x x - x + 1⑤化简simple或simplify;将函数f=;>> clear>> syms x;f=1/x^3+6/x^2+12/x+8^1/3;>> g1=simplef>> g2=simplifyf答;g1 =2x+1/xg2 =2x+1^3/x^3^1/36、符号表达式的变量替换subs函数可以对符号表达式中的符号变量进行替换>> clear>> f=sym'x+y^2+4x+10'>> f1=subsf,'x','s' %使用s替换x>> f2=subsf,'x+y','z'答;f =x+y^2+4x+10f1 =s+y^2+4s+10f2 =z^2+4x+107、符号极限、符号积分与微分1)求极限函数的调用格式limitF,x,a %返回符号对象F当x→a时的极限limitF,a %返回符号对象F当独立变量→a时的极限limitF %返回符号对象F当独立变量→0a=0时的极限limitF,x,a,’right’ %返回符号对象F当x→a时的右极限limitF,x,a,’left’ %返回符号对象F当x→a时的左极限例一:>> clear>> f=sym'sinx/x+ax'>> limitf,'x',0 %以x为自变量求极限>> limitf,'a',0 %以a为自变量求极限>> limitf %在默认情况下以x为自变量求极限>> findsymf %得到变量并且按字母表顺序排列答‘f =sinx/x+axans =1ans =sinx/xans =1ans =a, x例二:>> clear>> f=sym'sqrt1+1/n;>> limitf,n,inf %求n趋于无穷大时的极限2)求积分函数的调用格式intF %求符号对象F关于默认变量的不定积分intF,v %求符号对象F关于指定变量v的不定积分intF,a,b %求符号对象F关于默认变量的从a到b的定积分intF,v,a,b %求符号对象F关于指定变量的从a到b的定积分3)求微分方程的调用格式diffF %求符号对象F关于默认变量的微分diffF,v %求符号对象F关于指定变量v的微分diffF,n %求符号对象F关于默认变量的n阶微分,n为自然数1、2、3……diffF,v,n %求符号对象F关于指定变量v的n阶微分8、符号方程求解1常规方程求解函数的调用格式g=solveeq %求方程或表达式或字串eq关于默认变量的解g=solveeq,var %求方程或表达式或字串eq关于指定变量var的解g=solveeq1,eq2,….,eqn,var1,var2,…,varn %求方程或表达式或字串eq1,eq2,eq3,……eqn关于指定变量组var1,var2,……,varn的解求一元二次方程20++=的解;其求解方法有多种形式:ax bx c①seq=solve'ax^2+bx+c'②seq=solve'ax^2+bx+c=0'③eq=’ax^2+bx+c’;④eq=’ax^2+bx+c=0’;seq=solveeq⑤sym x a b ceq=ax^2+bx+cseq=solveeq2常微分方程求解求解常微分方程的函数是dsolve;应用此函数可以求得常微分方程组的通解,以及给定边界条件或初始条件后的特解;常微分方程求解函数的调用格式:r=dsolve’eq1,eq2,…’,’cond1,cond2,…’,’v’r=dsolve’eq1’,’eq2’,…,’cond1’,’cond2’,…,’v’说明:①以上两式均可给出方程eq1,、qeq2对应初始条件cond1、cond2之下的一v 作为解变量的各微分方程的解; ②常微分方程解的默认变量为t;③第二式中最多可接受的输入式是12个;④微分方程的表达方法;在用MATLAB 求解常微分方程时,用大写字母Dy 表示dxdy ,用D2y 表示22d y dx ,依此类推; 边界条件以类似于ya=b 给出;其中y 为因变量,a 、b 为常数.如果初始条件给的不够,求出的解为含有C1、C2等待定常数的通解;例一 求微分方程x dx dy 2=的通解. 练习:1求222132lim x x x x →--+; 2求函数()cos 2sin 2f x x x =-的积分;求函数()g x =3计算定积分60(sin 2)x dx π+⎰ 4求下列线性方程组的解5求解但y0=2,在z0=7时,微分方程组的解;实验五 MATLAB 程序设计一、实验目的掌握MATLAB 程序设计的主要方法,熟练编写MATLAB 函数.二、 实验内容1M 文件的编辑;。
线性方程组部分实验题11. 问题描述2. 问题分析2.1. Hilbert 矩阵Hilbert 矩阵是一种著名的“坏条件”矩阵,及病态矩阵,该矩阵任意一个元素的微小变化都能引起巨大的误差(如求逆等)。
该矩阵的元素的数学表达式是a(i ,j)=1/(i+j-1)。
这里我们用matlab 自带的产生Hilbert 矩阵的函数hilb(n)计算(n=1、 2......15)。
同时可以用MATLAB 计算。
2.2. Gauss 消去法(LU 分解)和Cholesky 分解方法高斯消去法主要有顺序消去和回代过程,是线性方程最基本的解法之一。
对n n A R ⨯∈,若0detA ≠,0(1,2,,)i i n ∆≠=⋅⋅⋅,则存在唯一的单位下三角形矩阵L 和非奇异上三角形矩阵U 使得A=LU 。
Cholesky 分解方法,也称平方根法。
对n n A R ⨯∈,假设A 对称正定,则存在唯一对角元素为正数的下三角矩阵L ,使得T A=LL 。
2.3. 条件数计算根据条件数定义:1222()n n n cond H H H -= ;12221n i i X x =⎛⎫== ⎪ ⎪⎝⎭∑ 3. 求解方案设计3.1. 线性方程组的求解及误差在这里为了比较,选择n=2、5、8、10、15 五种维数进行计算分析。
按照题意,我们先设x 为分量全1的向量,求出b ,然后将H 和b 作为已知量,求x ,与设定的参考解对比。
Gauss 消去法、Cholesky 分解法的Matlab 实现程序如下:----------------------------------------------------------------------------------------------------------%Guass 法***************************************************************************①Guass.m function guass(n)n=input('请输入系数矩阵的维数n='); %输入nH=hilb(n); %构造Hilbert 矩阵 x_exact=ones(n ,1); %构造x 列向量 b=H*x_exact; %构造b 向量 x=Doolittle(H ,b)a=input('是否继续,继续请按1,结束请按0:'); if a==1clear;clc;close all; guass(n); else end②Doolittle.mfunction x=Doolittle(A ,b) % LU 分解求Ax=b 的解 N=size(A); n=N(1);L=eye(n ,n);%L 的对角元素为1 U=zeros(n ,n); %U 为零矩阵 U(1,1:n)=A(1,1:n)%U 第一行L(1:n,1)=A(1:n,1)/U(1,1)%L第一列for k=2:nfor i=k:nU(k,i)=A(k,i)-L(k,1:(k-1))*U(1:(k-1),i)endfor j=(k+1):nL(j,k)=(A(j,k)-L(j,1:(k-1))*U(1:(k-1),k))/U(k,k)endendy=solveDownTriangle(L,b);%调用下三角系数矩阵求解函数x=solveUpTriangle(U,y);%调用上三角系数矩阵求解函数③solveDownTriangle.mfunction x=solveDownTriangle(A,b)%求下三角系数矩阵的线性方程组Ax=bN=size(A);n=N(1);for i=1:nif (i>1)s=A(i,1:(i-1))*x(1:(i-1),1);elses=0;endx(i,1)=(b(i)-s)/A(i,i);end④solveUpTriangle.mfunction x=solveUpTriangle(A,b)% 求上三角系数矩阵的线性方程组Ax=bN=size(A);n=N(1);for i=n:-1:1if (i<n)s=A(i,(i+1):n)*x((i+1):n,1);elses=0;endx(i,1)=(b(i)-s)/A(i,i);end%Cholosky分解方法******************************************************************** ---------------------------------------------------------------------------------------------------------- %利用对称正定矩阵之Cholesky分解求解线性方程组Ax=bfunction x=Chol_Solve(A,b)clear;clc% A=input('输入A=');% b=input('输入b=');n=input('请输入系数矩阵的维数n=');%定义hilbert矩阵A=hilb(n);x_exact=ones(n,1);b=A*x_exact;n=length(b);l=Cholesky(A);x=ones(n,1);y=ones(n,1);y(1)=b(1)/l(1,1);%求Ly=bfor i=2:nz=0;for k=1:i-1z=z+l(i,k)*y(k);endy(i)=(b(i)-z)/l(i,i);endx(n)=y(n)/l(n,n);%求L'x=yfor i=n-1:-1:1z=0;for k=i+1:nz=z+l(k,i)*x(k);endx(i)=(y(i)-z)/l(i,i);endxwc=x-x_exact %误差计算a=input('是否继续,继续请按1,结束请按0:');if a==1Chol_Solve(A,b);else end%对称正定矩阵之Cholesky分解法:function L=Cholesky(A)% n=input('请输入系数矩阵的维数n=');%定义hilbert矩阵% A=hilb(n);n=length(A);L=zeros(n);for k=1:ndelta=A(k,k);for j=1:k-1delta=delta-L(k,j)^2;endif delta<1e-10return;endL(k,k)=sqrt(delta);for i=k+1:nL(i,k)=A(i,k);for j=1:k-1L(i,k)=L(i,k)-L(i,j)*L(k,j);endL(i,k)=L(i,k)/L(k,k);endend3.2.条件数的计算根据2.3叙述原理,写出条件数的计算程序如下:%tiaojianshu.mm=input ('input m:=') ;N=[1:m];for i=1:mn=N(i);H=hilb(n);k=cond(H);disp('矩阵的阶数')disp(n)disp('矩阵')disp(H)disp('矩阵的条件数')disp(k)end4.结果与误差分析4.1.线性方程组计算结果分别用Gauss法和Cholesky分解法计算线性方程组的结果,并进行误差分析结果如下:4.2.条件数计算结果4.3. 结果分析取不同的n 值,得到如下结果:对于Guass 法,可以看出来,随着n 的增大,求解结果误差变大,这是因为随着n 增大,系数矩阵的条件数变大,微小的扰动就容易造成很大的误差。
数值分析实习报告姓名:gestepoA学号:201*******班级:***班序言随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。
要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。
而且还能减少大量的人工计算。
由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JAVA的辅助软件来解决,得到一个满足误差限的解。
本文所计算题目,均采用MATLAB进行编程,MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来MATLAB最突出的特点就是简洁,它用更直观的、符合人们思维习惯的代码。
它具有以下优点:1友好的工作平台和编程环境。
MATLAB界面精致,人机交互性强,操作简单。
2简单易用的程序语言。
MATLAB是一个高级的矩阵/阵列语言,包含控制语言、函数、数据结构,具有输入、输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编好一个较大的复杂的应用程序(M文件)后再一起运行。
3强大的科学计算机数据处理能力。
包含大量计算算法的集合,拥有600多个工程中要用到的数学运算函数。
4出色的图像处理功能,可以方便地输出二维图像,便于我们绘制函数图像。
目录1 第一题.................................................................. 4 1.1 实验目的ﻩ41.2 实验原理和方法 (4)1.3 实验结果........................................................... 51.3.1 最佳平方逼近法ﻩ51.3.2 拉格朗日插值法ﻩ71.3.3 对比ﻩ82 第二题.................................................................. 92.1实验目的9ﻩ2.2实验原理和方法ﻩ10102.3实验结果ﻩ2.3.1 第一问10ﻩ2.3.2 第二问 (11)2.3.3 第三问1ﻩ13第三题 (12)3.1实验目的 (12)123.2 实验原理和方法ﻩ3.3实验结果1ﻩ24 MATLAB程序 (14)1第一题某过程涉及两变量x和y,拟分别用插值多项式和多项式拟合给出其对应规律的4.65880.3719.64484.272170345.2795 43 7.48478.2392 ⑴请用次数分别为3,4,5,6的多项式拟合并给出最好近似结果f(x)。
⑵请用插值多项式给出最好近似结果。
1.1实验目的:学习逼近和插值的原理和编程方法,由给出的已知点构造多项式,在某个范围内近似代替已知点所代表的函数,以便于简化对未知函数的各种计算。
1.2试验原理和方法:实验原理:拉格朗日插值法中先构造插值基础函数:l k (x )=∏x−x i x k −x in j=0j≠k(k =0,1,2,⋯,n ),然后构造出拉格朗日多项式:p n (x )=∑(∏x−x i x k −x in j=0j≠k)n k=0f (x k )。
最佳平方逼近中,设逼近函数P n (x )=a 0+a 1x +a 2x 2+⋯+a n x n ,逼近函数和真实函数之差r =P n (x )−y ,[r 1r 2⋮r n ]=[11⋮x 1x 2⋮⋯⋯⋱x 1n x 2n ⋮1x n⋯x nn ][a 0a1⋮a n ]−[y 1y 2⋮y n ],即:r =Xa −Y ,根据最小二乘准则令∑r i 2n i=0=min ,可以得到a =(X T X )−1X TY 。
实验方法:逼近法采用最佳平方逼近,依据最小二乘原则:∑r i 2n i=0=min ,由已知条件采用离散型。
插值法采用拉格朗日插值法。
在逼近法中,由于是离散型的,所以法方程系数阵设计成求和。
分别求出3、4、5、6次的多项式,逼近结果和真实值有一定差距,最小二乘正是让这些差距达到最小,理论上多项式次数越高结果和真实值差距越小。
拉格朗日插值法中“la=la*(p-x(j))/(x(k)-x(j))”语句实现的是我们通常书写的连乘形式拉格朗日插值多项式,但是表示不方便,而如果用“s=collect(s)”函数将其展开成降幂排列多项式以后,由于余项问题结果会和原本的多项式有偏差,这种偏差随着x 的增大而增大。
求出多项式后和题目中给出的参考点进行比较。
最后,选择六次最佳平方逼近多项式和拉格朗日插值多项式(九次)进行比较,选取xi=a+ih=1+0.2*i(i=0,1,⋯,45),分别绘制两者的图像进行比较。
1.3试验结果1.3.1最佳平方逼近法三次多项式:- 1.033*x^3 + 19.33*x^2 - 94.48*x + 131.8拟合结果:1701.896095203.5250291001530000四次多项式:-0.3818*x^4+ 7.368*x^3-42.14*x^2 + 73.53*x+0.745y39.121232.080210.0852-5.5638-2.730021.560261.1172100.5882115.457272.0450五次多项式:0.09807*t^5-3.079*t^4 + 34.5*t^3 - 163.5*t^2 +304.7*t-139.5拟合结果:12345678910 x 1 2 34 5 67 8 9 10 y 33.219145.77429.0320-16.5003-8.906326.908370.9835100.073899.416474.5000六次多项式:0.01936*t^6 - 0.5408*t ^5 + 5.114*t^4 - 16.9*t^3 - 0.867*t^2 + 66.38*t - 18.7拟合结果:y 34.5056 41.1494 13.270-13.9486 -12.225095005.1694 456 4000对比可知,六次多项式拟合结果最好。
1.3.2拉格朗日插值法插值多项式5.353*10^(-5)*x^9 - 0.003088*x^8 + 0.07229*x^7 - 0.8792*x^6 + 5.932*x^5 - 22.41*x^4 + 50.11*x^3 - 86.47*x^2 + 113.5*x - 25.2注:此多项式为拉格朗日多项式的近似式,当x=10的时候偏差可以达到23以上。
插值结果:其中红点表示参考点。
1.3.3比较选取xi=a+ih=1+0.2*i(i=0,1,⋯,45),分别绘制六次多项式拟合和拉格朗日插值结果图:其中绿线表示拉格朗日插值多项式图像,蓝线表示六次多项式拟合图像。
两者效果近似但后者比前者低三次。
2第二题用雅格比法与高斯-赛德尔迭代法解下列方程组Ax=b1或Ax=b2,研究其收敛性。
上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
(1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4];b1=[-3,2,4]T;b2=[100,-200,345]T。
(2)A行分别为A1=[1,0,8,0.8],A2=[0.8,1,0.8],A3=[0.8,0.8,1];b1=[3,2,1]T; b2=[5,0,-10]T。
(3)A行分别为A1=[1,3],A2=[-7,1];b1=[4,6]T。
2.1试验目的学习jacobi迭代法和GuassSeidel迭代法的原理和编程方法,研究方程组系数阵和右边项对方程的解及其收敛性的影响,判断迭代法的收敛条件。
2.2实验原理和方法实验原理:将方程组系数阵A 分解为A =D +L +U ,其中D 为对角阵,L 为减去D 的下三角阵,U为减去D 的上三角阵。
Jacobi 迭代法中构造如下迭代公式:x (k+1)=−D −1(L +U )x (k )+D −1b而Ga us s-Seidel 迭代法的迭代公式为:x (k+1)=−(D +L )−1Ux (k )+(D +L )−1b初始值直接选取为0。
在判断其收敛性时,分别求解其迭代矩阵的谱半径ρ(G ),ρ(G )=max 1≤i≤≤n|λi |, λi 为迭代矩阵的特征值。
实验方法:分别编写jacobi 迭代及其收敛判别函数和S eidel 迭代及其收敛判别函数。
如果在初试迭代步数之内还未收敛就进行收敛判别,收敛判别的依据是迭代矩阵的谱半径是否小于1。
比较同一方程组的j ac obi 迭代法和S eide l迭代法的结果是否相同,在达到精度要求后比较两种方法的迭代次数,比较哪一个的效率更高。
比较方程组系数阵和等号右边的变化会对方程的解和收敛速度造成什么影响。
如果迭代不收敛,那么考虑为什么不收敛,如果把方程组系数阵进行强对角占优处理,是否会收敛。
2.3实验结果规定误差界:1e-42.3.1第一问① A =[62−11−341−24],b =[−324]. 由jacobi 迭代法求得x =[ −0.72730.80810.2525],设定迭代20次,实际迭代16次,精度为9.4022e -005。
由sei del 迭代法求得x =[ −0.72720.80810.2525],设定迭代20次,实际迭代10次,精度为:9.0769e -005②A =[62−11−341−24],b =[100−200345]由j acobi 迭代法求得x =[ 36.3636−2.0707114.0404],设定迭代40次,实际迭代23次,精度为6.9948e -005。
由Seidel 迭代法求得x =[ 36.3637−2.0707114.0404],设定迭代20次,实际迭代15次,精度为8.6384e -005③通过对比可知:1、Seidel 迭代的收敛速度明显高于ja cobi 迭代。
2、b 矩阵对收敛速度和误差精度有影响,b 中元素较大时会放慢收敛速度并加大误差。
2.3.2第二问① A =[10.80.80.80.810.80.81],b =[321] 由ja cobi 迭代法求解,100次迭代尚且不能达到精度。
此时调用j aco bi 迭代法的收敛判别函数,求得特征值为:λ1=−1.6,λ2、3=0.8,ρ(G J )=1.6>1,迭代不收敛。
由于Seide l迭代法求解x =[ 5.76910.7693 −4.2307],迭代次数31,精度为8.7826e-005 ② A =[10.80.80.80.810.80.81],b =[50−10] Ja cob i迭代不收敛。