当前位置:文档之家› MATLAB数值分析实验四(雅各比、高斯赛德尔迭代,以及二分法和牛顿迭代解非线性方程)

MATLAB数值分析实验四(雅各比、高斯赛德尔迭代,以及二分法和牛顿迭代解非线性方程)

MATLAB数值分析实验四(雅各比、高斯赛德尔迭代,以及二分法和牛顿迭代解非线性方程)
MATLAB数值分析实验四(雅各比、高斯赛德尔迭代,以及二分法和牛顿迭代解非线性方程)

佛山科学技术学院

实 验 报 告

课程名称 数值分析

实验项目 迭代法

专业班级 机械工程 姓 名 余红杰 学 号 2111505010

指导教师 陈剑 成 绩 日 期 月 日

一. 实验目的

1、 在计算机上用Jacobi 迭代法和Gauss-Seidel 迭代法求线性方程组 。

2、 在计算机上用二分法和Newton 迭代法求非线性方程 的根。

二. 实验要求

1、按照题目要求完成实验内容;

2、写出相应的Matlab 程序;

3、给出实验结果(可以用表格展示实验结果);

4、分析和讨论实验结果并提出可能的优化实验。

5、写出实验报告。

三. 实验步骤

1、用Matlab 编写Jacobi 迭代法和Gauss-Seidel 迭代法求线性方程组Ax b =的程序。

2、用Matlab 编写二分法和Newton 法求非线性方程()0f x =的根程序。

3、设????

? ??--=212120

