Matlab功能强大,可以进行微分方程的求解、解决线性与非线性方程求解的问题,亦可进行二维与三维立体图形的绘制。与众多程序编译软件相比,Matlab的页面更加简洁,且拥有众多绘图指令,可进行离散图、连续函数的绘制。

一、Matlab基本介绍

Matlab的基本数据单位是矩阵,应用软件中的矩阵生成函数可生成多种矩阵,zeros生成全0矩阵,ones生成全一矩阵,rand生成小于1的均匀分布的随机矩阵,进行函数调用时,可进行列数的规定。Matlab也是一种编程语言,拥有众多常量与变量,MATLAB中有许多预先定义的变量,我们称之为常量,如圆周率pi,虚数单位i、j等,同时也存在可直接使用的预定义变量:元胞数组与结构体。元胞数组的基本单位是元胞,元胞内可以存放任意类型和大小的数组,元胞内各个数组的内容可以不同。结构体是一种能存放不同类型数据的数据类型,它与元胞数组的区别在于结构体是以指针来传递数据,而元胞数组通过值传递的方式。结构体与元胞数组的合理使用,能够让程序简洁易懂,且操作方便。

Matlab数值型数据包括整数与浮点数,系统默认的是双精度浮点数,系统显示数据时,若数据为整数,则数据以整数显示,若数据为实数,则数据保留小数点后四位浮点数,可用format、vpa函数来控制显示精度。需要注意的是,format函数并不改变原数据,只影响其在命令窗口的显示。

Matlab程序文件以.m格式进行存储,m文件包括脚本m文件与函数m文件,脚本文件中进行主程序的编写,可调用函数文件,函数文件的变量独立,不与脚本文件冲突。文件结构分为三部分:文件头、主体与end结尾,end常常与function函数搭配,当任意函数包含嵌套函数或函数是脚本文件的局部函数时,end不可省略。主体则进行主程序以及必要注释的编写,C语言有顺序、选择、循环三大结构,MATLAB的程序控制语句与此类似,如:循环语句有for、while语句,for也多与continue、break语句连用,不同的是,matlab可以使用return语句跳出循环,在脚本文件内部编写函数,程序冗长,运行效率低,使用函数句柄可解决这些问题,创建一个函数句柄后,可直接通过调用语句进行函数调用。

二、Matlab进行图像绘制:

1.离散图形的绘制,离散图形在有限区间内,用点序列进行表示;

2.函数图形的绘制,计算机无法直接绘制连续的曲线,通过划分小区间,以及利用每两个离散点用直线连接,以直线代替折断的曲线来实现连续图形的绘制。

3.网格图与曲面图的绘制,网格图绘制使用mesh指令,曲面图绘制使用surf指令,使用surf生成的是平滑着色的三维曲面图,mesh生成的是网格划分的曲面图。

求解微积分问题时,Matlab提供众多函数解决这一问题,例如求极限使用limit函数,求微分使用diff,求积分使用int等。值得注意的是,写在limit括号后的函数需加单引号。微积分问题众多,计算复杂,求解一阶微分方程时,常使用ode23或ode45函数,函数可实现对数值解精度的控制以及中间结果的显示,0de23解精度默认为1.e-3,ode45解精度默认为1.e-6,计算时,ode45积分分段少,运行速度更快。求微分方程符号解时,使用dsolve函数。

三、线性规划与非线性规划问题的求解

       最优化理论与方法日益得到重视,渗透到生产生活的各个方面,线性与非线性规划问题,常涉及最大值、最小值的求解。

 对于非线性方程,常使用fsolve函数,调用格式:

[x,fval,exitflag]=fsolve(fun,x0,options)

其中fun为待求根方程左端的函数表达式,x0为初始值,options用于设置优化工具箱的优化参数,可以调用optimiset函数来完成,fval返回函数值,x为自变量

线性规划问题,常有约束条件,使用linprog函数求解线性规划最小值问题,调用格式:

[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub,x0,option)

其中,A,b为不等式约束,Aeq、beq为等式约束,二者均使用矩阵表示,lb,ub为自变量x的上下限。

对于没有约束的问题,此处讨论二次型问题,它是最简单的非线性规划问题,使用quadprog函数。定义:如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.其它情况: 求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.二次型问题的数学模型为

屏幕截图 2024-02-23 231738.png

Quadprog调用格式为[x,fval]=quadprog(f,A,b,Aeq,beq,lb,ub,x0,options)

总结:Matlab是一款强大的数据处理软件,能够适应各种系统,并能够通过矩阵运算,实现问题的快速求解。matlab强大,应用广泛,从matlab的基本结构,到matlab程序设计,最后学习matlab在绘图与数学问题上的应用,学习逻辑较为清晰。