数学建模------MATLAB学习使用

1.多项式的表示和方程求解

多项式就是使用行向量分别表示前面的系数,这个需要按照一定的顺序,而且为0的系数不能够省略,按照从高到低的顺序进行表示;

我们接下来演示一下如何求多项式的根:

我们首先来认识一下求多项式的根的函数roots

接下来我们哪一个最高次为5的多项式举例:

这个方程的解并不在我们的求解范围之内,我们无法使用已学的知识进行求解,这个时候借助MATLAB实现多项式的求解:

通过输出结果可以看到,该多项式在实数的范围内没有解,他的五个解都是虚数解;

2.学会正确调用帮助文档

MATLAB函数众多,用法复杂,这个需要我们进行实时查阅,例如我们想查阅MATLAB里面的关于sin三角函数的用法,一种简便的方法就是在命令行窗口里面输入我们的help sin或者doc sin;这两种做法的区别读者可以自行尝试实践以后进行了解,使用help就会把帮助文档显示在我们刚刚输入的命令行窗口,如下图所示:

如果我们使用doc,软件就会自动弹出新的页面进行显示该函数的帮助文档;

3.优化问题的解决方法

这个题目的意思就是求-5*x1-4*x2-6*x3的最小值(注意,这个里面的x3的范围应该也是大于0的),大括号里面的是一系列的限制条件范围;

下面是我们的代码实现:

这个代码里面zeros函数用来创造全为0的向量,这个地方相当于创造3行1列全为0的向量;

因为这3个分别是x1,x2,x3的下界限,最后的linprog返回这个优化问题的最小值;

4.变量和数据类型

(1)预定义的变量

我们自己定义的变量名尽量不要和这些系统的预定义的变量冲突,否则这些系统的常数就会被我们的定义覆盖掉;

(2)变量的定义

MATLAB里面的变量定义的时候,不需要我们事先声明变量的类型,我们只需要输入变量的数值,系统会自动匹配与之对应的数据类型;

(3)左除和右除运算

(4)余弦定理案例

对于一个我们常见的1:根号3:2的直角三角形,我们是这里用MATLAB求一下里面的某个角的大小,代码如下:

我么这个里面的cos_alpha以及alpha都是自己定义的变量,acos就是我们数学里面的反三角函数,最后我们把这个弧度制转换为角度;

(5)续行符

这个符号组要应用于我们的算术表达式很长,我们无法在同一行里面进行正常的显示,这个时候我们就可以使用续行符,这个符号在使用的时候需要在3个省略号的前面加上一个空格,而且下面的一行必须有值,否则就不满足这个符号的使用条件;下面的是一个特别简单的例子:

5.plotyy绘制双纵坐标图

6.subplot指令对图形窗口进行分割

(1)这个里面的position是一种固定的写法,后面的中括号里面的内容是我们对窗口设置的尺寸,分别代表的参数如下图所示:

(2)axis函数的使用说明:更改坐标轴的范围

这个是帮助文档里面的一个例子,我们借助这个例子就可以理解该函数的作用,就是把x的坐标范围修改到0~pi,y轴的坐标范围修改到-1~1;

7.数据的导入导出

(1)数据的输入input

这个就是在命令行的窗口里面显示了这句话,等待我们的输入,我们输入一个数字以后,按下回车键就可以显示我们输入的数据;

但是这样的做法不推荐使用,因为这个需要我们手动的按下回车键,这样就会在一个程序的运行过程中,影响程序的执行效率;

(2)xlsread读取数据

这个函数适合用来读取数值型的数据;

(3)readtable读取数据

这个函数推荐大家使用;

(4)fprintf和disp函数

fprintf的使用方法类似于C语言里面的printf,都是用来把我们定义的变量的值打印输出,disp的作用就是可以获取我们的变量的值,例如我们写入disp(a),就获取了a的值,屏幕上面就会打印出来100;

8.循环结构

(1)for循环

for表示循环的开始,end表示循环的结束,最后把结果Sn显示在命令行窗口上面;

(2)while循环

基本逻辑是不变的,while和end是一对的,需要注意的是for循环会自动地进行加上1的操作,但是while不会,因此我们的循环语句里面多加入了一句k=k+1,最后同样是打印结果;

9.选择结构

(1)if语句

单分支结构

接下来的单分支选择结构会用到这个,就是使用rand生成随机数,具体的规则包括生成的随机数的指定范围,可参上面的帮助文档;

(1)这个就是单分支的if语句的案例,round是四舍五入取整数,因为生成的随机数也有可能是小数;

(2)num2str同样是一个函数,把数字转换为字符数组;

(3)调用函数,或者是对变量进行索引的时候,必须使用圆括号;

(4)根据上面的铺垫,我们就可以明白第一行所要表达的意思:生成1*20的行向量,生成0~100的随机数,根据帮助文档里面的公式,我们应该写作0+(100-0)*rand(1,20),这个例子里面相当于是把0都省略掉了,希望读者能够理解;

多分支的

和C语言类似,也是进行条件的判断,但是这个里面的elseif不能分割开来,必须是连一起的,这个就是和我们C语言的不同之处;

(2)switch语句

(1)这个要注意都不符合条件使用的是otherwise

(2)这个里面同样使用了rand函数,rand(1)表示只生成一个随机数,3可以理解成2-(-1),这样就是生成的-1~2的随机数

(3)因为是随机数,所以我们多次运行就会发现,每次的运行结果都是不一样的;

10.向量化编程思想

相关推荐
wjs20241 分钟前
DOM CDATA
开发语言
Tingjct3 分钟前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
猷咪29 分钟前
C++基础
开发语言·c++
IT·小灰灰30 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧32 分钟前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q33 分钟前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳033 分钟前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾33 分钟前
php 对接deepseek
android·开发语言·php
2601_9498683637 分钟前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
星火开发设计1 小时前
类型别名 typedef:让复杂类型更简洁
开发语言·c++·学习·算法·函数·知识