1.符号运算
1.1创建符号对象
- sym()
- syms()
其中syms()可以创建多个对象
a=1/4;
b='1/4';
c=sym(1/4);
d=sym('1/4');
classa=class(a)
classb=class(b)
classc=class(c)
classd=class(d)
classa =
double
classb =
char
classc =
sym
classd =
sym
1.2 例子
- 计算积分
syms A t tao w
yf=int(A*exp(-i*w*t),t,-tao/2,tao/2)
>>
(2*A*sin((tao*w)/2))/w
- 计算矩阵行列式值,特征值,特征根
- det() :计算行列式
- inv() : 计算特征值
- eig() : 计算特征根
syms a11 a12 a21 a22
A=[a11,a12;a21,a22]
DA=det(A)
IA=inv(A)
EA=eig(A)
>>
DA =
a11*a22 - a12*a21
IA =
[ a22/(a11*a22 - a12*a21), -a12/(a11*a22 - a12*a21)]
[ -a21/(a11*a22 - a12*a21), a11/(a11*a22 - a12*a21)]
EA =
a11/2 + a22/2 - (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2
a11/2 + a22/2 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2
- 化简与展开
- simpilify()
syms fai1 fai2
y=simplify(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))
>>
y =
sin(fai1 - fai2)
y=sym('(x+1)^3')
y=expand(y)
>>
y =
x^3 + 3*x^2 + 3*x + 1
- 因式分解
- factor()
syms a x
f1=x^4-5*x^3+5*x^2+5*x-6;factor(f1)
f2=x^2-a^2;factor(f2)
factor(1025)
>>
ans =
[ x - 1, x - 2, x - 3, x + 1]
ans =
[ -1, a - x, a + x]
ans =
5 5 41
2. 分支结构
2.1if分支
clear
a=100;
b=20;
if a<b
fprintf ('b>a') % 在Word中输入’b>a’单引号不可用,要在Editor中输入
else
fprintf ('a>b') % 在Word中输入’b>a’单引号不可用,要在Editor中输入
end
2.2 switch分支
clear
n=input('输入n='); % 输入n值
switch mod(n,5) % mod是求余函数,余数为0,得0,余数不为0,得1
case 0
fprintf ('%d是5的倍数',n)
otherwise
fprintf('%d不是5的倍数',n)
end
3.循环语句
3.1 while循环
clear
x=0; % 初始化变量x
sum=0; % 初始化sum变量
while x<101 % 当x<101执行循环体语句
sum=sum+x; % 进行累加
x=x+2;
end % while结构的终点
sum % 显示sum
>>
2550
3.2 for循环
语法规则如下:
for ii = 初值:增值:终值
语句一
语句二
end
clear
sum=0; % 设置初值(必须要有)
for ii=1:100; % for循环,增量为1
sum=sum+ii;
end
sum
%end % 程序结束
还有其他的continue,break语句与c语言类似,而input()的用法与python类似。
此外c语言中的”!“在matlab中用”~“
4.函数
在matlab中对于自带的函数可以直接调用,若是自写函数,如冒泡排序算法
新建脚本后,保存为BubbleSort.m,注意文件名要与函数名一致
function s=BubbleSort(x)
% 冒泡排序,x为待排序数组
n=length(x);
for i=1:n-1 % 最多做n-1趟排序
flag=0; % flag为交换标志,本趟排序开始前,交换标志应为假
for j=1:n-i % 每次从前向后扫描,j从1到 n-i
if x(j)>x(j+1) % 如果前项大于后项则进行交换
t=x(j+1);
x(j+1)=x(j);
x(j)=t;
flag=1; % 当发生了交换,将交换标志置为真
end
end
在调用的时候,只用新建脚本(与函数文件在同一路径下),即可直接调用
x = rand(1,10)
y = BubbleSort(x)
>>
1 至 9 列
0.0292 0.0855 0.2373 0.2625 0.4588 0.4886 0.5785 0.7303 0.8010
10 列
0.9289
网友评论