第06章_MATLAB数值计算_例题源程序汇总

合集下载

matlab数值计算()(PDF)

matlab数值计算()(PDF)
1.57449318974494 ki =
1.1 数值差分与差商 在MATLAB中,没有直接提供求数值导数的函数,只
有计算向前差分的函数diff,其调用格式为:
DX=diff(X):计算向量X的向前差分,即: DX(i)=X(i+1)-X(i),i=1,2,…,n-1。
注意:s1fft是关于N/2共轭对称的!
其中一组信号(蓝色曲线为滤波后的数据)
滤波用的matlab程序:
Flow=5; %不是5Hz Fhigh=500; sfft=fft(s);
sfftnew=sfft; sfftnew(1:Flow-1)=0;%:end-Mlow sfftnew(end-Flow+1:end)=0; sfftnew(Fhigh:end-Fhigh)=0; snew=ifft(sfftnew);
命令如下:
V=vander(1:6) DV=diff(V) %计算V的一阶差分
范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个 指定的向量, 其他各列 是其后列与倒数第二列的点乘积。 可以用 一个指定向量生成一个范得蒙矩阵。 在 MATLAB中,函数vander(V)生成以向量 V 为基础向量的范得蒙矩阵 例如, A=vander([1;2;3;5])即可得到上述范得矩 阵。
例6-7 计算二重定积分 (1) 建立一个函数文件fxy.m: function f=fxy(x,y)
1 ∫
2 ∫
− e
x2 2
sin(x2 +
y)dxdy
−1−2
global ki;
ki=ki+1;
%ki用于统计被积函数的调用次数
f=exp(-x.^2/2).*sin(x.^2+y);

第06章_MATLAB数值计算_参考解答

第06章_MATLAB数值计算_参考解答

%可参见教材第 157 页例 6.19
运行结果: dx =
000
%当 x=pi/2 时单独计算 x=pi/2; f=inline('sin(x).^2+cos(x).^2'); dx=diff(f([x, pi]))/(pi/2)
dx = 0
(2) 程序设计: clear all; close all; clc; x=1:3; f=inline('sqrt(x.^2+1)'); dx=diff(f([x, 4]))
运行结果:
U= 1.0e-004 * -0.0675
0.1715
fmin = 1.9920e-010
(2) 程序设计: clear all; close all; clc; f=inline('-sin(x)-cos(x.^2)'); fmax=fminbnd(f, 0, pi)
%用内联函数,求负的最小值 %注意函数名 f 不加单引号'
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
教材 P189 习题六
第 6 章 MATLAB 数值计算
1. 利用 MATLAB 提供的 randn 函数生成符合正态分布的 10×5 随机矩阵 A,进行如下操 作:
(1) A 各列元素的均值和标准方差。 (2) A 的最大元素和最小元素。 (3) 求 A 每行元素的和以及全部元素之和。 (4) 分别对 A 的每列元素按升序、每行元素按降序排列。 答:
运行结果: P=
0
15.0000
7.0000 -3.5000
0.5000 -2.0000 -2.0000

MATLAB 06M文件函数和脚本文件

MATLAB 06M文件函数和脚本文件
注意:运行命令文件之前,必须将文件放在MATLAB的搜索路径上。 [例6—1] 链接 建立命令文件,并绘制宝石项链图。
3. 函数文件
如果M文件的开头第一行是function,则此文件是函数文件(Function File)。 在MATLAB中提供的大部分命令都由函数文件定义,从使用角度上看,函 数文件犹如一个“黑箱”,从外界只能看到传给它的输入变量和送出来的 计算结果,而内部运作是藏而不见的。
2. MATLAB搜索路径
MATLAB用搜索路径来寻找脚本和函数M文件。MATLAB的M文件放在大 量的目录(或文件夹)和子目录(或子文件夹)中。能找到M文件的所有目录的 清单称为MATLAB搜索路径或MATLABPATH。 MATLAB搜索路径的用法: 当你输入》cow,MATLAB将: 检查cow是否为MATLAB工作空间中的变量;如不是, 检查cow是否为内置函数;如不是,
4
[例6—2]
链接
函数文件01。 函数文件和命令文件的区别在于:命令文件的变量在文件执行完程序后仍 然保留在内存中,而函数文件内定义的变量仅在函数文件内部起作用,当 函数文件执行完程序后,这些内部变量将被清除。 函数文件和命令文件类似之处在于:它们都有一个扩展名为“.m”的文本文 件,而且函数文件和命令文件一样,都是由文本编辑器所创建的外部文本 文件。 (1)函数文件的一般结构 MATLAB的函数M文件通常由以下五部分组成: 函数定义行(Function Declaration Line); H1行(The First Help Text line): 在线函数帮助文件〔Help Text); 注释; 函数体(Function Body)。 见 [例6—2] 链接
2
M文件编辑器同样也是一个Windows的标准界面,各个菜单项的使用同 MATLAB的命令窗口大致相同。 比起MATLAB6.0的工作环境窗口,M文件编辑器的菜单栏多了[Text]、 [Debug]和[Breakpiont]三项,分别用于对M文件的文字说明、调试和断点 设置。 利用M文件可以自编函数和命令,也可以对已经存在的函数和命令进行 修改和扩充,因此对MATLAB的二次开发非常方便。 在MATLAB中,M文件有两种形式,一种是命令文件(脚本文件Scriptfile);另一种是函数文件(Function-file)。

