MATLAB在数学实验中的应用——数学实验复习
(持续更新)
一、基础知识
基础的数学符号:
| 变量 | 说明 |
|---|---|
| ans | 预设的计算结果的变量名 |
| eps | 定义正的极小值= 2.2204∗10(−16) |
| pi | ∏值 |
| inf | ∞值,无限大 |
| NaN | 无法定义一个数目(零做分母) |
| i 或 j | 虚数单位 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

京公网安备 11010502036488号