天天看点

数学建模——基础

目录

​​第1章 MATLAB基础知识​​

​​1,矩阵的表示​​

​​1,数值矩阵的生成​​

​​2,符号矩阵的生成​​

​​3,特殊矩阵生成​​

​​4,一般矩阵运算​​

​​5,基本图形绘制​​

​​6,简单图像处理​​

​​7,建立函数文件/.M文件​​

​​8,常用数值拟合​​

​​9,常用数据插值​​

(文章主体内容来自"《MATLAB数学建模经典案例实战》#余胜威 编著#清华大学出版社",发此文目的是梳理相关知识点,记录学习过程)

第1章 MATLAB基础知识

1,矩阵的表示

矩阵与向量相同,用来描述一个问题的方程组的系数,由方程组的系数和常数构成的方阵。

矩阵包括:数值,符号,特殊矩阵等三种基本样式

1,数值矩阵的生成

MATLAB强大功能之一:直接处理向量或矩阵

实数值矩阵输入

数学建模——基础
数学建模——基础

复数矩阵输入

数学建模——基础

2,符号矩阵的生成

1,用sym定义矩阵(实际是在定义符号表达式,符号矩阵中的元素可以是任意符号或是表达式,且长度无限制,只是将方括号置于用于创建符号表达式的单引号中)

数学建模——基础

2,用命令syms定义矩阵

数学建模——基础

3,数值矩阵转换为符号矩阵

数学建模——基础

一般情况下,矩阵是浮点型变量保存。针对本例,将矩阵转化成符号矩阵后,都将以最接近原值的有理数形式表示,或是函数形式表示

3,特殊矩阵生成

  1. 全零阵生成
  2. 单位阵生成
  3. 全1阵生成
  4. 均匀分布随机矩阵生成
  5. 正态分布随机矩阵生成
  6. 产生随机排列
  7. 产生线性等分向量
  8. 产生对数等分向量
  9. 产生以输入元素为对角线元素的矩阵
  10. 友矩阵的生成
  11. hadamard矩阵生成
  12. Hankel方阵生成
  13. Hibert矩阵生成
  14. 逆Hibert矩阵生成
  15. Magic矩阵生成
  16. pascal矩阵生成
  17. 拓普利兹矩阵生成
  18. Wilkinson特征值测试阵的生成

4,一般矩阵运算

数学建模——基础
数学建模——基础
数学建模——基础
数学建模——基础
数学建模——基础
数学建模——基础

5,基本图形绘制

数学建模——基础
  • t:t从0开始,以π/50为一步,到4π为止,就是t的取值为0,π/50,2*π/50,3*π/50,4*π/50......4π
  • .*:点乘,非矩阵乘法的一种乘法,每个对应元素分别相乘
  • plot(t,y,t,y0,t,-y0):显示三条曲线
数学建模——基础
数学建模——基础
数学建模——基础
  • 在matlab的命令窗口输入:X=linspace(1,100),将产生从1到100步长为1的​​数组​​。类似于在命令窗口中输入:X=[1:100]
  • 在命令窗口中输入:X=linspace(5,100,20),将输出:X =5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
  • 注意多个数值做乘除运算时要用点乘(.*),直接用乘(*)则报错
  • .*需要A、B的行列相等,而*的必要条件则是A的列数==B的行数
  • .^是矩阵中各数值分别平方,^是矩阵自身乘以矩阵自身
  • subplot(m,n,p)或者subplot(m n p):m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。
  • axis([XMIN XMAX YMIN YMAX])二维坐标系下坐标范围
  • V = axis,返回当前坐标范围参数,二维坐标 四个元素
  • plot(x,y,'linewidth',2): 线条粗细
数学建模——基础
  • meshgrid(x,y,z):meshgrid是生成网格的函数,一般是生成二维网格矩阵数据,但这里生成的是三维网格矩阵数据。以二维为例,命令:[X,Y]=meshgrid(x,y),生成的X就是采样点的横坐标,Y是其纵坐标
  • slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩阵XI、YI与ZI定义的曲面画穿过超立体图形V的切片。
