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

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数值计算_参考解答

%可参见教材第 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文件函数和脚本文件

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的数值计算

例: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数值计算_例题源程序.

第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数值运算

04
数值运算进阶
线性方程组求解
直接法
使用高斯消元法、LU分解等直接求解线性方程组的方法。
迭代法
使用如雅可比迭代、高斯-赛德尔迭代等迭代方法求解线性方程 组。
预处理技术
通过预处理手段改进直接法或迭代法的收敛速度和稳定性。
数值积分与微分
数值积分
使用如梯形法、辛普森法等数值积分方法计算 函数的积分值。
频谱分析
通过快速傅里叶变换等数值方法对信号进行频谱分析,提 取信号的频率成分和特征,用于音频、雷达、通信等领域。
信号压缩
利用数值方法对信号进行压缩编码,减小存储和传输成本, 用于音频、视频、遥感等领域。
在图像处理中的应用
图像增强
通过数值运算对图像进 行增强处理,提高图像 的对比度、清晰度等, 用于医学影像、安防监 控等领域。
数值微分
通过差分法计算函数的导数值,如前向差分、 后向差分和中心差分。
自动微分
利用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数值计算

字符串的转换
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 =
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 函数求解。