第二讲MATLAB的数值计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>>format long;pi
ans =
3.14159265358979 >>format long e;pi ans = 3.141592653589793e+000 >>format long g;pi ans = 3.14159265358979
字符串 1、字符串的约定
字符串用单引号输入或赋值; 字符串的每个字符都是都是字符数组的一个元素; 字符串和字符数组基本上等价。
常用的特殊矩阵
单位矩阵:eye(m,n); eye(m) 零 矩 阵:zeros(m,n); zeros(m) 一 矩 阵:ones(m,n); ones(m) 对角矩阵:对角元素向量 V=[a1,a2,…,an] A=diag(V) 随机矩阵:rand(m,n)产生一个m×n的均匀分别的随机 矩阵
>>1/0 Warning: Divide by zero. ans = Inf >>0/0 Warning: Divide by zero. ans = NaN
定义变量时应避免与常量名相同,如果改变了某个常量 的值,可以用clear命令来恢复。
>>pi=1
pi =
1 >>clear pi >>pi ans = 3.1416
>> rand('seed',12); >> tic;x1=b'/a;t1=toc >> a=rand(100)+1.e8; t1 = 0.0773 >> x=ones(100,1); >> er1=norm(x-x1') >> b=a*x; er1 = >> cond(a) 139.8328 ans = 5.0482e+011
>> double(s) ans = 49 50 51 50 51 52
字符串操作 strcat strcmp findstr upper deblank … … 执行字符串
c= 0.2000
strvcat lower
strncmp blanks
>> t='1/(a*b-1)';a=2;b=3;c=eval(t)
矩阵的基本运算
加减运算 要求两矩阵必须同阶。
>> 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 3
>> b(2)
2 4
ans =
[2x2 double]
向量
向量元素用“[]”括起来,元素间用空格、逗号或分号分隔; 注意:空格和逗号分隔成行向量,分号分割成列向量。 冒号表达式生成向量 >> a=1:2:12 基本格式:x=x1:step:x2 a= x=x1:x2 1 3 5 7 9 11
>> A=[1 2 3;4 5 6;7 8 0;1 3 5]; >> B=[1 3 5;2 4 6]; >> A/B >>(B'\A')' ans = 0 0.5000 -3.0000 3.5000 -12.0000 10.2500 1.0000 0.0000 ans = 0 0.5000 -3.0000 3.5000 -12.0000 10.2500 1.0000 0.0000
混合积
>> c=cross(a,b) c= -2 4 -2
>> dot(a,cross(b,c)) ans = 24
矩阵
1 2 3 矩阵 A 4 5 6 的输入: 7 8 9
>> A = [1,2,3; 4,5,6; 7,8,9]
>> a=[1 2 3 456 7 8 9] a=
>> c.c2
ans = 1 ans = abcd 2 3 4
>> c.c3
单元型变量
单元型变量为任意类型的多维数组,其定义需用大括号,元素间用逗号隔开。 >> a=[1,2;3,4]
a= 1 3 2 4
abcd
>> b={1:4,a,'abcd'}
b= [1x4 double] ?cellplot(b) [2x2 double] 'abcd'
常量
matlab中预定义的一些特殊的量。 -1022 i,j 虚数单位 -1 Realmin 最小的正浮点数,2 1023 pi 圆周率 Realmax 最大的浮点数, 2 -52 eps 浮点运算的相对精度 10 Inf 无穷大 NaN not a number ,不定值 例如: >>pi ans = 3.1416
点积计算
指两个向量在其中一个向量方向上的投影的乘积。 dot(a,b) a,b必须同维。
>> a=[1 2 3]; >> b=[3,4,5]; >> dot(a,b) ans =
26
> 叉积
表示过两相交向量的交点的垂直于两向量所在平面的向量。 cross(a,b) a,b必须为三维向量。
MATLAB程序设计基础
MATLAB的数值计算
Matlab的数据类型
变量
变量不需要事先声明,也不需要指定变量类型,它会自动根据 所赋予变量的值或对变量的操作来确定变量的类型;赋值过程中, 如果变量已存在,则用新值代替旧值,以新的类型代替旧的类型。 变量的命名规则: 变量名区分大小写; 变量名长度不超过31位,第31位之后的字符被忽略; 变量名以字母开头,变量名中可以包含字母、数字、下划线, 但不能使用标点。 变量一般为局部变量,即仅在其调用的M文件内部有效;若要 定义全局变量,须在变量前加关键字global。
>> a1=det(A)
a1 =
-85 >> a2=det(inv(A)) a2 = -0.0118 >> a1*a2 ans =
1
矩阵的幂运算 与数字的幂运算形式相同,用“^”算符。 矩阵的指数运算 常用函数 expm expm1 expm2 expm3 矩阵的对数运算 函数 logm 矩阵的开方运算 函数 sqrtm
40.6000
60.4000
80.2000 100.0000

