读书笔记:MATLAB(01)

今天开始写读书笔记,第一本书是《高等应用数学问题的MATLAB求解》。 MATLAB语言是科学研究者首选的计算机数学语言。大多数学生缺乏对应用数学问题的全面了解,不清楚什么问题能用数学描述,什么样的数学问题能求解,以至于走了很多弯路。通过学习MATLAB语言可以使数学问题求解能力显著提高,即使对某些数学公式理解不够深刻,只要学习了MATLAB语言也能容易地求解类似问题,毕竟科学研究者和工程技术人员通常不考虑为什么这样做,而只考虑结果是什么。借助MATLAB数学基础不深厚的人同样能轻易利用计算机解决高深的应用数学问题。 第1章 计算机数学语言概述 1.1为什么学习计算机数学语言 并不是所有数学问题都能手工推导的,手工推导有时是不易、不可靠、不精确甚至是不可能的,所以需要计算机的帮助。用计算机的方式有两种,其一是数值分析,其二是计算机语言,前者只能解数值计算问题,后者还可以解决像公式推导这样的问题。 许多专门的学科在介绍原理与方法时一般采用简单的例子,回避高阶和复杂的例子,这样得到的方法和结论只是理论上的,用于解决现实的实际问题往往是比较困难的,所以需要借助计算机数学语言。 1.2 数学问题的解析解与数值解 数学家往往关注解析解以及解的存在性的严格证明,而工程技术人员通常只关心最后的数值解。数学上,解析解不存在的情况很普遍,例如圆周率就没有解析解,工程技术人员也不关心圆周率是怎么求得的,只是想知道能满足精度要求的数值,一般的计算取3.1416即可,粗略的计算取3.14也未尝不可。 第2章 MATLAB语言程序设计基础 MATLAB的主要特点: 简介高效 一条语句顶C/C++数百条 科学运算能力强大 MATLAB以矩阵为基本单元 绘图功能 论文中必须给出二维或三维图形 工具箱 为各专业量身定制 动态系统仿真 转用ANSYS等专业软件 2.1 MATLAB程序设计语言基础 2.1.1 MATLAB语言的变量和常量 变量必须由字母打头,且区分大小写。 MATLAB保留的变量: eps——浮点运算误差限,默认2.2201e-16,若某个值小于eps则会被视为0 i,j——循环变量,用于纯虚数量,应恢复i=sqrt(-1) inf——无穷大,-inf为无穷小,若除数为0,MATLAB也不会中止运算,而是给出一个“除0”警告,并将结果赋成inf NaN——not a number不定式,用于0/0,inf/inf运算 lasterr、lastwarn、pi 2.1.2 数据结构 数值型数据:一般为double(),在图形处理等计算中通常使用uint8()uint16()int8()int32()等,u表示无正负号,数字表示位数。 符号型数据:用于推导公式和解析解法,使用前首先需要将采用的变量申明为符号变量 syms list props,例如syms a b,props可以是real,positive等。 变精度算法函数vpa()可以将符号型数值以任意精度显示出来,vpa(pi)将显示圆周率的32位有效数字, vpa(pi,100)将显示圆周率的100位有效数字,pi也可以换成矩阵。 其他数据结构:字符串型数据、多位数组、单元数组、类于对象。 2.1.3 MATLAB的基本语句结构 分两种:直接赋值语句、函数调用语句 直接赋值语句: 末尾带分号则不会显示运算结果,不带则直接显示 如果没有指定变量,则结果赋予保留变量ans 注释以%打头 矩阵输入:A=[1,2,3;4 5,6;7 8 9] 函数调用语句:[返回变量列表]=函数名(输入变量列表) 一个函数名对应一个.m文件或MATLAB内部函数。 []可以用逗号和空格分隔[U,S,V],(X,Y,Z)只能用逗号分隔,为了避免混乱以后所有分隔用逗号完成。 2.1.4 冒号表达式与子矩阵提取 v1=1:0.2:pi 向量v1=1 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 v2=1:pi v2=1 2 3 v3=pi:-1:1 v3=3.1416 2.1416 1.1416 v4=1:-1:pi Empty matrix 提取子矩阵: :表示整行或整列 end表示最后一行或一列 B1=A(1:2:end,[2,3,4]) %奇数行234列 B2=A([1,2,3],[2,3,4]) %123行234列 B1=A(end:-1:1,:) %上下翻转,最后一行排在第一行,列排序不变。

0%