MATLAB的数值计算

MATLAB的数值计算
表示为:p=[1 -12 0 25 116],使用函数roots可以求出多项式等于0的根,根用列向量表示。若已知多项式等于0的根,函数poly可以求出相应多项式。
例:a=[1 2 3;4 5 6;7 8 0]; p=poly(a) p =1.00 -6.00 -72.00 -27.00 p是多项式p(x)=x3-6x2-72x-27的matlab描述方法,我们可用: p1=poly2str(p,‘x’) — 函数文件,显示 数学多项式的形式 p1 =x^3 - 6 x^2 - 72 x - 27
a./b=b.\a a.\b=b./a a./b=b.\a — 都是a的元素被b的对应元 素除 a.\b=b./a — 都是a的元素被b的对应元 素除 例: a=[1 2 3];b=[4 5 6]; c1=a.\b; c2=b./a c1 = 4.0000 2.5000 2.0000 c2 = 4.0000 2.5000 2.0000
—— 给出a,b对应元素间的商.
3. 数组乘方(.^) — 元素对元素的幂 例: a=[1 2 3];b=[4 5 6]; z=a.^2 z = 1.00 4.00 9.00 z=a.^b z = 1.00 32.00 729.00
对于p的其它值,计算将涉及特征值 和特征向量,如果p是矩阵,a是标量 a^p使用特征值和特征向量自乘到p次 幂;如a,p都是矩阵,a^p则无意义。
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42 66 81 96 102 126 150
2. 数组乘除(,./,.\) ab —— a,b两数组必须有相同的行 和列两数组相应元素相乘。 a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10]; a.*b ans = 2 8 18 4 15 30 49 72 90

第06章_MATLAB数值计算_例题源程序.

第06章_MATLAB数值计算_例题源程序.

第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。

13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。

也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。

也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。

A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。

也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。

X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。

x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。

X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。

185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -⎰e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。

matlab基础matlab数值运算

matlab基础matlab数值运算

04
数值运算进阶
线性方程组求解
直接法
使用高斯消元法、LU分解等直接求解线性方程组的方法。
迭代法
使用如雅可比迭代、高斯-赛德尔迭代等迭代方法求解线性方程 组。
预处理技术
通过预处理手段改进直接法或迭代法的收敛速度和稳定性。
数值积分与微分
数值积分
使用如梯形法、辛普森法等数值积分方法计算 函数的积分值。
频谱分析
通过快速傅里叶变换等数值方法对信号进行频谱分析,提 取信号的频率成分和特征,用于音频、雷达、通信等领域。
信号压缩
利用数值方法对信号进行压缩编码,减小存储和传输成本, 用于音频、视频、遥感等领域。
在图像处理中的应用
图像增强
通过数值运算对图像进 行增强处理,提高图像 的对比度、清晰度等, 用于医学影像、安防监 控等领域。
数值微分
通过差分法计算函数的导数值,如前向差分、 后向差分和中心差分。
自动微分
利用Matlab的符号计算功能,自动求取函数的导数。
插值与拟合
一维插值
使用如拉格朗日插值、牛顿插值等一维插值方法。
多维插值
使用如样条插值、克里金插值等多维插值方法。
曲线拟合
通过最小二乘法等手段对数据进行曲线拟合。
数值优化
流体动力学模拟
通过数值方法求解流体动力学方程,模拟流体流动、传热等现象, 用于航空航天、流体机械等领域。
电磁场模拟
利用数值方法求解电磁场方程,模拟电磁波的传播、散射等现象, 用于雷达、通信、电磁兼容等领域。
在信号处理中的应用
信号滤波
利用数值运算对信号进行滤波处理,去除噪声、增强信号 特征,用于语音、图像、通信等领域。
图像去噪
利用数值方法对图像进 行去噪处理,去除图像 中的噪声和干扰,用于 遥感影像、医学影像等 领域。

Matlab数学运算及数值计算

Matlab数学运算及数值计算

