最新基于MATLAB的数值分析(2)

合集下载

基于MATLAB数值分析实验报告

基于MATLAB数值分析实验报告

基于MATLAB数值分析实验报告班级:072115姓名:***学号:***********实验二:矩阵与向量运算实验目的:在MATLAB里,会对矩阵与向量进行加、减、数乘、求逆及矩阵特征值运算,以及矩阵的LU分解。

设A是一个n×n方阵,X是一个n维向量,乘积Y=AX可以看作是n维空间变换。

如果能够找到一个标量λ,使得存在一个非零向量X,满足:AX=λX (3.1)则可以认为线性变换T(X)=AX将X映射为λX,此时,称X 是对应于特征值λ的特征向量。

改写式(3.1)可以得到线性方程组的标准形式:(A-λI)X=0 (3.2)式(3.2)表示矩阵(A-λI)和非零向量X的乘积是零向量,式(3.2)有非零解的充分必要条件是矩阵(A-λI)是奇异的,即:det(A-λI)=0该行列式可以表示为如下形式:a11–λa12 (1)a21 a22 –λ…a2n =0 (3.3)…………A n1 a n2 …a nn将式(3.3)中的行列式展开后,可以得到一个n阶多项式,称为特征多项式:f(λ)=det(A-λI)=(-1)n(λn+c1λn-1+c2λn-2+…+c n-1λ+c n) (3.4) n阶多项式一共有n个根(可以有重根),将每个根λ带入式(3.2),可以得到一个非零解向量。

习题:求下列矩阵的特征多项式的系数和特征值λj:3 -1 0A= -1 2 -10-1 3解:在MATLAB中输入命令:A=【3 -1 0;-1 2 -1;0 -1 3】;c=poly(A)roots(c)得到:实验四:Lagrange插值多项式实验目的:理解Lagrange插值多项式的基本概念,熟悉Lagrange插值多项式的公式源代码,并能根据所给条件求出Lagrange插值多项式,理解龙格现象。

%功能:对一组数据做Lagrange插值%调用格式:yi=Lagran_(x,y,xi)%x,y:数组形式的数据表%xi:待计算y值的横坐标数组%yi:用Lagrange还擦之算出y值数组function fi=Lagran_(x,f,xi)fi=zeros(size(xi));np1=length(f);for i=1:np1z=ones(size(xi));for j=i:np1if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));endendfi=fi+z*f(i);endreturn习题:已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。

基于MATLAB的数值分析

基于MATLAB的数值分析
计算矩阵行列式的MATLAB命令:
D det(A)
2.4 病态问题 有许多线性代数方程组理论上是可解的,但实际计算中 由于受到舍入误差的影响而无法得到精确解。此类问题成 为病态问题。
病态问题的计算过程中,小的舍入误差或系数矩阵的微 小变化都可能使解产生很大误差。(例子 P97)
病态矩阵的一个重要标志是条件数:
Ax b
情况1:m=n(正规方程),最常见; 情况2:m<n(不定方程); 情况3:m>n(超定方程); 本节只介绍情况1。 MATLAB命令:
x A \ b 效率最高 x inv(A)*b 计算时间大约是上面的50倍
2.3 不可解问题
线性代数方程组并不总是数值可解的。只有当矩阵A 的行列式不为零时才行!矩阵A的行列式即使不为零,但 当很小或很大时,解的误差可能很大。

end
end
end
function [l, u, p] sanjiaofenjie(a) [m, n] size(a); [kk, a] LGauss(a); p eye(n); for k 1: n 1
t p(k,:); p(k,:) p(kk(k),:;) p(k (k),:) t; end for k 1:n-2 fori k 1:n-1
t a(i,k); a(i,k) a(kk(i),k;) a(kk(i,)k) t; end end
for i 1:n for j 1:i if i j li(,j) 1; else li(,j) a(i,j); end end
end for i 1:n
for j i:n u(i,j) a(i,j);

a2n

第2讲 matlab的数值分析

第2讲 matlab的数值分析

第二讲MATLAB的数值分析2-1矩阵运算与数组运算矩阵运算和数组运算是MATLAB数值运算的两大类型,矩阵运算是按矩阵的运算规则进行的,而数组运算则是按数组元素逐一进行的。

因此,在进行某些运算(如乘、除)时,矩阵运算和数组运算有着较大的差别。

在MATLAB中,可以对矩阵进行数组运算,这时是把矩阵视为数组,运算按数组的运算规则。

也可以对数组进行矩阵运算,这时是把数组视为矩阵,运算按矩阵的运算规则进行。