203A ,T b )1,3,1(=,对于线性方程组b Ax =,考虑如下问题: (1)分别写出Jacobi 迭代矩阵和Gauss-Seidel 迭代矩阵

(2)用Jacobi 迭代法和Gauss-Seidel 迭代法解该方程时,是否收敛?谁收敛的更快?

(3)用实验步骤1编好的两种迭代法程序进行实验,通过数值结果验证(2)的结论。

4、用调试好的二分法和Newton 迭代法程序解决如下问题

求020sin 35=-+-x x e x 的根,其中控制精度810-=eps ,最大迭代次数50=M 。

四. 实验结果

1.%Jacob.m

function [x,B] = Jacob(A,b,n)

%Jacobi迭代求解方程组Ax=b,系数矩阵A,迭代次数n

%求解的准备工作,构建各迭代系数阵等:

m = length(A);

D = diag(diag(A));

L = -tril(A,-1);

U = -triu(A, 1);

J = D^(-1)*(L+U);

B = J;

f = D^(-1)*b;

%初始化x即启动值:

x = zeros(m,1);

%根据x(k+1)=Jx(k)+f进行矩阵运算:

for i=1:n

x = J*x + f;

end

%GauSeid.m

function [x,G] = GauSeid(A,b,n)

%Gauss-Seidel迭代求解方程组Ax=b,系数矩阵A,迭代次数n %求解的准备工作,构建各迭代系数阵等:

m = length(A);

D = diag(diag(A));

L = -tril(A,-1);

U = -triu(A, 1);

G = inv(D-L)*U;

f = inv(D-L)*b;

%初始化矩阵:

%根据x(k+1)=Gx(k)+f进行矩阵运算:

x = zeros(m,1);

for i = 1:n

x = G*x + f;

end

2.%Dichotomy.m

function x=Dichotomy(x1,x2,p,n)

%利用二分法求根,区间[x1,x2]

%p为精度

a = x1;

b = x2;

%进行n次二分:

%第一个条件判断根在a,b区间内

%第二个条件判断是否中间点就是根,是则迭代终止;

%第三个条件判断二分后根在中点左侧还是右侧;

%第四个条件判断精度是否达标,用区间长度代替

for i=1:n

if f(a)*f(b)<0

x0 = (a+b)/2;

p0 = (b-a)/(2^i);

if f(x0)==0

x = x0;

else

if f(a)*f(x0)<0

b = x0;

else a= x0;

end

end

end

if p0>p

continue;

else

x = x0;

break;

end

end

%NewIterat.m

function x=NewIterat(x0,p,n)

%利用牛顿迭代法求根;

%x0为启动点,估计的靠近根的值,p为精度,n为迭代次数;

syms x1;

%设置一个自变量x1,方便后面的求导:

f1 = diff(f(x1));

%进行n次迭代,精度达标会提前终止;

%第一个判断是根据控制条件来确定真实误差是选绝对还是相对误差;%第二个判断是确定精度是否满足要求

for i=1:n

x1 = x0;

x = x0-f(x0)/eval(f1);

if x<1

RealDiv = abs(x-x0);

else RealDiv = abs(x-x0)/abs(x); end

if RealDiv>p

x0 = x;

else break;

end

end

3.run43.m

clc,clear;

A = [3 0 -2;0 2 1;-2 1 2];

b = [1;3;1];

n1 = 50;

n2 =100;

%输入A,b矩阵,设置迭代次数为50次;%调用迭代函数,返回迭代矩阵;

[x,B] = Jacob(A,b,n1);

xj50 = x;

f1 = max(abs(eig(B)))

%显示谱半径,确定收敛性;[x,B] = GauSeid(A,b,n1);

xg50 = x;

f2 = max(abs(eig(B)))

%谱半径;

xj100 = Jacob(A,b,n2);

xg100 = GauSeid(A,b,n2); Jacobi= [xj50,xj100]

%对比迭代50次和100次的结果GauSei= [xg50,xg100]

%很容易看出准确解为[1;1;1]

4.f.m

function y = f(x)

%所有f(x)=0中f(x)函数;

y = exp(5*x)-sin(x)+x^3-20; 下页是具体解时的程序:

%run44.m

clc,clear;

%很容易看出在[0,1]间有解;

x = Dichotomy(0,1,10^(-8),50)

x = NewIterat(0,10^(-8),50)

五. 讨论分析

4.3

实验中的迭代矩阵在上个部分,分别为J 和G ;

对于收敛性,看下图中的f1,f2,也就是迭代矩阵的谱半径,都是小于1的,但是可以看出后者的谱半径更小,就是说它的收敛速度更快;

最终求x 的值,每种迭代方法分别迭代50次(第一列)和100次(第二列); 实际值为[1;1;1]可以看出用高斯赛德尔迭代更精确,速度更快。

4.4

结果如图所示,后面对run44.m 进行了小改动,改变精度为long 后结果如下:

而真实的结果为:

可见后者的精度更高。

再对源程序进行稍微改动后,可以得到达到所需精度的迭代次数,分别为:

二分法: i=14;

牛顿迭代:i=26;

此时二分法迭代次数更好,但是当用牛顿迭代选取x0=1作初始值时,仅仅需要i=6

次便可达

到所需精度,所以牛顿迭代法对于初始点的选取有较强的依赖性;

六. 改进实验建议

这次实验的内容还是比较丰富的,但是仅仅两个例子,还起不到很好的考察作用,希望能够提升下题目数量。

数值分析实验报告包括程序截图

计算机与信息工程学院数值分析实验报告 计科专业2013级2班 姓名:_________学号:________ 注:实验平台为VS2013 实验一:Lagrange 插值法 一、 实验目的 (1)通过实验掌握Lagrange 插值法; (2)学会用编程语言求解具体插值问题。 二、 实验题目: 按Lagrange 插值算法编程求出f(0.596)的近似值; 三、实验原理 若给定两个插值点),(),,(1100y x y x ,其中10x x ≠,在公式中取1=n ,则L a g r a n g e 插 值多项式为: )()()()() ()(00 101001011010 1x x x x y y y x x x x y x x x x y x p ---+=--+--= 是经过),(),,(1100y x y x 的一条直线,故此法称为线性插值法。 若函数给定三个插值点 2,1,0),,(=i y x i i ,,其中i x 互不相等,在公式中取1=n ,则Lagrange 插值多项式为: ) )(())(())(())(())(() )(()(120210221012012010210 2x x x x x x x x y x x x x x x x x y x x x x x x x x y x p ----+----+----= 这种插值法称为二次插值或抛物插值。

四、实验内容与步骤 五、实验程序 六、实验结果及其分析

教师评语: 实验成绩:_____ 计算机与信息工程学院数值分析实验报告 实验二:最小二乘法 一、 实验目的 (1)掌握最小二乘法的基本思路和拟合步骤; (2)培养编程与上机调试能力。 二、 实验题目 三、 实验原理 已知数据对()(),1,2,,j j x y j n =,求多项式0()()m i i i p x a x m n ==<∑使得 2 0110(,, ,)n m i n i j j j i a a a a x y ==?? Φ=- ??? ∑∑为最小,这就是一个最小二乘问题。 四、实验内容与步骤 已知一组数据如下,求它的线性拟合曲线。

数值分析MATLAB上机实验

数值分析实习报告 姓名:gestepoA 学号:201******* 班级:***班

序言 随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。而且还能减少大量的人工计算。 由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JAVA的辅助软件来解决,得到一个满足误差限的解。本文所计算题目,均采用MATLAB进行编程,MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来MATLAB最突出的特点就是简洁,它用更直观的、符合人们思维习惯的代码。它具有以下优点: 1友好的工作平台和编程环境。MATLAB界面精致,人机交互性强,操作简单。 2简单易用的程序语言。MATLAB是一个高级的矩阵/阵列语言,包含控制语言、函数、数据结构,具有输入、输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编好一个较大的复杂的应用程序(M 文件)后再一起运行。 3强大的科学计算机数据处理能力。包含大量计算算法的集合,拥有600多个工程中要用到的数学运算函数。 4出色的图像处理功能,可以方便地输出二维图像,便于我们绘制函数图像。

目录 1 第一题 (4) 1.1 实验目的 (4) 1.2 实验原理和方法 (4) 1.3 实验结果 (5) 1.3.1 最佳平方逼近法 (5) 1.3.2 拉格朗日插值法 (7) 1.3.3 对比 (8) 2 第二题 (9) 2.1实验目的 (9) 2.2 实验原理和方法 (10) 2.3 实验结果 (10) 2.3.1 第一问 (10) 2.3.2 第二问 (11) 2.3.3 第三问 (11) 3 第三题 (12) 3.1实验目的 (12) 3.2 实验原理和方法 (12) 3.3 实验结果 (12) 4 MATLAB程序 (14)

数值分析实验报告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 姓名:万轩 实验二插值法

数值分析实验报告

数值分析实验报告 姓名:周茹 学号: 912113850115 专业:数学与应用数学 指导老师:李建良

线性方程组的数值实验 一、课题名字:求解双对角线性方程组 二、问题描述 考虑一种特殊的对角线元素不为零的双对角线性方程组(以n=7为例) ?????????? ?????? ? ???? ?d a d a d a d a d a d a d 766 55 44 3 32 211??????????????????????x x x x x x x 7654321=?????????? ? ???????????b b b b b b b 7654321 写出一般的n (奇数)阶方程组程序(不要用消元法,因为不用它可以十分方便的解出这个方程组) 。 三、摘要 本文提出解三对角矩阵的一种十分简便的方法——追赶法,该算法适用于任意三对角方程组的求解。 四、引言 对于一般给定的d Ax =,我们可以用高斯消去法求解。但是高斯消去法过程复杂繁琐。对于特殊的三对角矩阵,如果A 是不可约的弱对角占优矩阵,可以将A 分解为UL ,再运用追赶法求解。

五、计算公式(数学模型) 对于形如????? ?? ????? ??? ?---b a c b a c b a c b n n n n n 111 2 2 2 11... ... ...的三对角矩阵UL A =,容易验证U 、L 具有如下形式: ??????? ????? ??? ?=u a u a u a u n n U ...... 3 3 22 1 , ?? ????? ? ?? ??????=1 (1) 1132 1l l l L 比较UL A =两边元素,可以得到 ? ?? ??-== = l a b u u c l b u i i i i i i 111 i=2, 3, ... ,n 考虑三对角线系数矩阵的线性方程组 f Ax = 这里()T n x x x x ... 2 1 = ,()T n f f f f ... 2 1 = 令y Lx =,则有 f Uy = 于是有 ()?????-== --u y a f y u f y i i i i i 1 1 11 1 * i=2, 3, ... ,n 再根据y Lx =可得到

《MATLAB与数值分析》第一次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名:李培睿 学号:2013020904026 指导教师:程建

一、实验名称 《MATLAB与数值分析》第一次上机实验 二、实验目的 1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算 操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序) 2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号 转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m文件编写进行符号因式分解和函数求反的程序) 3. 掌握Matlab函数的编写规范。 4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、 三维曲线和面的填充、三维等高线等。(用.m文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释) 5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。 三、实验内容 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x, y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 2. 编程实现奥运5环图,允许用户输入环的直径。 3. 实现对输入任意长度向量元素的冒泡排序的升序排列。不允许使用sort 函数。 四、实验数据及结果分析 题目一: ①在Editor窗口编写函数代码如下:

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

