Matlab与科学计算的基本运算
各种允许的比较关系
>, >=, <, <=, ==,~=, find(), all(), any()
例:>> A=[1,2,3;4,5,6;7,8,0]
A =
1 2 3
4 5 6
7 8 0
>> find(A>=5), %大于或等于5元素的下标
ans =
3 5 6 8
>> 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)
>> simple(P) % 一系列化简尝试,得出计算机认为的最简形式
ans =
(s+3)^2*(s+2)*(s+1)*(s+4)^3
MATLAB 实现:
s1=simple(s) 从各种方法中自动选择最简格式 [s1,how]=simple(s) 化简并返回实际采用的化简方法
其中,s为原始表达式,s1为化简后表达式,how为采用的化简方法。
其它常用化简函数(信息与格式可用 help命令得出)
collect( ) 合并同类项
expand( ) 展开多项式
factor( ) 因式分解
numden( ) 提取多项式的分子和分母
sincos( ) 三角函数的化简
Q =
s^7 + 21*s^6 + 185*s^5 + 883*s^4 + 2454*s^3 + 3944*s^2 + 3360*s + 1152
>> syms s1
>> subs(Q,s,s1)
ans =
s1^7 + 21*s1^6 + 185*s1^5 + 883*s1^4 + 2454*s1^3 + 3944*s1^2 + 3360*s1 + 1152
gcd(m,n) lcm(m,n) factor(n):质因子分解
isprime:判断质数
例:1-100间质数
>> A=1:10; isprime(A) %若向量A中某个整数值为质数,则相应位置为1,其他为零。
ans =
0 1 1 0 1 0 1 0 0 0
>> A=1:100; B=A(isprime(A))
B =
Columns 1 through 16
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
Columns 17 through 25
59 61 67 71 73 79 83 89 97
switch语句
和 C 语言的区别
当开关表达式的值等于某表达式,执行该语句后结束该结构,不用 break
当需要在开关表达式满足若干个表达式之一时执行某一程序段,则用单元形式 (用大括号把这些表达式括起来,用逗号分隔)
otherwise 语句,不是C语言中的 default(但与之等价)
程序的执行结果和各个case顺序无关
case 语句中条件不能重复,否则列在后面的条件将不能执行
nargin, nargout
分别表示输入和返回变量的实际个数,此为MATLAB保留变量,只要进入该函数, MATLAB就将自动生成这两个变量。
varargin, varargout
输入、输出变量列表(可变输入输出个数)。
factorial()求阶乘;prod更快,用于求数组内元素的乘积。
例: conv( ) 可以计算两个多项式的积
用 varargin 实现任意多个多项式的积
function a=convs(varargin)
a=1;
for i=1:length(varargin), a=conv(a,varargin{i}); end
>> P=[1 2 4 0 5]; Q=[1 2]; F=[1 2 3]; D=convs(P,Q,F)
D =
1 6 19 36 45 44 35 30
>> poly2sym(D)
ans =
x^7+6*x^6+19*x^5+36*x^4+45*x^3+44*x^2+35*x+30
>> a = [1 1]
a =
1 1
>> b = [1 1]
b =
1 1
>> conv(a,b)
ans =
1 2 1
>> E=conv(conv(P,Q),F)
% 若采用 conv() 函数,则需要嵌套调用
E =
1 6 19 36 45 44 35 30
>> poly2sym(E)
ans =
x^7+6*x^6+19*x^5+36*x^4+45*x^3+44*x^2+35*x+30
>> G=convs(P,Q,F,[1,1],[1,3],[1,1])
G =
1 11 56 176 376 578 678 648 527 315 90
subplot(2,2,i)
隐函数绘制f(x,y) = 0
>> ezplot(‘x^2 *sin(x+y^2) +y^2*exp(x+y)+5*cos(x^2+y)’) %x自选
>> ezplot('x^2 *sin(x+y^2) +y^2*exp(x+y)+5*cos(x^2+y)',[-10 10])