1、矩阵加减与数组加减矩阵加减与数组加减运算效果一致,运算符也相同,可分为两种情况:(1)若参与运算的两矩阵(数组)的维数相同,则加减运算的结果是将两矩阵的对应元素进行加减,如A=[1 1 1;2 2 2;3 3 3];B=A;A+Bans=2 2 24 4 46 6 6(2)若参与运算的两矩阵之一为标量(1*1的矩阵),则加减运算的结果是将矩阵(数组)的每一元素与该标量逐一相加减,如A=[1 1 1;2 2 2;3 3 3];A+2ans=3 3 34 4 45 5 52、矩阵乘与数组乘(1)矩阵乘矩阵乘与数组乘有着较大差别,运算结果也完全不同。

矩阵乘的运算符为“*”,运算是按矩阵的乘法规则进行,即参与乘运算的两矩阵的内维必须相同。

设A、B为参与乘运算的=A m×k B k×n。

因此,参与运两矩阵,C为A和B的矩阵乘的结果,则它们必须满足关系C m×n算的两矩阵的顺序不能任意调换,因为A*B和B*A计算结果很可能是完全不一样的。

如:A=[1 1 1;2 2 2;3 3 3];B=A;A*Bans=6 6 612 12 1218 18 18F=ones(1,3);G=ones(3,1);F*Gans3G*Fans=1 1 11 1 11 1 1(2)数组乘数组乘的运算符为“.*”,运算符中的点号不能遗漏,也不能随意加空格符。

参加数组乘运算的两数组的大小必须相等(即同维数组)。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。

龙格(Runge )给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。

实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。

