MATLAB在数学实验中的应用——数学实验复习
(持续更新)
一、基础知识
基础的数学符号:
变量 | 说明 |
---|---|
ans | 预设的计算结果的变量名 |
eps | 定义正的极小值= 2.2204 ∗ 1 0 ( − 16 ) 2.2204*10^(-16) 2.2204∗10(−16) |
pi | ∏值 |
inf | ∞值,无限大 |
NaN | 无法定义一个数目(零做分母) |
i 或 j | 虚数单位 i = j = s q r t ( − 1 ) i=j=sqrt(-1) i=j=sqrt(−1) |
取整函数:
函数 | 运算法则 | 实例 |
---|---|---|
floor | 向下取整 | floor(3.5)=3 |
ceil | 向上取整 | ceil(3.5)=4 |
round | 取最接近的整数,如果小数部分是0.5,向绝对值大的方向取整 | round(3.5)=4;round(-3.5)=-4 |
fix | 向0取整 | fix(3.5)=3;fix(-3.5)=-3 |
类型转化函数:
函数 | 说明 |
---|---|
char | 转化成字符类型 |
int2str | 将整数转化成字符串 |
num2str | 将数值转化成字符串 |
str2num | 将字符串转化成数值 |
str2double | 将字符串转化成浮点数 |
eval | 将字符串转化成MATLAB可执行的语句 |
rad2deg | 将弧度转化成角度 |
deg2rad | 将角度转化为弧度 |
有关复数的函数:
函数 | 说明 |
---|---|
x=complex(a,b) | 建立一个复数a+bi |
real(x) | 返回复数的实部 |
abs(x) | 返回复数的模 |
conj(x) | 返回复数x的共轭复数 |
imag(x) | 返回复数的虚部a |
angle(x) | 返回复数x辅角 |
基础数学函数:
名称 | 含义 |
---|---|
exp | 以e为底的指数 |
log | 自然对数 |
sqrt | 平方根 |
log10 | 以10为底的对数 |
log2 | 以2为底的对数 |
pow2 | 2的幂 |
sin、cos、tan | 三角函数 |
asin、acos、atan | 反三角函数(生成弧度制) |
asind、acosd、atand | 反三角函数(生成角度值) |
**clear all:**如果变量用户不用clear清除它,或对它进行赋值,那么该变量一直保存在变量空间中,直到本次指令窗口关闭为止。
clc: 清除所有指令
iskeyword: 获得关键字的列表
%: 表示注释
;: 语句结束,若命令后为分号禁止显示结果
syms: 声明变量
@: 句柄操作符
二、编程思想的介入
函数 | 含义 |
---|---|
input() | 输入 |
disp() | 输出 |
语句 | 含义 |
---|---|
if-else-end | 条件分支 |
switch-case | 条件分支 |
for循环 | 循环语句 |
while循环 | 循环语句 |
break | 终止循环的执行 |
continue | 跳出本次的循环 |
函数:
1、匿名函数
创建方法:𝒇 = @(𝒂𝒓𝒈𝒍𝒊𝒔𝒕)𝒆𝒙𝒑𝒓𝒆𝒔𝒔𝒊𝒐𝒏
调用方法:𝒇(𝒂𝒓𝒈𝒍𝒊𝒔𝒕)
2、feval 函数
[ 𝐲𝟏, 𝐲𝟐, ⋯ ] = 𝐟𝐞𝐯𝐚𝐥(𝐟𝐡𝐚𝐧𝐝𝐥𝐞, 𝐱𝟏, 𝐱𝟐, ⋯ , 𝐱𝐧)
[ 𝐲𝟏, 𝐲𝟐, ⋯ ] = 𝐟𝐞𝐯𝐚𝐥(𝐟𝐧𝐚𝐦𝐞, 𝐱𝟏, 𝐱𝟐, ⋯ , 𝐱𝐧)
注:fhandle 是一个函数的句柄
fname 是一个字符串表示的函数名称
例:计算sin2:
sin(2);feval(@sin,2); feval(‘sin’,2)
3、函数文件
创建文件:function 输出形参表 = 函数名(输入形参表)
function [output_args]=functionname(input_args)
调用函数:[输出实参表]=函数名(输入实参表)
三、向量与矩阵
1、向量的生成
①暴力生成法
命令窗口直接输入,使用[ ],元素之间用空格、逗 号(行向量)或者分号(列向量)隔开
例:生成行向量a=[1 2 3 4 5] 和列向量 b=[1 4 9]
a = [1 2 3 4 5]
b = [1;4;9]
②冒号表达式
基本形式:𝒙 = 𝒙𝟎: 𝒔𝒕𝒆𝒑: 𝒙𝒏 【初始值:步长:结束值】
③生成线性等分向量:linspace 函数
基本形式:𝒙 = 𝒍𝒊𝒏𝒔𝒑𝒂𝒄𝒆(𝒙𝟏, 𝒙𝟐, 𝒏)
𝒙为以 𝒙𝟏为起始元素,𝒙𝟐为最终元素的 n 维行向量。
④生成对数等分向量:logspace函数
基本形式:𝒙 = 𝒍𝒐𝒈𝒔𝒑𝒂𝒄𝒆(𝒂, 𝒃, 𝒏)
𝒙为以 𝟏𝟎𝒂为起始元素,𝟏𝟎𝒃为最终元素的 n 维行向量
2、向量运算:
设有两个相同维数的向量a、b
公式 | 含义 |
---|---|
a+b;a-b | 相加;相减 |
a.*b; a./b;a./b | 对应元素的乘除幂 |
dot(a,b) | 两个元素的点乘积 |
length(a) | 向量a的长度 |
sum(a) | 向量a的元素的和 |
sum(a)/length(a) | 向量a的元素的平均值 |
a’ | 向量a的转置 |
3、矩阵的创建:
①分号换行或回车键换行
②特殊矩阵的创建
函数 | 说明 |
---|---|
ones(n),ones(size(a)),ones(m,n) | 构建所有元素为1的矩阵 |
eye(n),eye(size(a)),eye(m,n) | 构建单位矩阵 |
zero(n),zeros(size(a)),zeros(m,n) | 构建所有元素为0的矩阵 |
rand(m,n) | 产生m×n矩阵,其中元素是服从[0,1]上均匀分布的随机数 |
unifrnd(a,b,m,n) | 产生m×n矩阵,其中元素是服从区间[a,b]上均匀分布的随机数 |
normrnd(mu,sigma,m,n) | 产生m×n矩阵,其中的元素是服从均值为mu,标准差为sigma的正态分布的随机数 |
dig(A) | 构建一个对角矩阵,其对角线元素值取自向量A |
triu(A) tril(A) | 构建矩阵A的上下三角矩阵 |
4、引用矩阵元素:
①通过下标引用矩阵的元素A(m,n)
②通过矩阵元素的序号引用矩阵的元素A(index)
5、矩阵的拆分:
①利用冒号表达式获得子矩阵
②利用空矩阵删除矩阵的元素(空矩阵代替)
6、矩阵运算:
算术运算 | 含义 |
---|---|
A+B;A-B;A*B;A^n | 加、减、乘、乘方(乘方时要求A为方阵) |
A\B;B/A | 左除和右除 |
点运算 | 含义 |
---|---|
.* ; ./ ; .\ ; .^ | 点乘、点右除、点左除、点乘方(要求两矩阵的维参数相同) |
关系运算 | 含义 |
---|---|
> < | 大于;小于 |
>= <= | 大于等于;小于等于 |
== ~= | 等于;不等于 |
逻辑运算 | 含义 |
---|---|
& | 与 |
| | 或 |
~ | 非 |
其他运算 | 含义 |
---|---|
[row,col]=size(A) | 求矩阵A的行数和列数 |
numel(A) | 求矩阵A中元素的个数 |
det(A) | 计算方阵A的行列式 |
inv(A) | 计算可逆阵A的逆矩阵 |
rank(A) | 求矩阵A的秩 |
find | 默认返回矩阵查找符合条件的元素小标(实际存储位置)所组成的向量,如返回矩阵中行列位置 ,则[row,col]=find(X) |
norm | 计算矩阵的范数,默认计算矩阵的2 范数 |
[V,D]=eig(A) | 求矩阵的特征值和特征向量 |
四、绘图
1、二维
命令 | 说明 | 用法 |
---|---|---|
plot | 使用线性坐标空间绘制图形 | plot(x1,y1,LineSpec) |
loglog | 在两个对数坐标空间绘制图形 | |
semilogx、semilogy | 使用x轴(y轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形 | semilogx(x1,y1,LineSpec) |
polar | 使用极坐标空间绘制图形 | polar(theta,rho) |
fplot | 绘制函数曲线图 | fplot(fun,limits) |
subplot | 图形窗口分割 | subplot(r,c,p) |
命令 | 说明 |
---|---|
title | 图形的名称 |
xlabel、ylabel | 分别用于说明坐标轴的名称 |
text | 函数是在坐标点(x,y)处添加图形说明 |
legend | 用于绘制曲线所用线型、颜色或数据点标记图例。 除legend函数外,其他函数同样适用于三维图形,在三维中z坐标轴说明用zlabel函数 |
2、三维
命令 | 说明 | 使用方法 |
---|---|---|
plot3 | 绘制三维曲线图 | plot3(x1,y1,z1,LineSpec) |
comet3 | 绘制三维轨迹图 | comet3(x,y,z,p) |
mesh | 绘制三维网格图 | mesh(x,y,z) |
meshgrid | 将向量转化成网格坐标 | [X,Y,Z]=meshgrid(x,y,z) |
surf | 绘制三维曲面图 | surf(x,y,z) |
scatter3 | 绘制三维散点图 | scatter(x,y,z,s,c) |
五、函数的导数
求函数的一阶和二阶导数diff(expr,n,v)
例:求函数y=log(x+sqrt(1+x^2))的一阶和二阶导数
syms x;
y=log(x+sqrt(1+x^2));
dydx=diff(y,x);
dydx=simplify(dydx)
dydx2=diff(y,x,2);
dydx2=simplify(dydx2)
隐函数求导:dy/dx=-fx/fy
例:设e^y+xy-e=0,求dy/dx
syms x y;
f=exp(y)+x*y-exp(1);
dfdx=diff(f,x);
dfdy=diff(f,y);
dydx=-dfdx/dfdy
参数方程求导:设参数方程{x=x(t);y=y(t)}确定的函数y=f(x),则dy/dx=y’(t)/x’(t)
例:设{x=a(t-sin(t));y=a(1-cos(t))},求dy/dx
syms a t;
dxdt=diff(a*(t-sin(t)));
dydt=diff(a*(1-cos(t)));
dydx=dydt/dxdt