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( ) 三角函数的化简

Matlab与科学计算的基本运算

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])

你可能感兴趣的:(matlab)