(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。

(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。

1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。

1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。

Matlab 脚本文件为Experiment2_1_1fx.m 。

可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。

matlab进行数值分析

matlab进行数值分析
n i n
代数插值:取 i ( x)i=0 = x ,插值函数为
i=0
F( x)=Pn ( x) an x n an1 x n1 a1 x a0
三角插值:取 i ( x)i=0
n
= sin x,cos x,sin 2 x,cos 2 x,,sin nx,cos nx
Lagrange插值
线性插值(n=1) 求次数≤1 的多项式L1(x).
L1(x1)=y1 ,
满足条件L1(x0)=y0 ,
点斜式 f ( x1 ) f ( x0 ) L1 ( x) f ( x0 ) ( x x0 ) x1 x0 对称式 x x0 x x1 L1 ( x) f ( x0 ) f ( x1 ) x0 x1 x1 x0
n
( x x0 )( x x j 1 )( x x j 1 )( x xn )
lj(x)(j=0,1,…,n)称为以x0 , x1,... , xn为节点的Lagrange插值基函 数。
将l j ( x)代入 L n( x) l j ( x) y j
j 0
n
得 ( x x 0)( x x1)...( x x j 1)( x x j 1)...( x x n) yj L n( x) j 0 ( x j x 0)( x j x1)...( x j x j 1)( x j x j 1)...( x j x n )
只要求出Pn(x)的系数a0 ,a1,…, an即可
证明 由插值条件(2)知Pn(x)的系数满足下列n+1个代数方程构成 的线性方程组 a0+a1x0+ a2x02 + …+anx0n=y0

数值分析matlab实验报告

数值分析matlab实验报告

数值分析matlab实验报告《数值分析MATLAB实验报告》摘要:本实验报告基于MATLAB软件进行了数值分析实验,通过对不同数学问题的数值计算和分析,验证了数值分析方法的有效性和准确性。

实验结果表明,MATLAB在数值分析领域具有较高的应用价值和实用性。

一、引言数值分析是一门研究利用计算机进行数值计算和分析的学科,其应用范围涵盖了数学、物理、工程等多个领域。

MATLAB是一种常用的数值计算软件,具有强大的数值分析功能,能够进行高效、准确的数值计算和分析,因此在科学研究和工程实践中得到了广泛的应用。

二、实验目的本实验旨在通过MATLAB软件对数值分析方法进行实验验证,探究其在不同数学问题上的应用效果和准确性,为数值分析方法的实际应用提供参考和指导。

三、实验内容1. 利用MATLAB进行方程求解实验在该实验中,利用MATLAB对给定的方程进行求解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。

2. 利用MATLAB进行数值积分实验通过MATLAB对给定函数进行数值积分,比较数值积分结果和解析积分结果,验证数值积分的精度和稳定性。

3. 利用MATLAB进行常微分方程数值解实验通过MATLAB对给定的常微分方程进行数值解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。

四、实验结果与分析通过对以上实验内容的实际操作和分析,得出以下结论:1. 在方程求解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在方程求解方面的高准确性和可靠性。

2. 在数值积分实验中,MATLAB给出的数值积分结果与解析积分结果基本吻合,验证了MATLAB在数值积分方面的高精度和稳定性。

3. 在常微分方程数值解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在常微分方程数值解方面的高准确性和可靠性。

五、结论与展望本实验通过MATLAB软件对数值分析方法进行了实验验证,得出了数值分析方法在不同数学问题上的高准确性和可靠性。

学习使用MATLAB进行数值计算和数据分析

学习使用MATLAB进行数值计算和数据分析

学习使用MATLAB进行数值计算和数据分析---第一章:MATLAB的基本介绍MATLAB是一种强大的数值计算和数据分析软件,广泛应用于科学研究、工程设计等领域。

它的主要特点是简洁直观的用户界面和丰富的数学函数库。

在本章中,我们将介绍MATLAB的基本特性和使用方法。

1.1 MATLAB的历史与发展MATLAB是由MathWorks公司于1984年首次推出的。

起初,它作为一个用于矩阵计算的工具被广泛使用。

随着时间的推移,MATLAB逐渐拓展了功能,加入了许多其他数学和工程计算的功能,如符号计算、数据统计和可视化。

如今,MATLAB已经成为一种非常受欢迎的工具。

1.2 MATLAB的安装和环境设置要开始使用MATLAB,首先需要从MathWorks官网下载并安装MATLAB软件。

安装完成后,打开MATLAB并设置工作目录和默认工作文件夹。

工作目录是指存储MATLAB代码和数据文件的文件夹,而默认工作文件夹是指MATLAB打开时默认选择的文件夹。

1.3 MATLAB的基本语法和命令MATLAB的基本语法和命令非常简单易懂。

它采用类似于其他编程语言的命令行交互方式,用户可以直接在命令行输入MATLAB语句并执行。

例如,可以输入"2+2"并按回车键得到结果4。

此外,MATLAB还具有许多内置的数学函数和运算符,可以进行各种数值计算和数据分析。

1.4 MATLAB脚本和函数在MATLAB中,可以使用脚本和函数来组织和执行一系列MATLAB命令。

脚本是一系列命令的集合,可以一次性运行。

函数是一段可以重复使用的代码,可以接受输入参数并返回输出结果。

通过编写脚本和函数,可以提高MATLAB代码的可重复性和可维护性。

第二章:数值计算MATLAB作为一种数值计算工具,提供了丰富的数学函数和算法,可以用于解决各种数值计算问题。

在本章中,我们将介绍MATLAB在数值计算方面的一些常用功能和技巧。

2.1 数值计算方法MATLAB中包含了许多数值计算方法,如数值积分、数值微分、线性代数求解等。

基于MATLAB数值分析实验报告

基于MATLAB数值分析实验报告

基于MATLAB数值分析实验报告班级:072115姓名:李凯学号:20111003943实验二:矩阵与向量运算实验目的:在MATLAB里,会对矩阵与向量进行加、减、数乘、求逆及矩阵特征值运算,以及矩阵的LU分解。

设A是一个n×n方阵,X是一个n维向量,乘积Y=AX可以看作是n维空间变换。

如果能够找到一个标量λ,使得存在一个非零向量X,满足:AX=λX (3.1)则可以认为线性变换T(X)=AX将X映射为λX,此时,称X 是对应于特征值λ的特征向量。

改写式(3.1)可以得到线性方程组的标准形式:(A-λI)X=0 (3.2)式(3.2)表示矩阵(A-λI)和非零向量X的乘积是零向量,式(3.2)有非零解的充分必要条件是矩阵(A-λI)是奇异的,即:det(A-λI)=0该行列式可以表示为如下形式:a11–λa12 (1)a21 a22 –λ…a2n =0 (3.3)…………A n1 a n2 …a nn将式(3.3)中的行列式展开后,可以得到一个n阶多项式,称为特征多项式:f(λ)=det(A-λI)=(-1)n(λn+c1λn-1+c2λn-2+…+c n-1λ+c n) (3.4) n阶多项式一共有n个根(可以有重根),将每个根λ带入式(3.2),可以得到一个非零解向量。

习题:求下列矩阵的特征多项式的系数和特征值λj:3 -1 0A= -1 2 -10-1 3解:在MATLAB中输入命令:A=【3 -1 0;-1 2 -1;0 -1 3】;c=poly(A)roots(c)得到:实验四:Lagrange插值多项式实验目的:理解Lagrange插值多项式的基本概念,熟悉Lagrange插值多项式的公式源代码,并能根据所给条件求出Lagrange插值多项式,理解龙格现象。

%功能:对一组数据做Lagrange插值%调用格式:yi=Lagran_(x,y,xi)%x,y:数组形式的数据表%xi:待计算y值的横坐标数组%yi:用Lagrange还擦之算出y值数组function fi=Lagran_(x,f,xi)fi=zeros(size(xi));np1=length(f);for i=1:np1z=ones(size(xi));for j=i:np1if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));endendfi=fi+z*f(i);endreturn习题:已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。

电子科大matlab与数值分析第二次上机实践报告

电子科大matlab与数值分析第二次上机实践报告

