程 序 命 令 后 面 输 入 与 不 输 入 “ ; ” 的 区 别 是 , 当 输 入 半 角 的 分 号 时 , 命 令 中 的 变 量 会 自 动 列 表 储 存 在 w o r k s p a c e 中 , 变 量 的 值 不 会 在 w i n d o w c o m m a n d 中 显 示 出 来 ; 当 不 输 入 半 角 的 分 号 时 , 变 量 不 仅 也 会 自 动 储 存 在 w o r k s p a c e 中 , 还 会 在 w i n d o w c o m m a n d 窗 口 中 显 示 出 变 量 的 值 。 程序命令后面输入与不输入“;”的区别是,当输入半角的分号时,命令中的变量会自动列表储存在\\ workspace中,变量的值不会在window command中显示出来;当不输入半角的分号时,变量不仅也\\会自动储存在workspace中,还会在window command窗口中显示出变量的值。 程序命令后面输入与不输入“;”的区别是,当输入半角的分号时,命令中的变量会自动列表储存在workspace中,变量的值不会在windowcommand中显示出来;当不输入半角的分号时,变量不仅也会自动储存在workspace中,还会在windowcommand窗口中显示出变量的值。
s y m s 是 定 义 符 号 变 量 s y m 是 将 字 符 或 者 数 字 转 换 为 字 符 如 果 定 义 变 量 x , s y m s x ; 当 用 s y m 生 成 多 个 符 号 变 量 时 , M A T L A B 要 报 错 s y m s 可 以 直 接 声 明 符 号 函 数 d ( r ) , 并 且 可 以 对 函 数 的 形 式 进 行 赋 值 改 变 , 但 是 s y m 却 不 可 以 s y m d ( t ) , 只 是 将 d ( t ) 生 成 了 一 个 整 体 的 符 号 。 syms是定义符号变量\\ sym是将字符或者数字转换为字符\\ 如果定义变量x,syms\ x;当用sym生成多个符号变量时,MATLAB要报错\\ syms可以直接声明符号函数d(r),并且可以对函数的形式进行赋值改变,但是sym却不可以sym\ d(t),\\只是将d(t)生成了一个整体的符号。 syms是定义符号变量sym是将字符或者数字转换为字符如果定义变量x,syms x;当用sym生成多个符号变量时,MATLAB要报错syms可以直接声明符号函数d(r),并且可以对函数的形式进行赋值改变,但是sym却不可以sym d(t),只是将d(t)生成了一个整体的符号。
运算符号 | \ | / | ’ | . |
---|---|---|---|---|
说明 | 左除 | 右除 | 转置 | 群运算 |
数据类型
int8 uint8 int16 uint16 int32 uint32 int64 uint64 %整型
floor(x) ceil(x) round(x) fix(x) %取整函数
real(z) imag(z) abs(z) %实部 虚部 模
angle(z) conj(z) complex(a,b) %辐角 共轭复数 创建复数
format short %输出格式短,小数点后四位
format long %输出格式长,小数点后14位到15位
矩阵
矩阵索引
表达式 | 功能 |
---|---|
A(1) | A重组为一维数组,返回第一个元素 |
A(:,j) | 返回A中j列向量 |
A(i,:) | 返回A中i行向量 |
A(i:k,j:l) | 返回A中i行到k行向量与j列到l列向量组成的子矩阵 |
A( : ) | 将A中每列合并成一个长的列向量 |
help inv %显示帮助信息
A = eye(4); %4阶单位矩阵
A = zeros(3,2); %3*2阶零矩阵
A = zeros(3); %3阶零方阵
A = ones(2,4); %2*4阶全为1方阵
A = rand(m,n); %m*n从0到1均匀分布随机数矩阵
A = randn(m,n); %m*n元素均为零均值,单位方差的正态分布随机
A(:,i) = b %向量b赋值给A的第i列
A(1,:)=[] %空行赋给第一行,即删除第一行
B = A(:1,5) %取矩阵第1列至第5列
A(i,j) %引用矩阵A中i行j列的元素
[m,n] = size(A) %m,n分别存放A的行数与列数
[A,eye(5)] %创建5*10矩阵,前5列为矩阵A,后5列为单位矩阵
inv(A) %矩阵A的逆
round(A) %所有元素四舍五入
x = magic(3) %每一行每一列元素之和相同
ans = 8 1 6
3 5 7
4 9 2
---
y = sin(x)
y = cos(x)
y = sinh(x)
y = cosh(x)
y = asin(x)
y = acos(x)
y = asinh(x)
y = acosh(x)
y = tan(x)
y = tanh(x)
y = atan(x)
y = atanh(x)
---
A‘ %转置
d = det(A) %行列式
r = rank(A) %秩
R = rref(A) %最简形
rrefmoive(A) %给出化简每一步过程
---
clear all;
A = [1 3 0;3 1 0;9 2 4]
B = sort(A); %列升序排列
C = sort(A,2) %行升序排列
D = sort(A,'descend'); %列降序排列
E = sort(A,2,'descend'); %行降序排列
BCDE = [B C;D E]
---
clear all;
A = [1 3 0;3 1 0;9 2 4]
B = sum(A) %按列求和,得列向量
C = sum(A, 2) %按行求和,得行向量
D = cumsum(A) %列累和,返回矩阵
E = cumsum(A) %行累和
F = sum(sum(A)) %所有元素和
---
clear all;
A = magic(3)
B = prod(A) %各列元素积
C = prod(A,2) %各行元素积
D = cumprod(A) %列累积
E = cumprod(A,2) %行累积
---
clear all;
A = magic(3)
B = diff(A) %各列差分
C = diff(A,2) %各列2阶差分
D = diff(A,1,1) %各列差分
E = diff(A,1,2) %各行差分
复数
a = 2.7;
b = 13/25;
c = [1,3 * a + i * b,b * sqrt(a);sin(pi / 6),3 * a + b,3]
---
A = [1 2 3;4 5 6];
B = [11 12 13;14 15 16];
C = A + i * B
符号运算
变量代换
syms a b c d k n x y w t;
f = a * x^n + b * y + k
f1 = subs(f,[a,b],[sin(t) log(w)])
f2 = subs(f,[a,b,k],[sin(t) log(w) c * exp(-d * t)]) %a = sint,b = lnw, k = ce^(-dt)
f3 = subs(f,[n,k],[5 pi]) %n = 5, k = pi
f4 = subs(f1,k,1:4) %k = 1 : 4
数值转化
syms c1 c2 c3;
c1 = sym('sqrt(2) * log(7)');
c2 = sym('pi * sin(pi / 5) * exp(1.3)')
c3 = sym('exp(pi * sqrt(8))')
ans1 = double(c1)
ans2 = double(c2)
ans3 = double(c3)
class(ans1)
class(ans2)
class(ans3)
---
c = sym('exp(pi * sqrt(79))');
c1 = double(c)
ans1 = class(c1)
c2 = vpa(c1, 8) %vpa(E,D)
ans2 = class(c2)
digits 18 %设置精度
c3 = vpa(c1) %vpa(E)精确计算表达式值,必须与digits(D)连用
ans3 = class(c3)
表达式化简
syms x
f = x ^ 3 + x ^ 2 - x - 1;
f1 = factor(f) %因式分解
---
syms x y;
f = (x + y)^3;
expand(f) %展开
---
syms a b c x;
f = -a * x * exp(-c * x) + b * exp(-c * x);
f1 = collect(f, exp(-c * x)) %合并同类项
---
syms x y;
e1 = log(x) + log(y);
[R1,HOW1] = simple(e1)
e2 = 2 * cos(x)^2 - sin(x)^2;
[R2,HOW2] = simple(e2)
e3 = cos(x) + j * sin(x);
[R3,HOW3] = simple(e3)
e4 = x^3 + 3 * x^2 + 3 * x + 1;
[R4,HOW4] = simple(e4)
e5 = cos(x)^2 - sin(x)^2;
[R5,HOW5] = simple(e5) %化简并返回简化方法
---
syms k p x y;
f = x/(k * y) + y/(p * x);
[n,d] = numden(f)
f1 = n / d
numden(f) %通分
---
syms a b c d x;
f = -a * x^4 + b * x ^ 3 - c * x^2 + x + d;
f1 = honor(f) %嵌套型
其他函数
syms a b c x y;
c = 123456;
ans1 = class(c)
c1 = char(sym(c)) %char将数值对象,符号对象转换为字符对象
ans2 = class(c1)
f = sym('x + y + z');
ans3 = class(f)
f1 = char(f)
ans4 = class(f1) %char
---
syms a b c d x y;
f = a * x / b + c / (d * y);
f1 = sqrt(b^2 - 4 * a * c);
pretty(f) %以习惯“书写”方式显示
pretty(f1)
---
clear %清除工作区
复合函数与反函数
微积分
导数
∂ x i ∂ x j = − ∂ ∂ x j f ( x 1 , x 2 , ⋯   , x n ) ∂ ∂ x i f ( x 1 , x 2 , ⋯   , x n ) \frac{\partial x_i}{\partial x_j}=-\frac{\frac{\partial}{\partial x_j}f\left(x_1,x_2,\cdots,x_n\right)}{\frac{\partial}{\partial x_i}f\left(x_1,x_2,\cdots,x_n\right)} ∂xj∂xi=−∂xi∂f(x1,x2,⋯,xn)∂xj∂f(x1,x2,⋯,xn)
syms x
y = -x*sin(x)
diff(y,x,2)
diff(y,x,3)
%偏导数
syms a x y z;
f = x ^ 2 - y ^ 2 + 2 * z ^ 2 = a ^ 2;
zx = -diff(f,x)/diff(f,z)
zy = -diff(f,y)/diff(f,z)
---
syms x y;
f = (x ^ 2 + 2 * x) * exp(x ^ 2 + y ^ 2 + 2 * x * y);
diff(f,x)/diff(f,y)
绘图
简单示例
y = x + sin x + e x , x ∈ [ − π 2 , π 2 ] y = x + \sin x +e^x, x\in\left[-\frac{\pi}{2},\frac{\pi}{2}\right] y=x+sinx+ex,x∈[−2π,2π]
x = -pi/2:0.01:pi/2;
y = x + sin(x) + exp(x);
plot(x,y)
plot(x,y,'-ro')
grid on %网格
title('示例');
xlabel('x');
ylabel('y');
legend('y = x + sinx + e^{x}');
ezplot
ezplot(f) %MATLAB默认范围(-2pi, 2pi)
ezplot('sin(x)^2+4*cos(y)^2=4',[-5 5 -1 1]); %ezplot(f,[xmin, xmax, ymin, ymax])
axis square
二元函数
%ezmesh
syms x,y;
f = 'sqrt(1 - x^2 - y)';
ezmesh(f)
---
%meshgrid
x = 0:0.1:2;
y = -2:0.1:2;
[X,Y] = meshgrid(x,y);
Z = X.^3 + Y.^3;
surf(X,Y,Z);xlabel('x'),ylabel('y'),zlabel('z');
title('z = x^3 + y^3')
---
%循环语句获得矩阵数据
clear all
clc
x = 0:0.1:2;
y = -2:0.1:2;
z1 = y.^3;
z2 = x.^3;
nz1 = length(z1);
nz2 = length(z2);
Z = zeros(nz1,nz2);
for r = 1:nz1
for c = 1:nz2
Z(r,c) = z1(r) + z2(c);
end
end
surf(x,y,Z);xlabel('x'),ylabel('y'),zlabel('z');
title('z = x^3 + y^3')