数值计算实验报告

(此文档为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);

数值分析实验报告二求解线性方程组的直接方法

数值分析实验报告二求解线性方程组 的直接方法 姓名:刘学超日期:3/28 一实验目的 1.掌握求解线性方程组的高斯消元法及列主元素法; 2.掌握求解线性方程组的克劳特法; 3.掌握求解线性方程组的平方根法。 二实验内容 1.用高斯消元法求解方程组(精度要求为): 2.用克劳特法求解上述方程组(精度要求为)。 3.用平方根法求解上述方程组(精度要求为)。 4.用列主元素法求解方程组(精度要求为): 三实验步骤(算法)与结果 1用高斯消元法求解方程组(精度要求为): #include stdio.h #define n3 void gauss(double a[n][n],double b[n]) { double sum1=0,sum2=0,sum3=0,sum4=0; double l[n][n],z[n],x[n],u[n][n]; int i,j,k; for(i=0;i n;i++) l[i][i]=1; for(i=0;i n;i++) { for(j=0;j n;j++) { if(i=j)

{ for(k=0;k=i-2;k++) sum1+=l[i][k]*u[k][j]; u[i][j]=a[i][j]-sum1; } if(i j) {for(k=0;k=j-2;k++) sum2+=l[i][k]*u[k][j]; l[i][j]=(a[i][j]-sum2)/u[j][j]; } } for(k=0;k=i-2;k++) sum3+=l[i][k]*z[k]; z[i]=b[i]-sum3; for(i=n-1;i=0;i--) { for(k=i;k=n-1;k++) sum4+=u[i][k]*x[k]; x[i]=(z[i]-sum4)/u[i][i]; } } for(i=0;i n;i++) printf("%.6f",x[i]); } main() { double v[3][3]={{3,-1,2},{-1,2,2},{2,-2,4}};

matlab2012实验1参考答案

MATLAB 实验一 MATLAB 数值计算 试验报告说明: 1 做试验前请先预习,并独立完成试验和试验报告。 2 报告解答方式:将MATLAB 执行命令和最后运行结果从命令窗口拷贝到每题的题目下面,请将报告解答部分的底纹设置为灰色,以便于批阅。 3 在页眉上写清报告名称,学生姓名,学号,专业以及班级。 3 报告以Word 文档书写。 文档命名方式: 学号+姓名+_(下划线)+试验几.doc 如:110400220张三_试验1.doc 4 试验报告doc 文档以附件形式发送到maya_email@https://www.doczj.com/doc/e618856893.html, 。凡文档命名不符合规范,或者发送方式不正确,不予登记。 5 每次试验报告的最后提交期限:下次试验课之前。 一 目的和要求 1 熟练掌握MATLAB 变量的使用 2 熟练掌握矩阵的创建 3 熟练掌握MATLAB 的矩阵和数组的运算 4 使用元胞数组和结构数组 二 试验内容 1 创建矩阵(必做) 1.1使用直接输入,from:step:to ,linspace ,logspace 等方式创建矩阵。 1.2 输入矩阵12342 46836 9 12a ?? ?= ? ?? ? 1.2-1)分别使用全下标和单下标达方式取出元素“8” >>a=[1 2 3 4;2 4 6 8;3 6 9 12] >> a(2,4) %全下标方式 >> a(11) % 单下标方式 1.2-2)分别用不同的方式从矩阵a 中取出子矩阵?? ??? ?1286 4 3 2 %方法一:全下标方式 a([2,3],[1 2 4]) %方法二:单下标方式 a([2 5 11;3 6 12]) % 方法三:利用逻辑向量 l1=logical([0 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 ε 其中ε是一个非常小的数。这相当于是对()中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 的帮助。

Matlab作业3(数值分析)答案

Matlab作业3(数值分析) 机电工程学院(院、系)专业班组 学号姓名实验日期教师评定 1.计算多项式乘法(x2+2x+2)(x2+5x+4)。 答: 2. (1)将(x-6)(x-3)(x-8)展开为系数多项式的形式。(2)求解在x=8时多项 式(x-1)(x-2) (x-3)(x-4)的值。 答:(1) (2)

3. y=sin(x),x从0到2π,?x=0.02π,求y的最大值、最小值、均值和标准差。 4.设x=[0.00.30.8 1.1 1.6 2.3]',y=[0.500.82 1.14 1.25 1.35 1.40]',试求二次多项式拟合系数,并据此计算x1=[0.9 1.2]时对应的y1。解:x=[0.0 0.3 0.8 1.1 1.6 2.3]'; %输入变量数据x y=[0.50 0.82 1.14 1.25 1.35 1.40]'; %输入变量数据y p=polyfit(x,y,2) %对x,y用二次多项式拟合,得到系数p x1=[0.9 1.2]; %输入点x1 y1=polyval(p,x1) %估计x1处对应的y1 p = -0.2387 0.9191 0.5318 y1 = a) 1.2909