2、新建一个新仿真模块; 3、在source工具模块找到sine wave正弦波信号,拖入仿真模块;在 sinks工具模块中找到scope示波器,用线把它们连在一起,如下图。
4、双击示波器,调正参数如图
5、双击示波器,点开始方针,波形如图
题目(二) 2. 产生传递函数: 题目分析: 本题考察传递函数及其参数设置 解题步骤: 1、 在Continuous找到Transfer Fcn传递函数和Zero-Pole零—极点 增益模型,分别拖入仿真模块; 2、 设置参数如图
Gain,Sum,Product等工具。难点是方框图的设计。 解题步骤:
1、 如图建立模型
2、打开File->Model Properties->Callbacks->InitFcn,设置 参数如图
3、设置XY Graph取值范围如图
3、 双击两个示波器,点击开始仿真,调整波形,结果 如下
心得体会
Matlab上机实践报告
实践内容:Simulink的建模与仿 真。
学院: 姓名: 学号: 指导老师: 实践日期:
题目(一) 1. 产生幅值、频率为2,基准为0.5的正弦波信号。
题目分析: 本题知识对simulink的基本操作,用于对simulink操作窗口的熟悉和了 解。 解题步骤: 1、在matlab中打开simulink工具箱;
Simulinkห้องสมุดไป่ตู้有强大的仿真功能,它适应面广(线性、非线性系统;
离散、连续及混和系统),结构和流程清晰,仿真精细、提供大量函数 模块。
这次上机实验,我熟悉了matlab中simulink工具箱的基本用法,能 够运用simulink工具箱实现一些简单的仿真试验。如信号发生器的参数 控制,仿真模块图的构建等。

Matlab与数值分析实验

Matlab与数值分析实验

>> sum
法 2: >>a=1:100; >>sum=a*a’
法 3: >>n=1;
>>sum=0;
>> while n<=100
sum=sum+n*n;
n=n+1;
end
-6-
>> sum * 选择语句
if expression() statements;
[else statements;]
end 例:编写函数文件 demo3 实现 sgn 函数功能
例 2:编写命令文件 demo1 完成以下操作
-4-
建立数组 a=[1,2,3,...,20],b=[1,3,5,...,39],并求 a,b 内积 操作 1) 主窗口点击新建按钮 2) 在弹出的文本编辑窗口添加 a=1:20 b=1:2:39 sum=a*b'
3) 单击保存按钮 将文件命名为 demo1 保存在例 1 新建文件夹中
4) 在 Command Window 中输入 demo1 并回车 例 3:编写函数文件 demo2,返回输入变量的内积
操作:1) 新建 M 文件,编辑如下: function sum=demo2(a,b) sum=a*b';
2) 保存文件在查询目录下,注意不要修改默认名 3) 在 Command Window 中输入
操作:1)新建 M 文件,并编辑如下 function val=demo3(x) if x>0 val=1; elseif x<0 val=-1; else val=0; end 2) 将文件保存在查询目录内 3) >>demo3(0) >>demo3(90) >>demo3(-12)

2-MATLAB在数值分析中的应用

2-MATLAB在数值分析中的应用


分段插值
一维插值:可以分为最近插值、线性插值、三次样 条插值,分段三次Hermite插值。 y=interp1(x0,y0,x) y=interp1(x0,y0,x,’method’) method= nearst: 最近插值 linear: 线性插值(默认值) spline: 分段三次样条插值 pchip:分段三次Hermite插值
-9-
Polyinterp(symbol)
symx =sym(‘x’) P = polyinterp(x0,y0,symx) pretty(P) P = simplify(P) P= x^3-2*x-5 8/3*z*(x-1)*(x-2)+1/2*x*(x-1)*(x-3)3*x*(x-2)*(x-3)-5/6*(-x+1)*(x-2)*(x-3)
0.5 0 1 2 3 4 5 6 7 8 9
-2-
插值和拟合
在平面上给定n个点(xk,yk),可以唯一确定一个最多n-1次 的多项式通过这些点,这个多项式叫插值多项式
P(xk ) = yk , k = 1,2,…,n Lagrange插值多项式
x xj P( x ) k 1 j k xk x j
2 3
sk ,0 yk sk ,2 P xk 2
sk ,1 dk sk ,3
hk 2P xk P xk 1
6 P xk 1 P xk 6hk
-21-
x = 1:6; y = [16 18 21 17 15 12];
Lagrange插值多项式基函数
P( x) c1 xn1 c2 xn2 ... cn1 x cn
n 1 x1 n 1 x2 x n 1 n n2 x1 n2 x2

数值分析matlab实验报告

数值分析matlab实验报告

数值分析matlab实验报告数值分析 Matlab 实验报告一、实验目的数值分析是研究各种数学问题数值解法的学科,Matlab 则是一款功能强大的科学计算软件。

本次实验旨在通过使用 Matlab 解决一系列数值分析问题,加深对数值分析方法的理解和应用能力,掌握数值计算中的误差分析、数值逼近、数值积分与数值微分等基本概念和方法,并培养运用计算机解决实际数学问题的能力。

二、实验内容(一)误差分析在数值计算中,误差是不可避免的。

通过对给定函数进行计算,分析截断误差和舍入误差的影响。

