其实很早之前做硕士毕业课题的时候就学过一些matlab和simulink的使用,但是时间过了这么久都不太记得了。。。
于是在mooc上面找了一个重庆大学的数学实验课程打算系统的学一学。
感觉matlab学习起来并没有太多的障碍,但是里面的一些语法细节总是不容易记住,想找的时候又总找不到资料,于是决定在这里零零散散的记录一些我觉得容易忘但是会用得到的知识点。
自用自用。
❤ 2020.2.28 ❤
MATLAB基础
基础知识及操作
变量类型
特殊变量
帮助指令
查看变量的大小
变量清除与保存
矩阵和数组
数组的下标操作
这是为什么。。。
数组的运算
初等数学函数
matlab初等数学函数在“elfun”文档中,可以输入“help elfun”获取帮助信息。
二维绘图指令
plot
○ 对坐标系进行调整
○ 添加标注
○ 画出两个刻度不同的y轴
○ 创建多幅子图
其他二维绘图工具
三维绘图指令
三位空间曲线
三维空间曲面
○ 例子
图形修饰
绘制等高线
○ 例子
❤ 2022.3.20 ❤
M文件
当文件名与函数名不同时,调用该函数时用文件名而不用函数名。
循环与分支结构
数学建模初步
Malthus人口模型
t=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 ];
p=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 ];
y=log(p); %求ln(p)的函数值,取对数转化为线性拟合
a=polyfit(t,y,1) %用1次多项式来拟合数据t,y
z=polyval(a,t); % 求以a为系数的多项式在t处的函数值
z1=exp(z)
r=a(1)
plot(t,p,'bo',t,z1,'r')
xlabel('时间');
ylabel('人口数量');
legend('实际数据','理论曲线')
这里需要注意的大概是
polyfit()函数和polyval()函数吧。
关于这两个函数的使用
→→→Matlab 曲线拟合之polyfit与polyval函数
❤ 2022.3.21 ❤
Logistic模型
population.m
function g=population(x,t) % logistic函数M文件
g=x(1)./(1+(x(1)/3.9-1)*exp(-x(2)*t)) ;
% x(1)为最大人口数量xm, x(2)为增长率r
end
Logistic.m
clear;%主程序
t=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 ];
p=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 ];
t=t-1780;%年份整体减去1780
x0=[150 0.15]; %待定参数x的初值
x=lsqcurvefit('population',x0,t,p) %求与实际数据吻合得最好的logistic函数, 函数lsqcurvefit可返回其中的参数xm和r
p1=population(x,t);
plot(t+1780,p,'o',t+1780,p1,'-r*')
title('Logistic模型拟合图')
xlabel('年')
ylabel('人口数')
p2000=population(x,2000-1780)
legend('实际数据','理论曲线')
○ 这个例子用到的lsqcurvefit()函数是用来做非线性拟合的。
❤ 2022.5.2 ❤
方程与方程组
点迭代法
将方程变形成左右两部分,将初值带入一边得出另一边的值,然后将得到的值再带入,使值逐步接近
问题:
迭代不一定是收敛的。
Solve() 函数
例子:
fsolve()
fzero() 函数
求解单变量方程
inline()函数的作用是定义一个方程
root() 函数
求解多项式方程,可以求出全部根
求解线性方程组 A\b和inv()
效果是一样的
❤ 2022.5.6 ❤
微分方程
数值求解算法
欧拉公式
〇 例子
改进欧拉公式
MATLAB求解
解析解 dsolve()
〇 例子
数值解 ode23()
〇 例子
〇 注意
注意列矩阵的形式
〇 例子
插值与拟合
一维插值
拉格朗日插值
分段线性插值
三次样条插值
关于边界条件
MATLAB一维插值
interp1() 一维插值函数
〇 当method缺省时就是分段线性插值
〇 例子
〇 三次样条插值
〇 对比三种插值方法
二维插值
网格节点
〇 最临近插值
〇 分片线性插值
〇 双线性插值
散乱节点
二维插值MATLAB计算
网格差值函数 interp2()
〇 例子
双线性插值
散点数据插值函数 griddata()
〇 例子
拟合
〇 距离准则
多项式拟合 polyfit()
〇 例子
非线性拟合
❤ 2020.5.10 ❤
数学规划
线性规划 linprog()
只能求最小化问题,如果是最大化问题要转化成最小化问题(>=转化成<=)
〇 例子
非线性规划 fincon()
〇 例子
整数规划 intlinprog()
〇 例子 背包问题
〇 例子 信号传输问题
过程略
〇 数度问题
过程略
❤ 2022.5.24 ❤
多目标规划
一般转化成单目标规划问题。
线性回归
图论算法
最小生成树
Kruskal 算法
〇 例子
最短路径法
Dijkastra算法