5.实验数据处理:已知某压力传感器的测试数据如下表 p为压力值,u为电压值,试用多项式 d cp bp ap p u+ + + =2 3 ) ( 来拟 合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。解: >> p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9]; u=[10,11,13,14,17,18,22,24,29,34,39]; x=polyfit(p,u,3) %得多项式系数 t=linspace(0,10,100); y=polyval(x,t); %求多项式得值 plot(p,u,'*',t,y,'r') %画拟和曲线 x = 0.0195 -0.0412 1.4469 9.8267

数值分析列主元消去法的实验报告

实验一 列主元消去法 【实验内容】 1.掌握列主元消去法的基本思路和迭代步骤 2.并能够利用列主元的高斯消去法解任意阶数的线性方程组; 3、从课后题中选一题进行验证,得出正确结果,交回实验报告与计算结果。 【实验方法与步骤】 1.列主元消去法基本思路 设有线性方程组Ax b =,设A 是可逆矩阵。列主元消去法的基本思想就是通过列主元的选取将初等行变换作用于方程组的增广矩阵[]|B A b =,将其中的A 变换成一个上三角矩阵,然后求解这个三角形方程组。 2.列主元高斯消去法算法描述 将方程组用增广矩阵[]()(1)|ij n n B A b a ?+==表示。 步骤1:消元过程,对1,2,,1k n =-L (1) 选主元,找{},1,,k i k k n ∈+L 使得 ,max k i k ik k i n a a ≤≤= (2) 如果,0k i k a =,则矩阵A 奇异,程序结束;否则执行(3); (3) 如果k i k ≠,则交换第k 行与第k i 行对应元素位置,k kj i j a a ?, ,,1j k n =+L ; (4) 消元,对,,i k n =L ,计算/,ik ik kk l a a =对1,,1j k n =++L ,计算 .ij ij ik kj a a l a =- 步骤 2:回代过程: (1) 若0,nn a =则矩阵奇异,程序结束;否则执行(2); (2) ,1/;n n n nn x a a +=对1,,2,1i n =-L ,计算 ,11/n i i n ij j ii j i x a a x a +=+??=- ??? ∑

