第2讲 MATLAB的数值计算
matlab2_matlab教程
x1+2x2+3x3=1 2x1+3x2+4x3=2 a=[1 2 3;2 3 4];b=[1;2]; x=a\b x= 1.00 0 x=
x1 1 2 3 1 x2 = 2 3 4 2 x3
a
x = b
x=pinv(a)b
0.83 0.33
0
-0.17
六、微分方程求解
微分方程求解的仿真算法有多种,常用 的有Euler(欧拉法)、Runge Kutta(龙 格-库塔法。 Euler法称一步法,用于一阶微分方程
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
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a*b ans = 25 55 85
37 85 133
二、数据的保存与获取
把matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到matlab.mat文件中。 默认文件名
save data——将工作空间中所
有的变量存到data.mat文件中。
save data a b ——将工作空间 中a和b变量存到data.mat文件中。
rand —— 随机矩阵
eye —— 单位矩阵
zeros ——全部元素都为0的矩阵
ones ——全部元素都为1的矩阵
还有伴随矩阵、稀疏矩阵、魔方 矩阵、对角矩阵、范德蒙等矩阵的创 建,就不一一介绍了。
注意:matlab严格区分大小写字母,因
此a与A是两个不同的变量。 matlab函数名必须小写。
Matlab中常用的数值计算方法
Matlab中常用的数值计算方法数值计算是现代科学和工程领域中的一个重要问题。
Matlab是一种用于数值计算和科学计算的高级编程语言和环境,具有强大的数值计算功能。
本文将介绍Matlab中常用的数值计算方法,包括数值积分、数值解微分方程、非线性方程求解和线性方程组求解等。
一、数值积分数值积分是通过数值方法来近似计算函数的定积分。
在Matlab中,常用的数值积分函数是'quad'和'quadl'。
'quad'函数可以用于计算定积分,而'quadl'函数可以用于计算无穷积分。
下面是一个使用'quad'函数计算定积分的例子。
假设我们想计算函数f(x) = x^2在区间[0, 1]上的定积分。
我们可以使用如下的Matlab代码:```f = @(x) x^2;integral = quad(f, 0, 1);disp(integral);```运行这段代码后,我们可以得到定积分的近似值,即1/3。
二、数值解微分方程微分方程是描述自然界各种变化规律的数学方程。
在科学研究和工程应用中,常常需要求解微分方程的数值解。
在Matlab中,可以使用'ode45'函数来求解常微分方程的数值解。
'ode45'函数是采用基于Runge-Kutta方法的一种数值解法。
下面是一个使用'ode45'函数求解常微分方程的例子。
假设我们想求解一阶常微分方程dy/dx = 2*x,初始条件为y(0) = 1。
我们可以使用如下的Matlab代码:```fun = @(x, y) 2*x;[x, y] = ode45(fun, [0, 1], 1);plot(x, y);```运行这段代码后,我们可以得到微分方程的数值解,并绘制其图像。
三、非线性方程求解非线性方程是指方程中包含非线性项的方程。
在很多实际问题中,我们需要求解非线性方程的根。
数值分析第二讲MATLAB简介
MATLAB编程入门 MATLAB的编程风格与C语言相同。 常用流程控制语句 if if语句条件 elseif if语句条件 end 终止作用域 for 指定次数的循环 while 不指定次数的循环 break 终止循环 switch 开关语句 case 列出语句 otherwise否则语句 return 返回调用函数 function 函数定义语句
MATLAB常用函数名 数学函数(中文意义略) abs,acos,acosh,angle,asin,asinh,atan,atan2,atanh, ceil,conj,cos,cosh,exp,fix,floor,gcd,imag,lcm,log, log10,real,rem,round,sign,sin,sinh,sqrt,tan,tanh, 构造矩阵函数 eye(n),ones(n),zeros(n):产生n阶单位、全1,全0矩阵 eye(m,n),ones(m.n),zeros(m.n):产生m×n的单位、全1,全 0矩阵 Sparse:构造稀疏矩阵 Size(M)取矩阵M的各维大小(结果为向量) size (M,n) 取矩阵M的第n维大小
例1:构造两个可加减乘的矩阵A,B,C,求A+B,A*C, sin(A)+cos(B),以及取A,B,C的子矩阵作同样的运算。 解:A=[ 1,2,3,4;5 6 7 8; 9 10 11 12]; B=ones(3,4) C= pascal(3) ⑴ D=A+B ⑵ E=sin(A)+cos(B) (3) F=A*C 错误操作:A*B,A+C
MATLAB的基本用法 一、数与变量 MATLAB的内部本质上只有两种类型的数据:实数和字符。 一个实数占8个字节(64比特),一个字符占用1字节(8比特)。 复数由两个实数构成,矩阵元素由字符、实数、复数构成。由矩 阵再构成“struct”(结构)数据类型,字符串是以字符为变量的 行向量。所以表现形式有:字符、字符串、整数、实数、复数、 结构。 characters: ‘char’ 表有符号字符 8bits, ‘uchar’ 无符号字符 8bits. integers :‘short’ 短整数16 bits, ‘long’ 长整数 32 bits, floating-point: ‘single-‘ 表单精度浮点数32bits, ’double‘表双精度浮 点数:64bits
第二讲 MATLAB基本运算
矩阵下标的用途
访问超出矩阵范围时,产生 Index exceeds matrix dimentions 存储超出矩阵范围时,矩阵自动调节 大小,将指定位置元素置入,其他没 指定数的位置默认为零。
2010-12-25
21
矩阵下标的用途
(2)矩阵连接 例:a=[1 2;3 4] b=[a a+5; a-5 zeros(size(a)] 将小矩阵嵌套入大矩阵,实现矩阵连接。
将矩阵按创建原则写入一个M文件, 在MATLAB的命令窗口或程序中直接执 行该M文件,即将矩阵调入工组空间。
2010-12-25
15
利用MATLAB函数创建矩阵 利用MATLAB函数创建矩阵 MATLAB
ones( m, n) - m行n列的1阵产生 zeros(m, n) -产生m行n列的全0阵 rand(m, n) -产生m行n列均匀分布全列的在 [0,1]区间的随机阵 randn(m, n) -产生m行n列的正态分布矩阵 eye(n) -产生n维单位阵
2010-12-25 18
2.2.3 矩阵的下标 .2.3
子矩阵提取A(v1, v2)
v1表示子矩阵包含的行标构成的向量 v2表示子矩阵包含的列标构成的向量 B1=A(:, [1, 3]) 为:时表示要提取所有行(列) B2=A(1:2:end, :) end表示最后一行(列) B3=A([3,2,1],[2,3,4]) 例: B4=A(:, end:-1:1) 提取A矩阵所有行、1,3列 提取A矩阵 3,2,1 行、2,3,4 列构成子矩阵 提取A矩阵全部奇数行,所有列 将A矩阵左右翻转
2010-12-25
13
直接输入法创建矩阵
例:创建矩阵
MATLAB_数值计算
b31 b32 b33
对于编程语言,矩阵就是二维的数组
2.1 MATLAB的基本计算
数学计算分为数值计算与符号计算,前者 不允许出现未定义变量,后者允许。(Eg 2-1) 常用的基本数学函数表。 (Eg 2-2)
Eg 2-1
三角函数
函数
sin sinh asin cos acos
说明
正弦函数 双曲正弦函数 反正弦函数 余弦函数 反余弦函数
MATLAB数值计算
2.1 MATLAB的基本计算 2.2 MATLAB矩阵和数组 2.3 关系和逻辑运算 2.4 多项式 2.5 稀疏矩阵 2.6 数据分析函数 2.7 数值分析
概述
在M语言中最常用的数据类型表现手段和形
式就是变量和常量
M语言的基本处理单位是数值矩阵或者数值
Eg 2-14 低维数组合成高维数组
建立3阶魔方及帕斯卡数组
将A、B串联成三维数组
cat(1,A,B)=[A;B]
cat(2,A,B)=[A,B]
>> A=eye(4) A= 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 >> A(:,:,2)=eye(4)*10; >> A(:,:,3)=eye(4)*100 A(:,:,1) = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 A(:,:,2) = 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 A(:,:,3) = 100 0 0 0 0 100 0 0 0 0 100 0 0 0 0 100
复数运算函数
函数
abs
பைடு நூலகம்
说明
求复数的模,若参数为实数则求绝对值
第二章matlab02数值运算功能1
范 例 3.1416 3.1416e+000
3.14159265358979
format long
15 位数字表示
format long e
15位科学记数表示
format rat 分数近似 format bank 两位小数
3.1415926535897 93e+000 355/113 3.14
MATLAB命令 format hex format +
realmax-系统所能表示的最大正实数: 系统所能表示的最大正实数: 系统所能表示的最大正实数 1.797693134862316e+308 realmin-系统所能表示的最小正实数: 系统所能表示的最小正实数: 系统所能表示的最小正实数 2.225073858507201e-308
7.变量查询和清除函数(变量操作) 变量查询和清除函数(变量操作)
可用load指令调用已生成的 指令调用已生成的mat文件 可用 指令调用已生成的 文件
load data
load data a b
即可恢复保 存过的所有 变量
load filename variables的使用说明 的使用说明
• 将以前用 将以前用save命令保存的变量 命令保存的变量variables从磁 命令保存的变量 从磁 盘文件中调入MATLAB工作空间。 工作空间。 盘文件中调入 工作空间 • 用load 命令调入的变量,其名称为用 命令调入的变量,其名称为用save命 命 令保存时的名称,取值也一样。 令保存时的名称,取值也一样。 • Variables所表示的变量列表中,不能用逗 所表示的变量列表中, 所表示的变量列表中 号,各个不同的变量之间只能用空格来分隔。 各个不同的变量之间只能用空格来分隔。 空格来分隔 • 未列出 未列出variables时,表示将磁盘文件中的 时 所有变量都调入工作空间。 所有变量都调入工作空间。
第二讲 Matlab的基本计算
>>a3=mat2str( a,2 ) %一行字符
字符串的应用:作出函数图形,并标注最大值点。 字符串的应用:作出函数图形,并标注最大值点。
y = e 2t sin(3t ) 0 ≤ t ≤ 10
clear %清除内存变量 t = 0 : 0.01 : 10; %时间 t 从 0 到 10 每隔 0.01 均匀采样 y = exp( -2*t ) .* sin( 3*t ); %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max [ y_max, i_max ] = max( y ); %横坐标字符串 t_text = [ 't = ', num2str( t(i_max) ) ]; %纵坐标字符串 y_text = [ 'y = ', num2str( y_max ) ]; %三行字符来标识最大值点 max_text = char( 'Maxium', t_text, y_text ); %图名称字符串 Title = [ 'y = exp( -2*t ) .* sin( 3*t )' ]; %新建一个图形窗 figure %画一条黑色的水平线 plot( t,zeros( size(t) ), 'k' ) %保持图形不被清除 hold on %蓝色实线画曲线 y(t) plot( t, y, 'b' ) %大小为 20 的红圆点标记最大值点 plot( t(i_max), y_max, 'r.', 'MarkerSize', 20 ) %在最大值点附近显示注释字符 text( t(i_max)+0.3, y_max+0.05, max_text ) %显示图名、横坐标名、纵坐标名 title( Title ); %取消图形保持 xlabel( 't' ) ylabel( 'y' ) hold off
第二章 Matlab软件的数值计算方法2
3)三角函数、双曲函数及它们的反函数 )三角函数、 只用于数值计算外, 除atan2只用于数值计算外,其余的三角函数(如sin)、 只用于数值计算外 其余的三角函数( )、 双曲函数( 双曲函数(如cosh)以及它们的反函数(如asin, acosh) )以及它们的反函数( ) 在数值计算和符号计算中使用方法都相同。 在数值计算和符号计算中使用方法都相同。 4)指数、对数函数 )指数、 数值、符号计算中,函数sqrt, exp, expm的使用方法 数值、符号计算中,函数 的使用方法 完全相同,至于对数函数,符号计算中只有自然对数log, 完全相同,至于对数函数,符号计算中只有自然对数log, 而没有数值计算中的log2, log10。 而没有数值计算中的 。 5) 复数函数 ) conj, real, imag, abs相同,但无求相角的指令。 相同, 相同 但无求相角的指令。 6) 矩阵代数指令 ) diag, triu, tril, inv, det, rank, rref, null, colspace, poly, expm, eig基本与数值计算相同,只有 基本与数值计算相同, 稍微不同。 基本与数值计算相同 只有svd稍微不同。 稍微不同
1.3 符号表达式中自由变量的确定 findsym可实现对表达式中所有自由符号变量或指定数 可实现对表达式中所有自由符号变量或指定数 目的独立自变量的自动认定。 目的独立自变量的自动认定。 findsym(expr) findsym(expr,n) 【例7】对独立自由符号变量的自动辨认。 】对独立自由符号变量的自动辨认。 syms a b x X Y; k=sym('3'); z=sym('c*sqrt(delta)+y*sin(theta)'); EXPR=a*z*X+(b*x^2+k)*Y; findsym(EXPR)
MATLAB第二讲__数值计算和符号计算
(4)数值运算中必须先对变量赋值;符号运算无须事先对变 量赋值,但必须先定义,运算结果以标准的符号表达 式形式给出。
Matlab基础应用 21
2.2.2 符号运算中的运算符
(1)基本运算符 符号矩阵:‚+”,‚-”,‚*‛,‚\”, ‚/”, ‚^”, ‚ ’ ” 符号数组:‚.*”,‚./”,‚.\‛,‚.^”, ‚.’ ” (2)关系运算符 运算符只有‚==”,‚~=”。
Matlab基础应用 7
1.3.4 多项式乘除运算(续)
例4: a(x)=x2+2x+3; b(x)=4x2+5x;求c=a(x)*b(x)。 解: >>a=[1 2 3];b=[4 5 0]; >>c=conv(a,b) c= 4 13 22 15 0 >>[d,r]=deconv(c,a) d= 4 5 0 r= 0 0 0 0 0
注意: 方法一只创建了符号表达式,没有创建符号变量; 而方法二既创建了符号表达式,又创建符号变量.
Matlab基础应用 19
2.1.3 创建符号矩阵
使用sym和syms命令创建
例4: A=sym(‘[a,b;c,d]’) A= [ a, b] [ c, d] syms f g h k B=[f,g;h,k] B=
%方法二
Name Size Bytes Class a 1x1 126 sym object b 1x1 126 sym object c 1x1 126 sym object f2 1x1 146 sym object x 1x1 126 sym object Grand total is 20 elements using 650 bytes
第二章 MATLAB数值计算
数值
复数 z=a+b*i或z=a+b*j z=a+bi或z=a+bj(当b为标量时) z=r*exp(i*theta) 得出一个复数的实部、虚部、幅值和相角。 a=real(z) %计算实部 b=imag(z) %计算虚部 r=abs(z) %计算幅值 theta=angle(z) %计算相角
变量
矩阵和数组运算
diag(X)产生X矩阵的对角阵 [l,u]=lu(X)方阵分解为一个准下三角方阵和一个上三 角方阵的乘积。l为准下三角阵,必须交换两行才能成 为真的下三角阵。 [q,r]=qr(X) m×n阶矩阵X分解为一个正交方阵q和一个 与X同阶的上三角矩阵r的乘积。方阵q的边长为矩阵X的 n和m中较小者,且其行列式的值为1。 [u,s,v]=svd(X) m×n阶矩阵X分解为三个矩阵的乘积, 其中u,v为n×n阶和m×m阶正交方阵,s为m×n阶的对角 阵,对角线上的元素就是矩阵X的奇异值,其长度为n和 m中的较小者。
第二章
MATLAB数值计算
2.1 变量和数值
数据类型
数据类型包括:数值型、字符串型、元胞型、结构 型等 数值型=双精度型、单精度型和整数类 整数类=无符号类(uint8、uint16、uint32、uint64)和 符号类 (int8、int16、int32、int64)
数值
数据的表达方式 可以用带小数点的形式直接表示 用科学计数法 数值的表示范围是10-309~10309。 以下都是合法的数据表示: -2、5.67、2.56e-56(表示2.56×10^-56)、 4.68e204(表示4.68×10^204)
E1=tril(A) E2=tril(A,1) D=triu(A) E=triu(A,-1)
第二章matlab02数值运算功能2
2.4.3矩阵的关系和逻辑运算 矩阵的关系和逻辑运算
1.矩阵的关系运算符:<, >, <=, >=, = =, ~= 矩阵的关系运算符: 矩阵的关系运算符 • 矩阵之间的每个元素进行比较,运算结果 矩阵之间的每个元素进行比较, 为与原矩阵大小一样的由0 为与原矩阵大小一样的由0和1组成的矩阵 注意:1=<a<=2错误 注意: 错误 例: 1<=a<=2正确 = 正确
• •
§2.4 矩阵的运算
矩阵的数学运算 矩阵的点(数组 运算 矩阵的点 数组)运算 数组 矩阵的关系和逻辑运算
2.4.1矩阵的数学运算 矩阵的数学运算
矩阵运算符 含义 A’ 矩阵转置 A+B 矩阵相加 A-B 矩阵相减 A*B 矩阵相乘 A/B 矩阵相除(右除) 矩阵相除(右除) B\A 矩阵相除(左除) 矩阵相除(左除) A^n A阵的 n次幂 阵的 次幂
x X = y z
10 B = 5 −1
要解上述的联立方程式, 要解上述的联立方程式,可利用矩阵左除 \ 做运 时要求A、 的行数相等 相等。 算,即:X=A\B, 左除时要求 、B的行数相等。 , 左除时要求
如果将原方程式改写成 X*A=B,且令 X, A 和 B , 分别为
第 2 章 matlab数值计算第一次课
河南理工大学测绘学院
§2.1 特殊矩阵的生成
eye函数的调用格式: ●eye(n) %生成n × n阶单位矩阵 ● eye(m,n) 或eye([m,n]) %生成m× n阶单位阵 ● eye(size(A)) %生成与A同阶的单位阵 ones函数的调用格式: ●ones(m):产生m × m阶的全1矩阵。 ●ones(m,n)或zeros([m,n]) :产生m × n全1矩阵。当 m = n时,等同于zeros(m)。 ● zeros(m,n,p,…): 生成m × n ×p ×…阶的全1阵或 数组。
MATLAB提供了求魔方矩阵的函数magic(n),其
功能是生成一个n阶魔方阵。
河南理工大学测绘学院
§2.1 特殊矩阵的生成
【例2.3】将101~125等25个数填入一个5行5列的表格中, 使其每行、每列及对角线的和均为565。
一个5阶魔方矩阵的每行、每列及对角线的和均为65, 对其每个元素都加100后这些和变为565。完成其功能的命 令如下: M=100+magic(5)
rand(‘state’,J) %对整数J,重置生成器到第J个状态 rand(‘state’,sum(100*lock))%每次重置到不同状态 注:randn函数的调用格式同rand
河南理工大学测绘学院
§2.1 特殊矩阵的生成
【例2.2】建立随机矩阵: (1)在区间[10, 30]内均匀分布的4阶随机矩阵。 (2)均值为0.6、方差为0.1的4阶正态分布随机矩阵。 产生(0,1)区间均匀分布随机矩阵使用rand函数,假 设得到了一组满足(0,1)区间均匀分布的随机数xi,则 若想得到在任意[a, b]区间上均匀分布的随机数,只需 用yi = a + (b − a)xi计算即可。产生均值为0、方差 为1的标准正态分布随机矩阵使用randn函数,假设已经 得到了一组标准正态分布随机数xi,如果想更一般地得 到均值为μ 、方差为σ 2的随机数,可yi = μ + σ xi 计算出来。
Matlab(R2009a版)-第2讲 数值运算
MATLAB2009从入门到精通课程主要内容•第1章MATLAB简介•第2章数值运算•第3章单元数组和结构•第4章字符串•第5章符号运算•第6章MATLAB绘图基础•第7章程序设计•第8章计算方法的MATLAB实现•第9章优化设计•第10章SIMULINK仿真初探第2章数值运算•本章将介绍MATLAB2009的数值计算功能,首先讲述MATLAB中的运算符,然后讲述包括MATLAB的向量、矩阵和数组,并介绍他们之间的运算。
此外,还介绍了一些特殊的矩阵数据结构。
另外,还对MATLAB中的多项式的运算以及多项式拟合作了详细介绍。
2.1 MATLAB中的变量•MATLAB中的变量必须以字母打头,之后可以是任意字母、数字或下划线,变量名区分字母大小写,变量名不超过19个字符,默认变量名为ans。
除此之外还包含一些特殊的变量。
•who命令能够显示变量的信息;•whos命令能够显示变量的详细信息。
•matlab中同样支持复数变量,表示方法为a=m+ni(j)。
当n是表达式时,n与i(j)之间必须要加乘号。
另外也可以用complex(x,y)来产生复数。
•在循环程序段中一般不把i和j作为变量名称,以免生成数据时发生误解。
•>> a=1+2i• a =• 1.0000 + 2.0000i •>> b=1+3*i• b =• 1.0000 + 3.0000i•>> a=sin(2)+cos(2)*i• a =•0.9093 -0.4161i•>> b=sin(2)+cos(3)i•??? b=sin(2)+cos(3)i•|•Error: Unexpected MATLAB expression.•>> x=sin(2);•>> y=cos(3);•>> a=complex(x,y)• a =•0.9093 -0.9900i•>> b=complex(x)• b =•0.9093•>> a=i+2i• a =•0 + 3.0000i •>> b=i+2*i • b =•0 + 3.0000i•>> i=5;•>> a=i+2i• a =• 5.0000 + 2.0000i •>> b=i+2*i• b =•15•>> i=5;•>> a=5+i • a =•10•>> b=5+1*i • b =•10•>> i=5;•>> a=5+2i• a =• 5.0000 + 2.0000i •>> a=5+2*i• a =•152.2 MATLAB的数值运算基础2.3 数组及向量运算•由数学知识可知,数组和矩阵有着不同的概念。
matlabMATLAB的数值计算
4. 矩阵的其它运算
inv —— 矩阵求逆 det —— 行列式的值 eig —— 矩阵的特征值 diag —— 对角矩阵
’ —— 矩阵转置 sqrt —— 矩阵开方
5.矩阵的一些特殊操作
矩阵的变维
a=[1:12];b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转; fliplr:上翻; flipud:下翻 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角;
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
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
save data a b ——将工作空间 中a和b变量存到data.mat文件中。 下次运行matlab时即可用load指 令调用已生成的mat文件。
load —— load data —— load data a b ——
即可恢复保 存过的所有 变量
mat文件是标准的二进制文件, 还可以ASCII码形式保存。
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
四、 多项式运算
第2讲 MATLAB介绍
矩阵
Matlab 的操作对象是 矩阵 矩阵的直接排列输入
例:>> A 方括号“[ ]”括起 矩阵用方括号“ ” 矩阵同一行中的元素之间用 空格 或 逗号 分隔 矩阵行与行之间用 分号 分开 直接输入法中, 直接输入法中,分号可以用 回车 代替
例:
提供建立系统模型、选择仿真参数和数值算法、 提供建立系统模型、选择仿真参数和数值算法、启动仿真程 序对该系统进行仿真、 序对该系统进行仿真、设置不同的输出方式来观察仿真结果 等功能
Matlab 的安装
购买(下载) 购买(下载)Matlab 软件 插入光盘,自动运行; 插入光盘,自动运行; 或点击安装程序 setup.exe
矩阵基本运算
矩阵的加减: 矩阵的加减:对应分量进行运算
要求参与加减运算的矩阵具有 相同的维数
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4]
>> C=A+B; D=A-B;3*A-2;
矩阵的普通乘法
要求参与运算的矩阵满足线性代数中矩阵相乘的原则 要求参与运算的矩阵满足线性代数中矩阵相乘的
例:>> x=[0:pi/4:pi]; A=[1 2 3; 4 5 6];
>> y1=sin(x); y2=exp(A); y3=sqrt(A);
Matlab中常见数学函数 中常见数学函数
sin、cos、tan、cot、sec、csc、… 、 、 、 、 、 、 asin、acos、atan、acot、asec、acsc、… 、 、 、 、 、 、 exp、log、log2、log10、sqrt 、 、 、 、 abs、conj、real、imag、sign 、 、 、 、 fix、floor、ceil、round、mod、rem 、 、 、 、 、 max、min、sum、mean、sort、fft 、 、 、 、 、 norm、rank、det、inv、eig、lu、qr、svd 、 、 、 、 、 、 、 …… 是自然对数, ① log 是自然对数,即以 e 为底数 同号, ② mod(x,y) 结果与 y 同号,rem(x,y) 则与 x 同号 等函数的参数是矩阵时, ③ max 等函数的参数是矩阵时,是作用在矩阵各列上
第二讲 MATLAB基本操作
三、矩阵及其运算
(四)矩阵的基本数值运算
(1)矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算是指矩阵各元素与常 数之间的四则运算。 数之间的四则运算。 例如: 例如 a=[1,2,3;4,5,6;7,8,9]; 求: c=a+2; d=a-2; e=a*2; f=a/2;
(一)矩阵的生成
矩阵的生成有多种方式,通常使用的有四种: 矩阵的生成有多种方式,通常使用的有四种: (1)在命令窗口中直接输入矩阵; 在命令窗口中直接输入矩阵; 把矩阵的元素直接排列到方括号中, 把矩阵的元素直接排列到方括号中,每行 内的元素用空格或逗号相隔, 内的元素用空格或逗号相隔,行于行之间的内 容用分号相隔。 容用分号相隔。 通过语句和函数产生矩阵; (2)通过语句和函数产生矩阵; 文件中建立矩阵; (3)在M文件中建立矩阵; 从外部的数据文件中导入矩阵; (4)从外部的数据文件中导入矩阵; 例如: 例如 a=[1 2 3;4 5 6;7 8 9], b=[2,4,6,8;1,3,5,7;1,2,3,4],
四、数组及其运算
(一)数组的生成
(1)在命令窗口中直接输入向量 格式:a=[a1,a2,a3, …an ] 格式: (2)等差元素向量的生成 生成法: 格式: (i)冒号“:”生成法: 格式:a=a1:m:an )冒号“ (ii)使用线性等分向量函数 )使用线性等分向量函数linspace法: 法 格式: 格式:a=linspace(a1,an,n)
三、矩阵及其运算
(三)矩阵中元素的操作
的第r行 (1)提取矩阵 的第 行:A(r,:) )提取矩阵A的第 ( ,:) 的第r列 (:,r) (2)提取矩阵 的第 列:A(:, ) )提取矩阵A的第 (:, 的每一列, 拉伸为一个列向量: (:) (3)依次提取矩阵 的每一列,将A拉伸为一个列向量:A(:) )依次提取矩阵A的每一列 拉伸为一个列向量 (4)取矩阵 的第 1~i2行、第j1~j2列构成新矩阵 的第i 列构成新矩阵:A(i1:i2, j1:j2) )取矩阵A的第 的第i 构成新矩阵:A(i2:-1:i1,:) (5)以逆序提取矩阵 的第 1~i2行,构成新矩阵 )以逆序提取矩阵A的第 : 的第j 构成新矩阵:A(:, j2:-1:j1 ) (6)以逆序提取矩阵 的第 1~j2列,构成新矩阵 )以逆序提取矩阵A的第 : 的第i 构成新矩阵:A(i1:i2,: ] ,:)=[ (7)删除 的第 1~i2行,构成新矩阵 )删除A的第 的第j 构成新矩阵:A(:, (8)删除 的第 1~j2列,构成新矩阵 :, j1:j2)=[ ] )删除A的第 拼接成新矩阵: (9)将矩阵 和B拼接成新矩阵:[A B];[A;B] )将矩阵A和 拼接成新矩阵 ; ;
2、MATLAB的数学运算基础
例子: 计算表达式的值,并显示计算结果。
在MATLAB命令窗口输入命令: x=1+2i; y=3-sqrt(17); z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y)) 输出结果是:
z= -0.3488 + 0.3286i
六、MATLAB的数值显示格式 的数值显示格式
• 和其他的程序设计语言不同,MATLAB能 自动根据赋值和操作来识别变量类型。即 变量使用之前,不需要指定变量的数据类 型,也不必事先声明变量。
MATLAB中变量的作用域一般默认为局 部变量,仅在当前调用的M文件中有效。如 果要定义全局变量,则必须用global来声明。 一般情况下,为了和局部变量有所区别, 常将全局变量用大写字母表示,但这并不 是必需的,只是人为的一种约定而已。
• • • •
>> clear xy yx %删除变量xy及yx >> whos >> xy %这时变量xy已经不存在了 ??? Undefined function or variable 'xy'.
其它
• 保存工作空间
命令格式: >>save filename variables
• 将变量列表variables所列出的变量保存到磁盘文 件filename中 • Variables所表示的变量列表中,不能用逗ariables时,表示将当前工作空间中所有 变量都保持到磁盘文件中。 • 缺省的磁盘文件扩展名为“.mat”,可以使用“-” 定义不同的存储格式(ASCII、V4等)
• 5.2、表达式的规则
MATLAB的表达规则与一般手写算式基 本相同。
• a) 表达式由变量名、运算符和函数名组成。 • b) 表达式按优先级自左向右运算,括号可改变优 先级顺序。 • c)优先级顺序由高到底为:指数运算、乘除运算、 加减运算。 • d)表达式中赋值符“=”和运算符两侧允许有空格。
第二讲 MATLAB的数值计算 —— matlab 具有出色的数值计算能力,占据世界上数值计算软件的主导地位
x=a\b x= 2.00 3.00
2.超定方程组的解
方程 ax=b ,m<n时此时不存在唯一解。 方程解 (a ' a)x=a ' b
x=(a' a)-1 a ' b —— 求逆法 x=a\b —— matlab用最小二乘法找一
个准确地基本解。
例: x1+2x2=1 2x1+3x2=2 3x1+4x2=3
特征多项式一定是n+1维的
特征多项式第一个元素一定是1
例: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’) — 函数文件,显示 数学多项式的形式
matlab函数名必须小写。
3. 矩阵的修改
直接修改 可用键找到所要修改的矩阵,用键
移动到要修改的矩阵元素上即可修改。 指令修改
可以用A(,)= 来修改。
例如
a=[1 2 0;3 0 5;7 8 9]
a =1 2 0
305 789
还可以用函数subs
a(3,3)=0 a =1 2 0
p1 =x^3 - 6 x^2 - 72 x - 27
2.roots —— 求多项式的根
a=[1 2 3;4 5 6;7 8 0];p=poly(a) p=
1.00 -6.00 -72.00 -27.00 r=roots(p) r = 12.12
-5.73 ——显然 r是矩阵a的特征值 -0.39
用除法求的解x是具有最多零元素的 解 是具有最小长度或范数的解,这个 解是基于伪逆pinv求得的。
如何在MATLAB中进行数值计算
如何在MATLAB中进行数值计算MATLAB是一种用于数值计算和科学计算的程序设计语言和环境。
它提供了各种函数和工具箱,用于处理数值计算问题,包括线性代数、数值积分、数值微分、常微分方程求解、优化、插值等。
下面将介绍如何在MATLAB中进行数值计算的基本步骤和常用函数。
首先,启动MATLAB软件,创建一个新的脚本文件(.m文件),用于编写和保存MATLAB代码。
1.数值计算基础在MATLAB中进行数值计算的基本单位是矩阵和向量。
可以使用MATLAB提供的各种函数来创建和操作矩阵和向量。
例如,可以使用"zeros"函数创建一个全零的矩阵,使用"ones"函数创建一个全一的矩阵,使用"rand"函数生成一个随机矩阵。
2.线性代数计算MATLAB提供了丰富的线性代数函数,用于处理线性方程组、矩阵运算和特征值计算等问题。
例如,可以使用"inv"函数计算矩阵的逆,使用"det"函数计算矩阵的行列式,使用"eig"函数计算矩阵的特征值和特征向量。
3.数值积分MATLAB提供了多种数值积分方法,用于计算函数的定积分。
可以使用"quad"函数进行一维数值积分,使用"quad2d"函数进行二维数值积分,使用"quad3d"函数进行三维数值积分。
4.数值微分MATLAB提供了多种数值微分方法,用于计算函数的导数和偏导数。
可以使用"diff"函数计算函数的导数,使用"gradient"函数计算函数的梯度,使用"hessian"函数计算函数的Hessian矩阵。
5.常微分方程求解MATLAB提供了多种数值方法,用于求解常微分方程组。
可以使用"ode45"函数求解一阶常微分方程,使用"ode15s"函数求解刚性常微分方程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
即可恢复保 存过的所有 变量
mat文件是标准的二进制文件,
还可以ASCII码形式保存。
三、矩阵运算
1. 矩阵加、减(+,-)运算
规则:
相加、减的两矩阵必须有相同的行和 列两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。 标量与矩阵的所有元素分别进行加 减操作。
2. 矩阵乘()运算
2.roots —— 求多项式的根
a=[1 2 3;4 5 6;7 8 0];p=poly(a) p= 1.00 -6.00 -72.00 -27.00 r=roots(p)---------求由p构成的多项式的根 r = 12.12 -5.73 ——显然 r是矩阵a的特征值 -0.39
当然我们可用poly令其返回多项式 形式(这是poly的第二个功能) p2=poly(r) p2 = 1.00 -6.00 -72.00 -27.00 matlab规定多项式系数向量用行 向量表示,一组根用列向量表示。
eye —— 单位矩阵
zeros ——全部元素都为0的矩阵
ones ——全部元素都为1的矩阵
diag ——产生对角矩阵
例 》eye(2,3)
ans= 1 0 0 0 1 0 》ones(2,3) ans= 1 1 1 1 1 1 》V=[5 7 2];A=diag(V) A= 5 0 0 0 7 0 0 0 2
第二讲 MATLAB的数值计算
—— matlab 具有出色的数值计 算能力,占据世界上数值计算软 件的主导地位
数值运算的功能
创建矩阵 矩阵运算 多项式运算 线性方程组 数值统计 线性插值 函数优化 微分方程的数值解
一、命令行的基本操作
1. 创建矩阵的方法
直接输入法 规则: 矩阵元素必须用[ ]括住 矩阵元素必须用逗号或空格分隔 在[ ]内矩阵的行与行之间必须 用分号分隔
4.用冒号表达式创建矩阵
利用冒号表达式可以线性等间距地建立一个 向量来创建矩阵 一般格式是:e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值。 或者为:(start: step: end) 例 》a=[1:2:10] a= 1 3 5 7 9
5. 矩阵的修改
直接修改 可用键找到所要修改的矩阵,用键 移动到要修改的矩阵元素上即可修改。 指令修改 可以用A(,)= 来修改。
9.00
729.00 3 .^6)
四、 多项式运算
matlab语言把多项式表达成一个行向量, 该向量中的元素是按多项式降幂排列的。 f(x)=a0xn+a1xn-1+……an-1x+an
可用行向量 p=[a0 a1 …… an-1 an ]表示
1. poly —— 产生特征多项式系数向量
特征多项式一定是n+1维的
特征多项式第一个元素一定是1
例: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 注意:多项式中缺少的幂次用‘0’补齐。
(3) 当参与比较的一个是标量,而另一个是矩阵 时,则把标量与矩阵的每一个元素按标量关 系运算规则逐个比较,并给出元素比较结果。 最终的关系运算的结果是一个维数与原矩阵 相同的矩阵,它的元素由0或1组成。
注意:其书写方法与数学中的不等式符号不尽 相同。
7. 矩阵的数组运算
数组运算指元素对元素的算术运算, 与通常意义上的由符号表示的线性代数 矩阵运算不同。
例 利用M文件建立MYMAT矩阵。
(1) 启动有关编辑程序或Matlab文本编辑器, 并输入待建矩阵。 (2) 把输入的内容以纯文本方式存盘(设文 件名为mymatrix.m)。 (3) 在Matlab命令窗口中输入mymatrix,即 运行该M文件,就会自动建立一个名为 MYMAT的矩阵,可供以后使用。
※当一个方阵有复数特征值或负实 特征值时,非整数幂是复数阵。
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=[1 2 0;3 0 5;7 8 9] a =1 2 0 3 0 5 还可以用函数 subs 7 8 9 a(3,3)=0 修改,matlab6.0还 a =1 2 0 可用find函数修改。 3 0 5 7 8 0
二、数据的保存与获取
把Matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到matlab.mat文件中。 默认文件名
》zeros(2,3) ans= 0 0 0 0 0 0
例 》eye(2) ans= 1 0 0 1 》zeros(2) ans= 0 0 0 0 》ones(2) ans= 1 1 1 1
例 在区间[20,50]内均匀分布的5阶随机 矩阵。 命令如下: x=20+(50-20)*rand(5)
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a*b ans = 25 55 85
37 85 133
46 109 172
a./b=b.\a —— 给出a,b对应元素间的商. a.\b=b./a a./b=b.\a — 都是a的元素被b的对应元 素除, “/”是斜杠 a.\b=b./a — 都是b的元素被a的对应元 素除, “\”是反斜杠
规则: A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘 a=[1 2 3;4 5 6;7 8 0];b=[1;2;3];c=a*b
c =14
32
23
d=[-1;0;2]; f=pi*d f = -3.1416 0 6.2832 矩阵除的运算在线性代数中没有,
有矩阵逆的运算,在matlab中有两种
》a=1; b=2; c=3; 》x=[5 b c; a*b a+c c/b] x= 5.000 2.000 3.000 2.000 4.000 1.500 》y=[2, 4, 5; 3 6 8] y= 2 4 5 3 6 8
矩阵元素
矩阵元素可以是任何matlab表达式 ,可以
是实数 ,也可以是复数,复数可用特殊函
还有伴随矩阵、稀疏矩阵、魔方矩阵 (magic)、对角矩阵、范德蒙等矩阵的 创建,就不一一介绍了。
注意:matlab严格区分大小写字母,因
此a与A是两个不同的变量。 matlab函数名必须小写。
3.用m文件创建矩阵
对于比较大且比较复杂的矩阵,可 以为它专门建立一个M文件。下面通 过一个简单例子来说明如何利用M文 件创建矩阵。
(3) norm(V,inf):计算矩阵V的∞—范数。
6.矩阵的一些特殊操作
矩阵的变维 a=[1:12];b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转; fliplr:左右翻; flipud:上下翻 矩阵的抽取 diag:抽取主对角线;(对于非方阵的情况?) tril: 抽取主下三角; triu:抽取主上三角,然后其余补零元素 矩阵的扩展
此外,常用的函数还有reshape(A,m,n), 它在矩阵总元素保持不变的前提下,将 矩阵A重新排成m×n的二维矩阵。
也可用linspace函数产生行向量。其调用 格式为: linspace(a, b, n) 其中a和b是生成向量的第一个和最后一 个元素,n是元素总数。 例 》a=linspace(1 , 10 , 10) a= 1 2 3 4 5 6 7 8 9 10
save data——将工作空间中所有
的变量存到data.mat文件中。
save data a b ——将工作空间中 a和b变量存到data.mat文件中。
下次运行Matlab时即可用load指
令调用已生成的mat文件。
load —— load data —— load data a b ——
4. 矩阵的其它运算
inv —— 矩阵求逆 det —— 行列式的值
eig —— 矩阵的特征值
diag —— 对角矩阵
’ —— 矩阵转置
sq norm(V)或norm(V,2):计算矩阵V的
2—范数。
(2) norm(V,1):计算矩阵V的1—范数。
例: 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
3. 数组乘方(.^) — 元素对元素的幂
例: a=[1 2 3];b=[4 5 6]; z=a.^2 z= 1.00 4.00 z=a.^b z= 1.00 32.00 (1 .^4 2 .^5
否在屏幕上显示过,都存储在工作空
间中,以后可随时显示或调用。变量
名尽可能不要重复,否则会覆盖 。
当一个指令或矩阵太长时,可用••• 续行
冒号的作用
用于生成等间隔的向量,默认
间隔为1。
用于选出矩阵指定行、列及元 素。
循环语句
2.用matlab函数创建矩阵
空阵 [ ] — matlab允许输入空阵,当一 项操作无结果时,返回空阵。 rand —— 随机矩阵
关系运算
关系符号
< <= > >= == ~=