当前位置:
文档之家› 科学工程计算与matlab编程
科学工程计算与matlab编程
>>
1
syms a b c
d
t;
%
假设这些变量均为符1 号变量2
** n 12
* n
>> f=cos(a*t+b)+sin(c*t)*sin(d*t); % 定义给定函数 f(t)
>> f1=subs(f,{a,b,c,d,t},{0.5*pi,pi,0.25*pi,0.125*pi,4})
f1 =
>> C=A.*A
C=
149
16 25 36
49 64 0
矩阵的逻辑运算
• 逻辑变量: – 当前版本有逻辑变量 – 对 double 变量来说,非 0 表示逻辑 1
• 逻辑运算(相应元素间的运算) – 与运算 A&C – 或运算 A|C – 非运算 ~A – 异或运算 xor(A,C)
矩阵的比较运算
(2)“%” 后面所有文字为注释. (3) “...”表示续行.
数值型数据结构
• 双精度数值变量 – IEEE标准,64位 (占8字节),11指数位,53数值位和一个符号位 – – double( ) 函数的转换
• 其他数据类型 – uint8( ),无符号8位整形数据类型,值域为0至255,常用于图像表示和处理。(节省存储空间, 提高处理速度) – int8( ), int16( ), int32( ),uint16( ), uint32( )
3.14932384626433832795
>> vpa(pi,60)
ans =
3.1493238462643383279539937510582097494
MATLAB支持的其它数据结构
• 字符串型数据:用单引号括起来 。 • 多维数组:是矩阵的直接扩展,多个下标。 • 单元数组:将不同类型数据集成到一个变量名下面,用{}表示;例:用A{i,j}可表示单元数
科学工程计算与matlab编程
本章主要内容
• MATLAB 程序设计语言基础 • 基本数学运算 • MATLAB语言流程控制 • MATLAB 函数的编写 • 二维图形绘制 • 三维图形绘制
2.1 MATLAB 程序设计语言基础
• MATLAB 语言的变量命名规则是: (1)变量名必须是不含空格的单个词; (2)变量名区分大小写; (3)变量名最多不超过19个字符; (4)变量名必须以字母打头,之后可以是
ans =
A=
31
123
22
456
32
780
23
>> all(A>=5) %某列元素全大于或等于5时,相应元素为1,否则为0。
ans =
000
>> any(A>=5) %某列元素中含有大于或等于5时,相应元素为1,否则为0。
ans =
111
解析结果的化简与变换
MATLAB 实现: s1=simple(s) 从各种方法中自动选择最简格式 [s1,how]=simple(s) 化简并返回实际采用的化简方法 其中,s为原始表达式,s1为化简后表达式,how为采用的化简方法。
• 各种允许的比较关系 >, >=, <, <=, ==,~=, find(), all(), any()
• 例:>> A A=
123 456 780 >> find(A>=5), %大于或等于5元素的下标 ,竖着数 ans = 3568
>> [i,j]=find(A>=5);[i,j] %显示行标,列标
• 冒号表达式
v=s1:s2:s3 该函数生成一个行向量v,其中s1是起始值, s2是步长(若省略步长为1), s3是最大值。%用来定义
自变量的范围,生成一组数% 例:用不同的步距生成 (0,p) 间向量。 >> v1=0:0.2:pi v1 =Columns 1 through 9
0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 Columns 10 through 16 1.8000 2.0000 2.2000 2.4000 2.6000 2.8000 3.0000
0 0.4000 0.8000 1.2000 1.6000 2.0000 2.4000
2.8000
3.1416
子矩阵提取
• 基本语句格式 B=A(v1,v2) v1、 v2分别表示提取行(列)号构成的向量。
例:>> A=[1,2,3,4;3,4,5,6;5,6,7,8;7,8,9,0]
A=
1234
• 其他常用化简函数(信息与格式可用 help命令得出) collect( ) 合并同类项 expand( ) 展开多项式 factor( ) 因式分解 numden( ) 提取多项式的分子和分母 sincos( ) 三角函数的化简
例:
>> syms s; >> P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64) P= (s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)
>> expand(P) ans = s^7+21*s^6+185*s^5+883*s^4+2454*s^3+3944*s^2+3360*s+1152
• 变量替换
f subs(f,x,x) 其中,f为原表达式,用x*替1换x得出新的。
* 11
f s u b s ( f,{ x ,x , ,x } ,{ x ,x , ,x } ) 例:求其 Taylor 幂级数展开
>> v2=0:-0.1:pi %步距为负,不能生成向量,得出空矩阵 v2 =
Empty matrix: 1-by-0 >> v3=0:pi %默认步长为1 v3 =
0123 >> v4=pi:-1:0 %逆序排列构成新向量 v4 =
3.1416 2.1416 1.1416 0.1416 >> v5=[0:0.4:pi,pi] %pi的值出现在最后% v5 =
>> B3=A(:,end:-1:1) %将A矩阵左右翻转,即最后一列排在最前面。
B3 =
4321
6543
8765
0987
2.2 基本数学运算
矩阵的代数运算
• 矩阵表示 • 矩阵转置
– 数学表示 (若A有复数元素,先转置再取各元素共轭复数值,Hermit转置)
• MATLAB 求解 B=A.’ C=A’
>> D=rot90(rot90(A))
矩阵乘方
– A 为方阵,求
– MATLAB 实现: F=A^x
• 点运算--矩阵对应元素的直接运算
数学表示 :
MATLAB 实现: C=A.*B
例:>> A=[1,2,3;4,5,6;7,8,0];
>> B=A.^A
B=
1
4
27
2561
0.000 1.400 >> factor(lcm(n,m)) %对lcm(n,m)进行质因数分解。 ans =
2 2 2 5 7 7 757 947
• 例:1-100间质数 >> A=1:10; isprime(A) %若向量A中某个整数值为质数,则相应位置为1,其他为零。 ans =
• 矩阵加减法
C=A+B
D=A-B
– 注意维数是否相等
– 注意其一为标量的情形
• 矩阵乘法
– 数学表示
– MATLAB 表示 C=A*B
– 注意两个矩阵相容性
• 矩阵除法
– 矩阵左除:AX = B,求 X – MATLAB 求解:X=A\B
• 若A为非奇异方阵,则 X=A-1B • 最小二乘解(若A不是方阵) %矩阵左乘和右乘不一样,所以两者的结果不同% – 矩阵右除:XA = B,求 X – MATLAB求解:X=B/A • 若A为非奇异方阵,则 X=BA-1 • 最小二乘解(若A不是方阵)
>> simple(P) % 一系列化简尝试,得出计算机认为的最简形式 ans = (s+3)^2*(s+2)*(s+1)*(s+4)^3
>> [a,m]=simple(P) % 返回化简方法为因式分解方法,用 factor( ) 函数将得同样结果 a= (s+3)^2*(s+2)*(s+1)*(s+4)^3 m= factor
任意字母、数字或下划线,变量名中 不允许使用标点符号
MATLAB 的保留常量
特殊变量 ans pi
eps
flops inf NaN i,j nargin nargout realmin realmax
取值 用于结果的缺省变量名 圆周率 计算机的最小数,当和 1 相加就产生一个比 1 大的数 浮点运算数 无穷大,如 1/0 不定量,如 0/0 i=j= 1 所用函数的输入变量数目 所用函数的输出变量数目 最小可用正实数 最大可用正实数
1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i 4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i 7.0000 + 3.0000i 8.0000 + 2.0000i 0 + 1.0000i