数学建模——基础

6,简单图像处理

数学建模——基础
  • 素材放在图中所标记位置
  • 数学建模——基础
  • R=obj(:,:,1)......:把图像中红、绿、蓝三色的数据分别存储到矩阵R、G和B中
  • 数学建模——基础

7,建立函数文件/.M文件

函数文件

定义

  • 可以是MATLAB工具箱中的函数,直接被用户调用
  • 也可以是用户自己书写的,可间接调用
  • 也可添加到工作路径下,供用户调用

作用

  • 可反复调用
  • 节约代码空间
  • 使结构清晰
  • 很重要

常用的函数文件

  • function y = abc(x);
  • abc:用户定义函数
  • x:输入    y:反馈值

函数句柄

  • fhandle = @function name
  • eg.    trig_f = @sin 或 sqr = @(x)x.^2

eg. 函数句柄的创建调用

数学建模——基础

eg.函数文件的创建和调用

  1. 新建 “函数”,并编写函数内容,保存时为函数命名(注意不要与已知函数冲突,函数文件将在路径中显示)
  2. 在命令行窗口可直接调用此函数
数学建模——基础
数学建模——基础
数学建模——基础

8,常用数值拟合

最简单的线性最小二乘法拟合

  • 从实验数据中拟合函数关系y=f(x),标准是使   (f(xi) - yi)^2取极小值
  • MATLAB中可用函数polyfit函数对数据进行拟合。调用格式:P  =  polyfit(x , y , N)    意义:用N次多项式拟合数据点  [ xi , yi]

eg.以一次,二次,三次多项式拟合以下数据 

表1-2 数据

x 0.5 1.0 1.5 2.0 2.5 3.0
y 1.75 2.45 3.81 4.80 7.00 8.60
数学建模——基础
数学建模——基础
数学建模——基础
  • hold on:hold on 和hold off,是相对使用的前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到,后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了(参考自​​@荪荪​​【Matlab中hold on与hold off的用法】)
数学建模——基础
数学建模——基础
  • plot函数:单引号内的是线的类型以及颜色,如上图

9,常用数据插值

插值

  • 求函数近似值的方法。针对某个x,用已知的xi与f(xi)组合生成f(x)。
  • 最简单插值法:多项式插值法
  • MATLAB可利用提供的插值函数,或编程实现数据的插值
  • 一元插值函数interp1的语法格式
y = interp1(x , Y, xi) 由已知点集(x,Y)插值计算xi上函数值y
y = interp1(Y, xi) 相当于x=1:length(Y)的interp1(x, Y, xi)
y = interp1(x, Y, xi, method) 用指定方法计算xi对应的y
y = interp1(x, Y, xi, method, 'extrap') 超出已知点集的插值点用指定方法计算函数值
y = interp1(x, Y, xi, method, extrapval) 用指定方法计算插值,超出已知点集处函数值取extrapval
pp = interp1(x, Y, method, 'pp') 用指定方法进行插值,但结果为分段多项式
  • eg.已知x, y初始矩阵值,利用interp1的不同插值算法求xi[1 : 0.3 : 17]时各点的函数近似值
  • 数学建模——基础
  • 数学建模——基础
数学建模——基础

二维插值

  • 类似于一维插值,但插值方法只有三种:‘nearest’,'linear'(默认),‘cubic’
  • 已知数据点集必须是栅格格式,一般用meshgrid函数产生
  • interp2函数要求(X,Y)必须严格单调
  • interp2函数输入中,若已知点集(X,Y)在平面上不等间距时,函数将通过一定的变换将其转换为等间距的
  • 若输入点集已经是等间距分布的话,可以在method参数前加星号(*),eg.'*cubic'。可提高插值速度

eg.二维插值函数

数学建模——基础

继续阅读