MATLAB中变量的作用域一般默认 为局部变量,仅在当前调用的M文件 中有效。如果要定义全局变量,则 必须用global来声明。一般情况下, 为了和局部变量有所区别,常将全 局变量用大写字母表示,但这并不 是必需的,只是人为的一种约定而 已。
编辑ppt
比如以下的例子就是输入了变量x和X,这是两个不同的 变量,一个是数字,一个是矩阵。
编辑ppt
1.数值变量
MATLAB是以矩阵为基本运算单元的,而构成数 值矩阵的基本单元就是数值。MATLAB中的 变量名必须遵循:
(a) 变量名区分大小写; (b) 变量名的长度不超过63位,超过时给出警告
信息; (c) 变量名必须以字母开头,其余可包含字母、
数字、下划线,但不得使用标点符号。
编辑ppt
编辑ppt
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42
66 81 96 102 126 150
※当一个方阵有复数特征值或负实 特征值时,非整数幂是复数阵。
编辑ppt
a^0.5 ans =
0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i
可以用A(,)= 来修改。
编辑ppt
例如
a=[1 2 0;3 0 5;7 8 9]
a =1 2 0 305
还可以用函数subs修改
789 a(3,3)=0 a =1 2 0

MATLAB数值计算

MATLAB数值计算
>>s='symbolic' s= symbolic >>size(s) ans = 1 8 >>s(3) ans = m
字符串的转换
double num2str int2str mat2str str2num 字符串转换为数值代码 数字转换为字符串 整数转换为字符串 矩阵转换为字符串 转换字符串为数字
矩阵与常数的运算 常数与此矩阵的各元素之间进行运算。 注意:进行数除时,常数通常只能做除数。 >>A=[2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 矩阵的逆运算 5]; 函数 inv >>inv(A)
ans = -0.0471 0.5882 -0.2706 0.3882 -0.3529 0.4824 -0.2235 0.2941 -0.0353 -0.0353 -0.0588 0.0471 -0.9412 0.7647 -0.4706 0.2941
矩阵的基本函数运算
特征值函数 函数 [x,y]=eig(A) 可以给出特征值和特征向量的值 x为特征向量矩阵,y为特征值矩阵。
矩阵的基本运算
加减运算 要求两矩阵必须同阶。
>>a=[1 2 3;2 3 4; 3 4 5]; >>b=[1 1 1;2 2 2;3 3 3]; >>c=a+b
c=
2 4 6 3 5 7 4 6 8
乘法
要求a为i×j阶, b为j×k阶时, ab才能相乘。
>>e=[b,[5 5 5]'] e= 1 2 3 1 2 3 1 2 3 5 5 5
>>b{2} ans =

第6讲MATLAB的数值计算

第6讲MATLAB的数值计算

第6讲MATLAB的数值计算MATLAB(Matrix Laboratory)是一种使用高级编程语言和环境的数值计算软件。

它的设计初衷是为了简化科学和工程的数值计算过程,提供了许多功能强大的工具和函数,可以用于解决各种数学问题。

在本讲中,我们将介绍MATLAB的数值计算功能以及如何使用它进行数据分析和数值模拟。

首先,MATLAB提供了丰富的数学函数,可以用于计算各种数学运算,如基本的加减乘除、三角函数、指数函数等。

这些函数可以直接调用,无需编写复杂的程序来实现。

例如,计算一个数的平方可以使用`sqrt(`函数,计算两个数的和可以使用`sum(`函数,计算一个矩阵的逆可以使用`inv(`函数。

此外,MATLAB还提供了一些特殊的数学函数,如贝塞尔函数、Gamma函数等,可以用于更复杂的数学计算。

其次,MATLAB提供了强大的矩阵和向量计算功能。

在MATLAB中,矩阵和向量是一种基本的数据类型,可以进行各种矩阵运算。

MATLAB提供了许多矩阵运算的函数,如矩阵乘法`*`、矩阵加法`+`、矩阵转置`'`等。

此外,MATLAB还提供了一些专门用于矩阵和向量计算的函数,如求矩阵的行列式`det(`、求矩阵的特征值`eig(`、求矩阵的秩`rank(`等。

这些函数可以帮助我们进行复杂的矩阵运算,如矩阵的特征分解、矩阵的奇异值分解等。

再次,MATLAB提供了丰富的数据分析和统计工具。

在MATLAB中,我们可以使用各种函数来对数据进行处理和分析。

例如,我们可以使用`mean(`函数来计算数据的平均值,使用`std(`函数来计算数据的标准差,使用`histogram(`函数来绘制数据的直方图等。

此外,MATLAB还提供了一些专门用于数据分析和统计的工具箱,如统计工具箱、数据拟合工具箱等。

这些工具箱提供了许多高级的数据分析方法和算法,可以帮助我们进行更深入的数据分析。

最后,MATLAB还可以用于数值模拟和求解各种数学模型。

matlab的数值运算

matlab的数值运算

matlab的数值运算当使用MATLAB 进行数值运算时,可以使用各种内置函数和运算符进行计算。

下面是一些常见的数值运算操作的详细说明:基本数学运算:加法:使用"+" 运算符进行两个数的相加。

例如,计算2 和3 的和:2 + 3。

减法:使用"-" 运算符进行两个数的相减。

例如,计算5 减去2 的结果:5 - 2。

乘法:使用"*" 运算符进行两个数的相乘。

例如,计算4 乘以3 的结果:4 * 3。

除法:使用"/" 运算符进行两个数的相除。

例如,计算10 除以2 的结果:10 / 2。

取余数:使用"mod" 函数或"%" 运算符计算两个数的余数。

例如,计算11 除以3 的余数:mod(11, 3) 或11 % 3。

幂运算:使用"^" 运算符进行幂运算。

例如,计算2 的3 次幂:2^3。

数学函数:MATLAB 提供了许多内置的数学函数,可以进行各种数值计算和分析操作。

这些函数包括但不限于:abs(x):返回x 的绝对值。

sin(x):返回x 的正弦值。

cos(x):返回x 的余弦值。

exp(x):返回e 的x 次幂,其中e 是自然对数的底数。

log(x):返回x 的自然对数。

sqrt(x):返回x 的平方根。

round(x):返回x 的四舍五入值。

floor(x):返回不大于x 的最大整数。

ceil(x):返回不小于x 的最小整数。

max(x, y):返回x 和y 中的较大值。

min(x, y):返回x 和y 中的较小值。

数组运算:MATLAB 中的数值计算通常涉及数组操作。

可以对向量、矩阵和多维数组执行各种运算,例如:矩阵相加:使用"+" 运算符对两个相同大小的矩阵进行元素级别的相加。

矩阵相乘:使用"" 运算符对两个矩阵进行乘法运算。

数值计算实例MATLAB实现(附带详细源码)

数值计算实例MATLAB实现(附带详细源码)

数值计算实例MATLAB实现附带详细源码1.在化学反应中,A 的一个分子和 B 的一个分子结合形成物质 C 的分子。

若在时刻t 时,物质 C 的浓度为() y t ,则其是下述初值问题的解()()() ,00y k a y b y y '=--=其中k 为正常数,a 和 b 分别表示 A 和 B 的初始浓度。

假设k = 0.01, a =70毫摩/升, b = 50 毫摩/升. 该方程的真解为0.20.2350(1)()75t te y t e---=- (1)自己编写程序,使用四阶经典Runge-Kutta (龙格-库塔法),以步长为0.5h =,在区间[0, 20]上给出() y t 的近似解; (2)列表给出真解和近似解的比较;(3)讨论当t →∞时,近似解的变化趋势,并分析该数值结果。

解:数学原理:四阶经典Runge-Kutta (龙格-库塔法)112341213243(22)6(,)(,)22(,)22(,)m m m m m m m m m m hu u k k k k k f t u h hk f t u k h hk f t u k k f t h u hk +=++++==++=++=++程序设计见附录 结果如下表:(3)近似解变化趋势当t→∞时,由以下极限方程可知:0.20.2350(1)()75lim()tttey tey t--→∞⎧-=-⎪⎨⎪⎩随着t→∞,近似值越来越接近真实值,极限的真实值为50,lim()50ty t→∞=,变化趋势也可由一下曲线图表示:感想:四阶Runge-Kutta法计算的结果精度非常好,其结果与真实解误差不大。

2.考虑定义在闭区间[−5, 5]上的函数()2112()5f x x -=+ ;(1)利用等距节点构造次数分别为 n = 4,8,16, 32 的插值多项式()n p x ,并分别画()()()()481632,,,p x p x p x p x ;(2)利用chebyshev 零点构造次数分别为 n = 4,8,16, 32 的插值多项式()n pp x()()()()481632,,,pp x pp x pp x pp x ;(3)画出当 n = 32 时,两种插值多项式的比较图,误差图,并给出相应的误差估计;(4)在这个问题中能观察到龙格现象吗? 解:数学原理:拉格朗日插值多项式:001122()()()()()n n n L x l x y l x y l x y l x y =+++011011()()()()(),0,1,2,()()()()k k n k k k k k k k n x x x x x x x x l x k n x x x x x x x x -+-+----==----0()()()nn n in k k k k k j k jj kx x L x l x y y x x ===≠-==-∑∑∏程序设计见附录(1) 利用等距节点构造次数分别为 n = 4,8,16, 32 的插值多项式如下: ()43240.00160.00.0640.60061400p x x x x x ++=++()876542830.00280.00640.02500.02500.00640.00260.000168.001p x x x x x x x x x ++++++=++()1615141312161110987654320.00210.00280.00410.0064 60.01120.02500.09290.09290.02050 0.01120.00640.00410.002.00160180.021.000p x x x x x x x x x x x x x x x x x ++++++++++++++=++()3231302928272632252423222120191817160001600018000210002400028000340004100050006400083001120016100250004350092902906029p x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x x .=+++++++++++++++++151413121110987654320600929004350025000161001120008300064000500041000340002800024000210001800016x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .+++++++++++++++(2)利用chebyshev 零点构造次数分别为 n = 4,8,16, 32 的插值多项式如下:()43240.00160.00320.00320.0016x x p x x p x =++++()87654328+0.00190.00320.01080.01080.00320.00196=0.0.0106001pp x x x x x x x x x +++++++()161514131211109168765432=0.0016 0.0017 0.0019 0.00230.00320.00520.01080.0403 1.00000.04030.01080.00520.00320.00230.0019 0.0017 0.0016 pp x x x x x x x x x x x x x x x x x ++++++++++++++++()323130292827263225242322212019181700016000160001700017000190002100023000270003200040000520007100108001860040301428pp x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x x =+++++++++++++++++16151413121110987654320142800403001860010800071000520004000320002700023000210001900017000170001600016.x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .+++++++++++++++++(3)两种插值多项式的比较误差图如下(a)等距插值误差 (b) chebyshev零点插值误差(4) 等距插值在高次插值中能观察到龙格现象,而chebyshev零点插值观察不到龙格现象。

修订版第章_MATLAB数值计算_例题源程序汇总【精】

修订版第章_MATLAB数值计算_例题源程序汇总【精】

第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。

13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。

也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。

也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。

A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。

也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。

X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。

x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。

X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。

185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -⎰e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。

第06章 MATLAB数值计算

第06章 MATLAB数值计算

例6.9 设z=x2+y2,对z函数在[0,1]×[0,2]区域内进行 插值。
例6.10 某实验对一根长10米的钢轨进行热源的温度 传播测试。用x表示测量点0:2.5:10(米),用h表示测 量时间0:30:60(秒),用T表示测试所得各点的温度 (℃)。试用线性插值求出在一分钟内每隔10秒、钢 轨每隔0.5米处的温度。
(2)求矩阵的最大值和最小值 求矩阵A的最大值的函数有3种调用格式,分 别是: max(A):返回一个行向量,向量的第i个元素 是矩阵A的第i列上的最大值。 [Y,U]=max(A):返回行向量Y和U,Y向量记 录A的每列的最大值,U向量记录每列最大值 的行时,该 函数和max(A)完全相同;dim取2时,该函数 返回一个列向量,其第i个元素是A矩阵的第i 行上的最大值。 求最小值的函数是min,其用法和max完全相 同。 例6.1 分别矩阵A中各列和各行元素中的最大 值,并求整个矩阵的最大值和最小值。
例6.11 用一个3次多项式在区间[0,2π]内逼近函数。 命令如下: X=linspace(0,2*pi,50); Y=sin(X); P=polyfit(X,Y,3) %得到3次多项式的系数和误差
6.1.4 多项式计算 1. 多项式的四则运算 (1)多项式的加减运算 (2)多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。 这里,P1、P2是两个多项式系数向量。
2. 二维数据插值 在MATLAB中,提供了解决二维插值问题的函数 interp2,其调用格式为: Z1=interp2(X,Y,Z,X1,Y1,'method') 其中X,Y是两个向量,分别描述两个参数的采样点, Z是与参数采样点对应的函数值,X1,Y1是两个向量 或标量,描述欲插值的点。Z1是根据相应的插值方 法得到的插值结果。 method的取值与一维插值函数 相同。X,Y,Z也可以是矩阵形式。 同样,X1,Y1的取值范围不能超出X,Y的给定范围, 否则,会给出“NaN”错误。

Matlab软件介绍及计算实例

Matlab软件介绍及计算实例

MATLAB软件介绍本节主要介绍一款进行微积分运算的数学软件—MATLAB(MATrix LABoratory)。

本节主要介绍Matlab操作桌面,重点介绍指令窗功能及操作注意事项。

一、Desktop操作桌面简介MATLAB R2006a版的Desktop操作桌面,是一个高度集成的MATLAB工作界面。

其默认形式,如图1.2-1所示。

该桌面的上层铺放着三个最常用的界面:指令窗(Command Window)、当前目录(Current Directory)浏览器、历史指令(Command History)窗。

图1-19 Desktop操作桌面的默认外貌指令窗该窗是进行各种MATLAB操作的最主要窗口。

“>>”是Matlab指令符,使用者可在其后键入各种送给MATLAB运作的指令、函数、表达式,显示除图形外的所有运算结果,运行错误时,给出相关的出错提示。

历史指令窗该窗记录已经运作过的指令,及它们运行的日期、时间。

该窗中的所有指令、文字都允许复制、重运行及用于产生M文件。

当前目录浏览器在该浏览器中,展示着子目录、M文件、MAT文件和MDL文件等。

对该界面上的M文件,可直接进行复制、编辑和运行;界面上的MAT数据文件,可直接送入MATLAB工作内存。

此外,对该界面上的子目录,可进行Windows平台的各种标准操作。

工作空间浏览器该浏览器默认地位于当前目录浏览器的后台。

该窗口罗列出MATLAB工作空间中所有的变量名、大小、字节数;在该窗中,可对变量进行观察、图示、编辑、提取和保存。

二、Command Window指令窗简介MATLAB指令窗默认地位于MATLAB桌面的右方。

在Matlab指令符“>>”后键入各种送给MATLAB运作的指令、函数、表达式,显示除图形外的所有运算结果,指令运行错误时,给出相关的出错提示;Matlab命令输入后直接回车,系统将执行该命令并给出运算结果,如果键入指令以分号结尾,系统将只执行命令但不显示运行结果。

实验五 Matlab数值运算

实验五 Matlab数值运算

实验五 MATLAB 数值运算一、实验目的掌握 MATLAB 的数值运算及其运算中所用到的函数,掌握结构数组和细胞数组的操作。

二、实验内容:(1) 多项式运算。

(2) 多项式插值和拟合。

(3) 数值微积分。

(4) 离散傅里叶变换。

三、实验步骤:1. 多项式运算(1) 多项式表示。

在MATLAB 中,多项式表示成向量的形式。

如:在MATLAB 中表示为>>S=[ 1 3 -5 0 9](2) 多项式的加减法相当于向量的加减法,但须注意阶次要相同。

如不同,低阶的要补0。

如多项式与多项式相加。

>>S1=[0 0 2 3 11 ]>>S2=[1 3 -5 4 7 ]>>S3=S1+S2(3) 多项式的乘、除法分别用函数conv 和deconv 实现>>S1=[ 2 3 11 ]>>S2=[1 3 -5 4 7 ]>>S3=conv(S1,S2)>>S4=deconv(S3,S1)(4) 多项式求根用函数roots>> S1=[ 2 4 2 ]>> roots(S1)(5) 多项式求值用函数polyval>> S1=[ 2 4 1 -3 ]>> polyval(S1,3) %计算x=3 时多项式的值>> x=1:10>> y=ployval(S1,x) %计算x 向量对应的值得到y 向量练习:2. 多项式插值和拟合有一组实验数据如附表1-1 所示。

请分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估测 X=9.5 时Y 的值。

以下是实现一阶拟合的语句。

>>x=1:10>>y=[16 32 70 142 260 436 682 1010 1432 1960]>>p1=ployfit(x,y,1) %一阶拟合>>y1=ployval(p1,9.5) %计算多项式p1 在x=9.5 时的值3. 数值微积分(1) 差分使用diff 函数实现。

MATLAB实验二MATLAB的数值运算和程序

MATLAB实验二MATLAB的数值运算和程序

课程名称:Matlab语言开设时间:2016—2017学年第 2 学期专业班级:学生学号:学生姓名:实验名称:实验二、MATLAB的数值运算和程序实验成绩:指导教师:批改时间:一、实验目的和要求1)掌握基本的矩阵运算及常用的函数。