例如,计算函数$f(x) =\sin(x)$在$x = 05$ 附近的值,比较不同精度下的结果差异。

(二)数值逼近1、多项式插值使用拉格朗日插值法和牛顿插值法对给定的数据点进行插值,得到拟合多项式,并分析其误差。

2、曲线拟合采用最小二乘法对给定的数据进行线性和非线性曲线拟合,如多项式曲线拟合和指数曲线拟合。

(三)数值积分1、牛顿柯特斯公式实现梯形公式、辛普森公式和柯特斯公式,计算给定函数在特定区间上的积分值,并分析误差。

2、高斯求积公式使用高斯勒让德求积公式计算积分,比较其精度与牛顿柯特斯公式的差异。

(四)数值微分利用差商公式计算函数的数值导数,分析步长对结果的影响,探讨如何选择合适的步长以提高精度。

三、实验步骤(一)误差分析1、定义函数`compute_sin_error` 来计算不同精度下的正弦函数值和误差。

```matlabfunction value, error = compute_sin_error(x, precision)true_value = sin(x);computed_value = vpa(sin(x), precision);error = abs(true_value computed_value);end```2、在主程序中调用该函数,分别设置不同的精度进行计算和分析。

(二)数值逼近1、拉格朗日插值法```matlabfunction L = lagrange_interpolation(x, y, xi)n = length(x);L = 0;for i = 1:nli = 1;for j = 1:nif j ~= ili = li (xi x(j))/(x(i) x(j));endendL = L + y(i) li;endend```2、牛顿插值法```matlabfunction N = newton_interpolation(x, y, xi)n = length(x);%计算差商表D = zeros(n, n);D(:, 1) = y';for j = 2:nfor i = j:nD(i, j) =(D(i, j 1) D(i 1, j 1))/(x(i) x(i j + 1));endend%计算插值结果N = D(1, 1);term = 1;for i = 2:nterm = term (xi x(i 1));N = N + D(i, i) term;endend```3、曲线拟合```matlab%线性最小二乘拟合p = polyfit(x, y, 1);y_fit_linear = polyval(p, x);%多项式曲线拟合p = polyfit(x, y, n);% n 为多项式的次数y_fit_poly = polyval(p, x);%指数曲线拟合p = fit(x, y, 'exp1');y_fit_exp = p(x);```(三)数值积分1、梯形公式```matlabfunction T = trapezoidal_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);T = h ((y(1) + y(end))/ 2 + sum(y(2:end 1)));end```2、辛普森公式```matlabfunction S = simpson_rule(f, a, b, n)if mod(n, 2) ~= 0error('n 必须为偶数');endh =(b a) / n;x = a:h:b;y = f(x);S = h / 3 (y(1) + 4 sum(y(2:2:end 1))+ 2 sum(y(3:2:end 2))+ y(end));end```3、柯特斯公式```matlabfunction C = cotes_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);w = 7, 32, 12, 32, 7 / 90;C = h sum(w y);end```4、高斯勒让德求积公式```matlabfunction G = gauss_legendre_integration(f, a, b)x, w = gauss_legendre(5);%选择适当的节点数t =(b a) / 2 x +(a + b) / 2;G =(b a) / 2 sum(w f(t));end```(四)数值微分```matlabfunction dydx = numerical_derivative(f, x, h)dydx =(f(x + h) f(x h))/(2 h);end```四、实验结果与分析(一)误差分析通过不同精度的计算,发现随着精度的提高,误差逐渐减小,但计算时间也相应增加。

数值分析课程设计报告(MATLAB版)

数值分析课程设计报告(MATLAB版)

(2)取右端向量 b 的三位有效数字得 b [1.83 1.08 0.783]T ,求方程组的准确 解 X ,并与 X 的数据 [1 1 1]T 作比较 。说明矩阵的病态性。
算法及相应结果: (1)在 MATLAB 命令窗口里输入如下命令: >> H=[1 1/2 1/3;1/2 1/3 1/4;1/3 1/4 1/5]; b=[11/6 13/12 47/60]'; >> x=H\b 回车得到结果为: x = 1.0000 1.0000 1.0000 (2)紧接着在上题基础上继续输入如下命令: >> c=[1.83 1.08 0.783]'; x1=H\c 回车得到如下结果: x1 = 1.0800 0.5400 1.4400
问题分析:考虑由直线段(2 个点)产生第一个图形(5 个点)的过程,设 P 1 和 P5 分别为原始直线段的两个端点。现在需要在直线段的中间依次插入三个点 。显然, P2 位于 P P2 , P3 , P4 产生第一次迭代的图形(图 1-4) 1 点右端直线段的三分 之一处, P4 点绕 P2 旋转 60 度(逆时针方向)而得到的,故可以处理为向量 P2 P4 经正交变换而得到向量 P2 P3 ,形成算法如下: (1) P2 P 1 (P 5 P 1) / 3 ; (2) P4 P 1 2( P 5 P 1) / 3 ; (3) P3 P2 ( P4 P2 ) AT ; 在算法的第三步中,A 为正交矩阵。
运行结果: 0.0884 0.0580 0.0431 0.0343 0.0285 0.0243 0.0212 0.0188 0.0169 0.0154 0.0141 0.0130 0.0120 0.0112 0.0105 0.0099 0.0094 0.0087 0.0092 0.0042 (2)从 I 30 较粗略的估计值出发,我们不妨取 0.01. 源程序:

数值分析第二章MATLAB计算实验报告

数值分析第二章MATLAB计算实验报告

数值分析MATLAB 计算实验报告姓名 班级 学号一、实验名称根据给定数据利用MATLAB 编程做出4次牛顿插值与三次样条插值的插值函数与被插值函数图形 二、实验目的1.理解牛顿插值的定义并且编写出与其算法对应的MATLAB 程序代码;2.了解三次样条插值的构造方法并且编写出与其算法对应的MATLAB 程序代码; 3.体会利用MATLAB 软件进行数值计算 。

三、实验内容已知函数在下列各点的值为:x i 0.2 0.4 0.6 0.8 1 .0 f(x i )0.980.920.810.640.38试用4次牛顿插值多项式P 4(x)及三样条函数S(x)(自然边界条件)对数据进行插值。

使用Matlab 软件用图给出{(x i ,y i ),x i =0.2+0.08i, i=0,1,11,10},P 4(x)及S(x) 四、算法描述 1.牛顿插值公式:P n (x)=f(x 0)+f[x 0,x 1](x-x 0)+f[x 0,x 1,x 2](x-x 0)(x-x 1)+… +f[x 0,x 1,…,x n ](x-x 0)…(x-x n-1),当n=4时,将插值点x i 及插值点对应的函数值f(x i )带入上式可得4次牛顿插值多项式。