[实验程序] #include #include #include #include #define NUMBER 20 #define Esc 0x1b #define Enter 0x0d using namespace std; float A[NUMBER][NUMBER+1] ,ark; int flag,n; void exchange(int r,int k); float max(int k); void message(); void main() { float x[NUMBER]; int r,k,i,j; char celect; void clrscr(); printf("\n\nUse Gauss."); printf("\n\n1.Jie please press Enter."); printf("\n\n2.Exit press Esc."); celect=getch(); if(celect==Esc) exit(0); printf("\n\n input n="); scanf("%d",&n); printf(" \n\nInput matrix A and B:"); for(i=1;i<=n;i++) { printf("\n\nInput a%d1--a%d%d and b%d:",i,i,n,i); for(j=1;j<=n+1;j++) scanf("%f",&A[i][j]); } for(k=1;k<=n-1;k++) { ark=max(k); if(ark==0) { printf("\n\nIt’s wrong!");message();

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和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);

数值分析实验报告总结

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

如果 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 ,那 外,还规定其必须满足相容性: 所以

实验6 Matlab数值计算实验报告

Tutorial 6 实验报告 实验名称:Matlab数值计算 实验目的: 1、掌握数据统计与分析的方法; 2、掌握数据插值和曲线拟合的方法及其应用; 3、掌握多项式的常用运算。 实验内容: 1.利用randn函数生成符合正态分布的10×5随机矩阵A,进行如下操作: (1)求A的最大元素和最小元素; (2)求A的每行元素的和以及全部元素的和; (3)分别对A的每列元素按升序、每行元素按降序排列。 2.用3次多项式方法插值计算1-100之间整数的平方根。 3.某气象观测站测得某日6:00-18:00之间每隔2h的室内外温度(°C)如下表所示。 使用三次样条插值分别求出该日室内外6:30-17:30之间每隔2h各点的近似温度,并绘制插值后的温度曲线。 4.已知lgx在[1,101]区间10个整数采样点的函数值如下表所示,