2)掌握MATLAB函数的编写及调试方法。

3)掌握MATLAB常用的数值运算函数。

二、实验仪器和设备计算机一台三、实验过程1、一维数组在命令窗口执行下面指令,观察输出结果,体味数组创建和寻访方法,%号后面的为注释,不用输入。

rand('state',0) % 把均匀分布伪随机发生器置为0 状态x=rand(1,5) % 产生(1*5)的均布随机数组x(3) % 寻访数组x 的第三个元素。

x([1 2 5]) % 寻访数组x 的第一、二、五个元素组成的子数组。

x(1:3) % 寻访前三个元素组成的子数组x(3:end) % 寻访除前2 个元素外的全部其他元素。

end 是最后一个元素的下标。

x(3:-1:1) % 由前三个元素倒排构成的子数组x(find(x>0.5)) % 由大于0.5 的元素构成的子数组x([1 2 3 4 4 3 2 1]) % 对元素可以重复寻访,使所得数组长度允许大于原数组。

x(3) = 0 % 把上例中的第三个元素重新赋值为0。

x([1 4])=[1 1] % 把当前x 数组的第一、四个元素都赋值为1。

x[3]=[] % 空数组的赋值操作2、在命令窗口执行下面指令,观察输出结果a=2.7358; b=33/79; % 这两条指令分别给变量 a , b 赋值。

