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)因为是随机数,所以我们多次运行就会发现,每次的运行结果都是不一样的;