试求lgx 的5次拟合多项式p(x),并绘制lgx 和p(x)在[1,101]区间的函数曲线。 5. 有3个多项式(),(),()P x x x x P x x P x x x =+++=+=++4322 123 24522 3,试进行下列操作: (1) 求()()()()P x P x P x P x =+123。 (2) 求()P x 的根。 (3) 当x 取矩阵A 的每一元素时,求()P x 的值。其中: .....A --?? ??=?? ???? 112140752350525 6. 求函数在指定点的数值导数。 (),,f x x ==123 7. 用数值方法求定积分。 (1)I π =? 210的近似值。 (2)ln() x I dx x += +?1 22011 实验结果: 1.

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

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和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);

实验6答案 Matlab数值计算

实验6 Matlab数值计算 实验目的: 1、掌握数据统计与分析的方法; 2、掌握数据插值和曲线拟合的方法及其应用; 3、掌握多项式的常用运算。 实验内容: 1.利用randn函数生成符合正态分布的10×5随机矩阵A,进行如下操作: (1)求A的最大元素和最小元素; (2)求A的每行元素的和以及全部元素的和; (3)分别对A的每列元素按升序、每行元素按降序排列。 a = randn(10,5)+10; ma = max(max(a)) mi = min(min(a)) s = sum(a,2) sa = sum(sum(a)) p = sort(a) p1 = -sort(-a,2) 2.用3次多项式方法插值计算1-100之间整数的平方根。 f = sqrt(n); interp1(n,f,(1:100),'cubic') 3.某气象观测站测得某日6:00-18:00之间每隔2h的室内外温度(°C)如下表所示。