C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i] % 这指令用于创建二维组C M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16] % 创建复数数组的另一种方法 CN=M_r+i*M_i % 由实部、虚部数组构成复数数组3. 记录下面题目的程序和运行后的结果。

(完整版)第一讲Matlab基本数值计算

(完整版)第一讲Matlab基本数值计算

第一讲Matlab 基本数值计算一、矩阵在Matlab中,一个矩阵可以使数学意义上的矩阵,也可以是标量或者向量。

对于一个标量(一个数)可以将之作为11⨯的矩阵,而向量(一行或一列)则可以认为是1n⨯⨯或者1n⨯的矩阵。

另外,一个00矩阵在Matlab中被认为是空矩阵,用“[]”表示。

1、矩阵的创建矩阵的创建可以有以下几种形式⑴直接输入>> A=[1 2 3;4 3 7;2 4 1]注意:每行间的元素用逗号或空格分开,行与行之间用分号或回车分开,矩阵标示是一对中括号[ ]。

也可以采用数组编辑器(Array Editor)像在Excel电子表格中据那样输入数据。

⑵通过语句和函数产生常用的特殊矩阵:zeros:全零矩阵,ones:全1矩阵,eye:单位矩阵,rand:随机矩阵,diag:对角阵等。

例:>> A=ones(3,4)>> E=eye(3)>> D=diag([3 5 2])⑶对矩阵进行裁剪或拼接⑷从外部文件装入数据外部数据文件可以是以保存的Matlab工作空间,也可以是文本(.txt)文件,或者是电子表格创建的文件(.xls).例:已知一个文本格式的数据文件E:\Mathmodel\data1.txt>> load e:\Mathmodel\data1.txt得到一个变量名与文件名相同的矩阵(data1)。