2.三次样条插值:使用三弯矩法,令n i x s M i i ,,2,1,0),( =''=, 首先,以(x i ,M i ),(x i-1,M i-1)为结点作线性插值:i ii i i i M h x x M h x x x s 11)(---+--='',其中h i =x i -x i-1紧接着,连续积分两次:213131)(6)(6)(c x c x x h M x x h M x s i ii i i i ++-+-=--再利用插值条件11)(,)(--==i i i i y x s y x s)()6()()6()(6)(6)(1113131-------+--+-+-=i i ii i i i i i i i i i i i i x x h M h y x x h Mh y x x h M x x h M x sn i x x x i i ,,2,1,1 =≤≤-然后利用s '(x)在内结点连续的条件求M i ,s '(x i -0)=s '(x i +0))6()6()(2)(2)(112121i i i i i i i i i i i i i i h Mh y h M h y x x h M x x h M x s -+---+--='----ii ii i i i i i i i i h y y M M h x x h M x x h M 112121)(6)(2)(2-----+---+--=ii x x x ≤≤-11111211211)(6)(2)(2)(++++++++-+---+--='i ii i i i i i i i i i h y y M M h x x h M x x h M x s1+≤≤i i x x xii i i i i i i h y y M h M h x s 1163)0(---++=-'1111163)0(+++++-+--=+'i ii i i i i i h y y M h M h x s得i i i i i i i h y y M h M h 1163---++1111163+++++-+--=i ii i i i i h y y M h M hii i i i i i i i i i i i h y y h y y M h M h h M h 11111116)33(6-+++++----=+++)(62111111111ii i i i i i i i i i i i i i i i h y y h y y h h M h h h M M h h h -++++++-+---+=++++1,,2,1,211-==+++-n i M M M i i i i i i βαγ最后,根据三条边界条件,求出的值。

第6章_MATLAB数值计算_part2

第6章_MATLAB数值计算_part2

6.2.2 数值积分

b a b
f ( x)dx p1 ( x)dx (b a )
a
b
f (a ) f (b) 2 ab
( f (a) 4 f ( ) f (b)) 数值积分方法 6 2 n 1 求解定积分的数值方法多种多样, h T f ( a ) f ( b ) 2 f ( a kh ) n 如简单的梯形法、辛普生 2 k 1 (Simpson)• 法、牛顿-柯特斯 h S ( f (x ) 4 f (x ) f ( x 1)) (Newton-Cotes)法等都是经常采 6 用的方法。 h f (a) 4 f ( x ) 2 f ( x ) f (b) 基本思想 6
第6章 MATLAB数值计算
6.1 6.2 6.3 6.4 6.5 数据处理与多项式计算 数值微积分 线性方程组求解 最优化问.1 数值微分(导数) 不关心微分的形式和性质,只关心该微分在一串离散点 的近似值以及所计算的近似值有多大的误差。 MATLAB下求数值导数的两种方法:
I e
0
1
x2
dx
2 被积函数由一个表格定义
在科学实验和工程应用中,函数关系往往是不知道 的,只有实验测定的一组样本点和样本值,这时, 就无法使用quad函数计算其定积分。 在MATLAB中,对由表格形式定义的函数关系的求 定积分问题用trapz(X,Y)函数。 其中向量X、Y定义函数关系Y=f(X)。
值得一提的是,当已知给出的样本数N0不是2 的幂次时,可以取一个N使它大于N0且是2 的幂次,然后利用函数格式fft(X,N)或 fft(X,N,dim)便可进行快速傅立叶变换。这 样,计算速度将大大加快。 相应地,一维离散傅立叶逆变换函数是ifft。 ifft(F)返回F的一维离散傅立叶逆变换; ifft(F,N)为N点逆变换;ifft(F,[],dim)或 ifft(F,N,dim)则由N或dim确定逆变换的点数 或操作方向。

利用MATLAB进行数值计算与数值方法分析

利用MATLAB进行数值计算与数值方法分析

利用MATLAB进行数值计算与数值方法分析一、引言数值计算是一种通过数值方法来解决实际问题的方法,它在科学工程领域中得到广泛的应用。

而MATLAB作为一种强大的数值计算工具,在数值计算和数值方法的分析中扮演着重要的角色。

本文将讨论利用MATLAB进行数值计算与数值方法分析的一些基本原理与实践方法。

二、MATLAB的基本特点MATLAB是一种高级的计算机语言和环境,具有以下几个基本特点:1.丰富的数学函数库:MATLAB内置了大量的数值分析和数学运算函数,可以方便地进行各种数值计算和数学运算。

2.灵活的矩阵操作:MATLAB以矩阵作为基本的数据类型,可以进行矩阵的各种运算和操作,方便处理线性方程组和矩阵运算等问题。

3.强大的绘图功能:MATLAB具有强大的绘图功能,可以制作各种二维和三维的图形,方便进行数据的可视化分析。

4.友好的交互式界面:MATLAB提供了友好的交互式界面,用户可以方便地输入和执行各种命令,实时查看结果。

三、数值计算与数值方法分析数值计算是利用计算机进行数值运算和数学计算的过程,通常将实际问题转化为数学模型,然后利用数值方法求解这些模型。

数值方法是一种通过数值计算来近似解决实际问题的方法,常用的数值方法包括数值逼近、数值积分、差分法、数值解微分方程等。

在实际应用中,我们通常会遇到各种实际问题,如求解非线性方程、求解线性方程组、数值积分、数值微分、函数逼近、曲线拟合、数据插值等。

对于这些问题,我们可以利用MATLAB提供的数值计算工具和数值方法进行分析和求解。

四、数值计算的基本步骤进行数值计算通常需要经过以下几个基本步骤:1.问题建模:将实际问题转化为数学模型,并定义相应的变量、参数和初始条件。

2.选择数值方法:根据问题的特点和要求,选择适当的数值方法进行求解,如牛顿法、二分法、高斯消去法、龙格-库塔法等。

3.编程实现:利用MATLAB编写程序实现所选择的数值方法,将问题具体化为计算机可以理解的指令。

matlab数值分析2 微分方程

matlab数值分析2 微分方程

13.5微分与积分相反,数值微分非常困难。

积分描述了一个函数的整体或宏观性质,而微分则描述一个函数在一点处的斜率,这是函数的微观性质。

因此积分对函数的形状在小范围内的改变不敏感。

而微分却很敏感。

一个函数小的变化,容易产生相邻点的斜率的大的改变。

由于微分这个固有的困难,所以尽可能避免数值微分,特别是对实验获得的数据进行微分。

在这种情况下,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分。

或用另一种方法,对该数据进行三次样条拟合,然后寻找如第11章所讨论的样条微分。

例如,再次考虑第11章曲线拟合的例子。

>>x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]>>y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; % data>>n=2; % order of fit>>p=polyfit(x , y , n) % find polynomial coefficientsp =-9.8108 20.1293 -0.0317>>xi=linspace(0 , 1 , 100);>>z=polyval(p , xi); % evaluate polynomial>>plot(x , y , ‘ o ' , x , y , xi , z , ' : ')>>xlabel(‘ x ‘) , ylabel(‘ y=f(x) ‘) , title(‘ Second Order Curve Fitting ‘)在这种情况下,运用多项式微分函数polyder求得微分。

>>pd=polyder(p)pd =-19.6217 20.1293图13.6 二次曲线拟合<![endif]>的微分是dy/dx=-19.6217x+20.1293。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0
1
2
3
4
5
6
7
双纵坐标图 plotyy(x1,y1,x2, y2)
【例】画出函数
yxsinx和积分
s x(xsinx)dx在区间 [0,4] 0
上的曲线。
clf;dx=0.1;x=0:dx:4;y=x.*sin(x);s=cumtrapz(y)*dx; plotyy(x,y,x,s),text(0.5,0,'\fontsize{14}\ity=xsinx')
plot(y): 相当于x=[1,2,…,length(y)]时情形。
【例】二维曲线绘图基本指令演示。 t=(0:pi/50:2*pi)'; Y=cos(t); plot(t,Y)
再试验plot(t),plot(Y), plot(Y,t) ,以观察产生图形的不同。
绘制多个图形
1. plot(x,[y1;y2;…]),
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.5
1
1.5
2
2.5
3
分格线和坐标框
grid: grid on(画出分格线), grid off (不画出分格线)
box : box on (坐标呈封闭形式), box off (坐标呈开启形式)
【例】 n=(0:12)'; y=1./abs(n-6); Subplot(1,2,1),plot(n,y,'r*','MarkerSize',20),box on Subplot(1,2,2), plot(n,y,'r*','MarkerSize',20),box off
plot(x,y,‘颜色+线型+点形’) plot(x,y,‘颜色+线型+点形’,x,y,‘颜
色+线型+点形’,… )
句柄图形和set命令改变属性值,可套用:
h=plot(x,y), set(h,‘属性’,属性值,‘属性’,属性值,…) 也可用plot(x,y,'属性','属性值')设置图形对
x是横坐标向量,[y1;y2;…]是由若干函数 的纵坐标拼成的矩阵
2. plot(x,y1), hold on, plot(x,y2), hold off
3. plot(x,y1,x,y2,…) 4.plotyy
两个坐标系,用于绘制不同尺度的函数。
【例】二维曲线绘图基本指令演示。
t=(0:pi/50:2*pi)';
象的属性。
属性变量和属性值
色彩符号:
线宽:LineWidth
蓝b
点的大小: MarkerSize 绿 g
线型:LineStyle
红r
颜色:color
青c
品红 m 黄y 黑k 白w
标记类型符号:

.
加号 +
星号 *
菱形 d
圆形 o
五角形 p 正方形 s 三角形 ^ x标记 x
线类型符号: 实线 虚线 -点线 : 点划线 -.
例 改变绘图的线型和颜色。 程序
h=plot([0:0.1:2*pi],sin([0:0.1:2*pi])); set(h,'LineWidth',5,'color','red');
【例】用图形表示离散函数 y (n6)1 。
n=(0:12)'; y=1./abs(n-6); plot(n,y,'r*',…
text(2.5,3.5,['\fontsize{14}\its=',sint,'\fontsize{14 }\itxsinxdx'])
5
4
s=? xxsinxdx 0
cumtrapz:求累计积分 text:标识内容的位置
0
y=xsinx2-5000.51
1.5
2
2.5
3
3.5
4
线型、点形和颜色的控制
k=0.4:0.1:1;
Y=cos(t)*k;
plot(t,Y)
再试验plot(t),plot(Y), plot(Y,t) ,以观察产生图形 的不同。
1
0.8 0.6 0.4
0.2
0 -0.2
-0.4 -0.6
-0.8
-1
0
1
2
3
4
5
6
7
多次叠绘 hold :hold on, hold off
【例】利用hold绘制离散信号通过零阶保持器后产生的波形。 t=2*pi*(0:20)/20;y=cos(t).*exp(-0.4*t); stem(t,y,'g');hold on;stairs(t,y,'r'); hold off
基于MATLAB的数值分析(2)
点的大小: MarkerSize
色彩符号: 蓝b 绿g 红r 青c
品红 m 黄y 黑k 白w
标记类型符号:

.
加号 +
星号 *
菱形 d
圆形 o
五角形 p 正方形 s 三角形 ^ x标记 x
2.2 二维曲线绘图的基本操作
plot(x,y): 以x为横坐标、y为纵坐标绘制二维图形 x,y是同维数的向量;
【例】用图形表示连续调制波形 ysin t)s(in 9t)(及其包络线。 t=(0:pi/100:pi)'; y1=sin(t)*[1,-1]; y2=sin(t).*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3);plot(t,y1,'r:',t,y2,'b' ,t3,y3,'bo') axis([0,pi,-1,1])
其 中 xmin<x<xmax, ymin<y<ymax , zmin<z<zmax。
axis: axis on(使用轴背景),axis off(取消轴背景) axis equal, axis fill, axis image, axis normal,
axis square, axis tight, axis vis3d
'MarkerSize',20) grid on
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
2
4
6
8
10
12
坐标轴的控制
axis指令
axis([xmin xmax ymin ymax]): 设定二维图形的x和y坐标的范围;
axis([xmin xmax ymin ymax zmin ymax]): 设定三维图形的坐标范围 ;
文字标注
title(‘图形标题’); xlabel(‘x轴名称’);ylabel(‘y轴名称’);
zlabel(‘z轴名称’); text(‘说明文字’):创建说明文字; gtext(‘说明文字’):用鼠标在特定位置输入
文字。
相关文档
最新文档