使用三次样条插值分别求出该日室内外6:30-17:30之间每隔2h 各点的近似温度,并绘制插值后的温度曲线。 n= 6:2:18; f1 = [18 20 22 25 30 28 24]; f2 = [15 19 24 28 34 32 30]; r = 6.5:2:17.5; w = interp1(n,f1,r,'spline'); w1 = interp1(n,f2,r,'spline'); subplot(211),plot(r,w) subplot(212),plot(r,w1) 4. 已知lgx 在[1,101]区间10个整数采样点的函数值如下表所示, 试求lgx 的5次拟合多项式p(x),并绘制lgx 和p(x)在[1,101]区间的函数曲线。 x = linspace(1,101,10); y = log(x) /log(10); p = polyfit(x,y,5) y1 = polyval(p,x) plot(x,y,':o',x,y1,'-*') legend('sin(x)','fit') 5. 有3个多项式(),(),()P x x x x P x x P x x x =+++=+=++4 3 2 2 123245223,试进 行下列操作: (1) 求()()()()P x P x P x P x =+123。 (2) 求()P x 的根。 (3) 当x 取矩阵A 的每一元素时,求()P x 的值。其中: .....A --?? ? ?=?????? 11214075 2350 5 25 p1 = [1 2 4 0 5]; p2 = [0 0 0 1 2];

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

MATLAB数值分析实验三(线性方程求解及精度分析)

佛山科学技术学院 实 验 报 告 课程名称 数值分析 实验项目 数值积分 专业班级 机械工程 姓 名 余红杰 学 号 2111505010 指导教师 陈剑 成 绩 日 期 月 日 一、实验目的 1、 掌握程序的录入和matlab 的使用和操作; 2、 了解影响线性方程组解的精度的因素——方法与问题的性态。 3、 学会Matlab 提供的“\”的求解线性方程组。 二、实验要求 1、按照题目要求完成实验内容; 2、写出相应的Matlab 程序; 3、给出实验结果(可以用表格展示实验结果); 4、分析和讨论实验结果并提出可能的优化实验。 5、写出实验报告。 三、实验步骤 1、用LU 分解及列主元高斯消去法解线性方程组 a)??????? ??=??????? ????????? ??----15900001.582012151526099999.2310 7104321x x x x , 输出b Ax =中系数LU A =分解的矩阵L 和U ,解向量x 和)det(A ;用列主元法的行交换次序解向量x 和求)det(A ;比较两种方法所得结果。 2、用列主高斯消元法解线性方程组b Ax =。 (1)、???? ? ??=????? ??????? ??--11134.981.4987.023.116.427 .199.103.601.3321x x x

(2)、???? ? ??=????? ??????? ??--11134.981.4990.023.116.427 .199.103.600.3321x x x 分别输出)det(,,A b A ,解向量x ,(1)中A 的条件数。分析比较(1)、(2)的计算结果 3、线性方程组b Ax =的A 和b 分别为 ??????? ??=1095791068565778710A ,?????? ? ??=31332332b 则解T x ),1,1,1,1(=. 用MATLAB 内部函数求)det(A 和A 的所有特征值和2)(A cond . 若令 ?????? ? ??=+98.99599.6989.998.585604.508.72.71.8710A A δ, 求解b x x A A =++))((δδ,输出向量x δ和2x δ,从理论结果和实际计算两方面分析线性 方程组b Ax =解的相对误差22/x x δ以及A 的相对误差 /A A δ的关系。 四、实验结果 1: %run311.m clc,clear; A = [10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2]; b = [8;5.90001;5;1]; %L U 分解 format short %小数点后四位,不然会受到后面的影响 [L U] = lu(A) %解方程组,输出A ,det(A) y = L\b; format long %小数点后15位显示 x = U\y

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