注意:文件的扩展名不能省略。

例:已知一个Excel文件的路径为E:\Mathmodel\data2.xlsa. 缺省操作:>> NUMBER=xlsread('E:\Mathmodel\data2.xls')>>[NUMBER,TXT]=xlsread('E:\Mathmodel\data2.xls')默认操作是从第一个工作表(sheet1)中提取数据。

b. 从指定的工作表(而不是第一个)中提取数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls','S2')或者>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2)c.从指定的工作表中读取指定区域的数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2,'g3:i8')2、Matlab的矩阵运算⑴基本运算矩阵的加(+)、减(-)、乘(*)、乘方(^)运算法则与代数中的定义完全一致。

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

第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。

13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。

也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。

也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。

A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。

也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。

X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。

x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。

X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。

185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。

x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format longinterp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。

T=0:5:65; X=2:5:57;F=[3.2015,2.2560,879.5,1835.9,2968.8,4136.2,5237.9,6152.7,...6725.3,6848.3,6403.5,6824.7,7328.5,7857.6];F1=interp1(T,F,X) %用线性插值方法插值F1=interp1(T,F,X,'nearest') %用最近点插值方法插值F1=interp1(T,F,X,'spline') %用3次样条插值方法插值F1=interp1(T,F,X,'cubic') %用3次多项式插值方法插值例6.9设z=x2+y2,对z函数在[0,1]×[0,2]区域内进行插值。