对数等分向量生成
y=logspace(x1,x2) y=logspace(x1,x2,n) 生成50维对数等分向量, y(1)=10^x1 y(50)=10^x2 生成n维对数等分向量 y(1)=10^x1 y(n)=10^x2
>> a=logspace(0,5,6) a= 1 10 100 1000 10000 100000
数字变量
数字变量的运算
>>258*369 ans = >>x=258*369 x=
95202
>>123^3
95202
>>sqrt(ans)
ans =
1860867
ans =
1.3641e+003
数字的输入输出格式
缺省为实数保留小数点后 4位浮点数表示。 其输入格式与C语言一致: 如:9 -73 0.1999 1.475e6 输出格式由format命令控 制,只是影响屏幕显示效果, 不影响内部存储和计算。
>> a=12:-2:1 a= 12 10 8 >> a=1:6 a= 1 2 3 6 4 4 5 2 6

线性等分向量生成
y=linspace(x1,x2) y=linspace(x1,x2,n) 生成100维行向量 生成n维行向量
>> a=linspace(1,100,6) a=
1.0000
20.8000
>> tic;x1=a\b;t1=toc t1 = 0.0014 >> er2=norm(x-x1) er2 = 1.1311e-004
矩阵与常数的运算 常数与此矩阵的各元素之间进行运算。 注意:进行数除时,常数通常只能做除数。 矩阵的逆运算 >> A=[2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 5]; 函数 inv
如果已知A为方 阵,则V=diag(A)可 以提取A的对角元 素构成向量V。
其他特殊矩阵
compan hankel hilb invhilb …… 友矩阵函数 magic 魔方矩阵 Hankel矩阵 rosser 对称特征值测试矩阵 Hilbert矩阵 pascal Pascal矩阵 反Hilbert矩阵 vander 范德蒙矩阵
>> f=a*e f= 14 20 26 14 20 26 14 20 26 30 45 60
除法
左除“\”: 相当于Ax=B的解,x=A-1B。 右除“/”:相当于xA=B的解,x=BA-1 A-1B=(B’A’-1)’。 通常,右除稍快一些,而左除可以避免奇异性。对于Ax
=B,其中A为(n×m)阶矩阵: n=m且非奇异时,方程为恰定方程; n>m 方程为超定方程; n<m 方程为欠定方程。
结构型变量
由函数struct定义,以指针操作符“.”连接结构型变量名与属性名。 结构型变量名=struct(元素名1,元素值1,元素名2,元素值2,…) >> c=struct('c1',1,'c2',[1 2 3 4],'c3','abcd')
c= c1: 1 c2: [1 2 3 4] c3: 'abcd'
A=
1 4 7 2 5 8 3 6 9
1 4 7
2 5 8
3 6 9
大型矩阵通借助M文件来输入。
x=rand(1,5) %产生的均布随机数组 x= 0.9501 0.2311 0.6068 0.4860 0.8913 x(3) %寻访数组x的第三个元素。 ans = 0.6068 x([1 2 5]) %寻访数组x的第一、二、五个元素组成的子数组。 ans = 0.9501 0.2311 0.8913 x(1:3) %寻访前三个元素组成的子数组 ans = 0.9501 0.2311 0.6068 x(3:end) %寻访除前2个元素外的全部其他元素。end是最后一 %个元素的下标。 ans = 0.6068 0.4860 0.8913
>> 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
矩阵的行列式运算 函数 det >> A=[2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 5];
向量的基本运算 与数运算
a= 1.0000 20.8000 40.6000 60.4000 80.2000 100.0000 >> a-1 ans = 0 >> a*2 ans = 2.0000 41.6000 81.2000 120.8000 160.4000 200.0000 19.8000 39.6000 59.4000 79.2000 99.0000
>> eye(2,3)
ans=
>> eye(2)
100 010 >> zeros(2,3) ans= 000 000 >> ones(2,3) ans= 111 111 >> V=[5 7 2]; A=diag(V) A= 500 070 002
ans= 10 01 >> zeros(2) ans= 00 00 >> ones(2) ans= 11 11
>>s='symbolic' s= symbolic >> size(s) ans = 1 8 >> s(3) ans = m
字符串的转换
double num2str int2str mat2str str2num 字符串转换为数值代码 数字转换为字符串 整数转换为字符串 矩阵转换为字符串 转换字符串为数字
>> b=magic(3) b= 8 3 4 1 5 9 6 7 2
>> sqrtm(b)
ans =
2.7065 + 0.0601i 0.0185 + 0.5347i 1.1480 - 0.5948i 0.4703 + 0.0829i 2.0288 + 0.7378i 1.3739 - 0.8207i 0.6962 - 0.1430i 1.8257 - 1.2725i 1.3511 + 1.4155i >> b^0.5 ans = 2.7065 + 0.0601i 0.0185 + 0.5347i 1.1480 - 0.5948i 0.4703 + 0.0829i 2.0288 + 0.7378i 1.3739 - 0.8207i 0.6962 - 0.1430i 1.8257 - 1.2725i 1.3511 + 1.4155i
相关文档
最新文档