x=0:0.1:1;y=0:0.2:2;[X,Y]=meshgrid(x,y); %产生自变量网格坐标Z=X.^2+Y.^2; %求对应的函数值interp2(x,y,Z,0.5,0.5) %在(0.5,0.5)点插值interp2(x,y,Z,[0.5 0.6],0.4) %在(0.5,0.4)点和(0.6,0.4)点插值interp2(x,y,Z,[0.5 0.6],[0.4 0.5]) %在(0.5,0.4)点和(0.6,0.5)点插值%下一命令在(0.5,0.4),(0.6,0.4),(0.5,0.5)和(0.6,0.5)各点插值interp2(x,y,Z,[0.5 0.6]',[0.4 0.5])例6.10某实验对一根长10米的钢轨进行热源的温度传播测试。

用x表示测量点(米),用h表示测量时间(秒),用T表示测得各点的温度(℃),测量结果如表6.2所示。

试用3次多项式插值求出在一分钟内每隔10秒、钢轨每隔0.5米处的温度。

x=0:2.5:10;h=[0:30:60]';T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];xi=[0:0.5:10];hi=[0:10:60]';temps=interp2(x,h,T,xi,hi,'cubic');mesh(xi,hi,temps);例6.11 用一个3次多项式在区间[0,2π]内逼近函数x sin 。

X=linspace(0,2*pi,50); Y=sin(X);P=polyfit(X,Y,3) %得到3次多项式的系数和误差 X=linspace(0,2*pi,20); Y=sin(X); Y1=polyval(P,X) plot(X,Y,':o',X,Y1,'-*')例6.12 设54322()352756()353f x x x x x xg x x x =-+-++=+-(1) 求f (x )+g (x )、f (x )-g (x )。

(2) 求f (x )×g (x )、f (x )/g (x )。

f=[3,-5,2,-7,5,6];g=[3,5,-3];g1=[0,0,0,g]; f+g1 %求f(x)+g(x) f-g1 %求f(x)-g(x) conv(f,g) %求f(x)*g(x)[Q,r]=deconv(f,g) %求f(x)/g(x),商式送Q ,余式送r 。

例6.13 求有理分式的导数。

5421096323585()10567100x x x x f x x x x x x +-+-=+++-- P=[3,5,0,-8,1,-5];Q=[10,5,0,0,6,0,0,7,-1,0,-100]; [p,q]=polyder(P,Q)例6.14 已知多项式x 4+8x 3-10,分别取x =1.2和一个2×3矩阵为自变量计算该多项式的值。

A=[1,8,0,0,-10]; %4次多项式系数 x=1.2; %取自变量为一数值 y1=polyval(A,x)x=[-1,1.2,-1.4;2,-1.8,1.6] %给出一个矩阵xy2=polyval(A,x) % 分别计算矩阵x 中各元素为自变量的多项式之值例6.15 仍以多项式x 4+8x 3-10为例,取一个2×2矩阵为自变量分别用polyval 和polyvalm计算该多项式的值。

A=[1,8,0,0,-10]; %多项式系数 x=[-1,1.2;2,-1.8] %给出一个矩阵x y1=polyval(A,x) %计算代数多项式的值 y2=polyvalm(A,x) %计算矩阵多项式的值例6.16 求多项式x 4+8x 3-10的根。

A=[1,8,0,0,-10]; x=roots(A)例6.17 已知52.7543)(235+--+=x x x x x f(1) 计算f (x )=0的全部根。

(2) 由方程f (x )=0的根构造一个多项式g (x ),并与f (x )进行对比。

P=[3,0,4,-5,-7.2,5];X=roots(P) %求方程f(x)=0的根 G=poly(X) %求多项式g(x)例6.18 设x 由[0,2π]间均匀分布的10个点组成,求x sin 的1~3阶差分。

X=linspace(0,2*pi,10); Y=sin(X);DY=diff(Y); %计算Y 的一阶差分D2Y=diff(Y,2); %计算Y 的二阶差分,也可用命令diff(DY)计算 D3Y=diff(Y,3); %计算Y 的三阶差分,也可用diff(D2Y)或diff(DY,2)例6.19 设255122)(623+++++-+=x x x x x x f用不同的方法求函数f (x )的数值导数,并在同一个坐标系中做出f '(x )的图像。

f=inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2');g=inline('(3*x.^2+4*x-1)./sqrt(x.^3+2*x.^2-x+12)/2+1/6./(x+5).^(5/6)+5'); x=-3:0.01:3;p=polyfit(x,f(x),5); %用5次多项式p 拟合f(x) dp=polyder(p); %对拟合多项式p 求导数dp dpx=polyval(dp,x); %求dp 在假设点的函数值 dx=diff(f([x,3.01]))/0.01; %直接对f(x)求数值导数gx=g(x); %求函数f 的导函数g 在假设点的导数plot(x,dpx,x,dx,'.',x,gx,'-'); %作图例6.20 用两种不同的方法求:210e d x I x -=⎰先建立一个函数文件ex.m :function ex=ex(x) ex=exp(-x.^2);然后在MATLAB 命令窗口,输入命令:format longI=quad('ex',0,1) %注意函数名应加字符引号 I=quadl('ex',0,1)例6.21 用trapz 函数计算:210ed x I x -=⎰X=0:0.01:1; Y=exp(-X.^2); trapz(X,Y)例6.22 计算二重定积分212/2212e sin()d d xI x y x y ---=+⎰⎰(1) 建立一个函数文件fxy.m :function f=fxy(x,y) global ki;ki=ki+1; %ki 用于统计被积函数的调用次数 f=exp(-x.^2/2).*sin(x.^2+y); (2) 调用dblquad 函数求解。

相关文档
最新文档