MatLab讲义
matlab培训讲义
MATLAB 解方程讲师:施六五邮箱:shiliuwu@主要内容:●界面设置●编辑和调试●解方程●拟合●积分●优化一、界面的设置⏹Perference设置字体,属性等⏹Set path 添加路径,增加具体的子函数⏹Desktop→Desktop Layout→Default ⏹Command window(tab type)⏹Command history⏹帮助窗口(doc docsearch look for )二、编辑与调试⏹M文件:函数文件和脚本文件⏹文件的命名:不能与matlab内部函数同名⏹多行注释:1.Ctrl+R,Ctrl+T 2.if o end,3.%{ %}⏹自动缩进:Ctrl+I⏹双击变量查看该程序的所有的该变量⏹做标记Ctrl+F2更多右键信息⏹设置断点,F5,F10,F11,Go until Cursor ⏹分块执行%%⏹程序中断:命令窗口输入Ctrl+C⏹cell模式%% 按住Ctrl+Enter解方程●线性方程●非线性方程●隐函数方程●带参数的方程求解●微分方程●积分方程●优化线性方程组Ax=b x=A\b矩阵的分解求解线性方程组矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。
常见的矩阵分解有LU分解、QR 分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。
(具体可以查看帮助文件)非线性方程求解函数:fzero 求解单变量非线性方程的根基本用法:z=fzero('fname',x0,tol,trace)例子:初值的选取Data cursor 获取坐标ar-1-0.8-0.6-0.4-0.200.20.40.60.81texp(-3 t) sin(4 t+2)+4 exp(-0.5 t) cos(2 t)-0.5函数:fsolve 基本用法:X=fsolve(@fun,x0,options)clc;clear;close allf{1}=inline('x-0.6*sin(x)-0.3*cos(y)'); f{2}=inline('y-0.6*cos(x)+0.3*sin(y)'); hold onh=arrayfun(@(i)ezplot(f{i},[-1,1,-1,1]),[1,2]); set(h(1),'color','r')-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.81xyy-0.6 cos(x)+0.3 sin(y) = 0function y=myfun(x)y(1)=x(1)-0.6*sin(x(1))-0.3*cos(x(2)); y(2)=x(2)-0.6*cos(x(1))+0.3*sin(x(2)); end隐函数的求解给定一个隐函数的自变量,通过数值方法求解得到因变量。
MATLAB讲义(1) matlab教程
MA TLAB讲义一.MA TLAB简介。
1.简要说明MA TLAB的发展历史:1)Matrix Laboratory,最初为矩阵运算的接口程序。
集数值计算,图形处理,图象处理,符号计算,文字处理,数学建模,实时控制,动态仿真,信号处理的功能。
2)最新版本6.52.MA TLAB的构成1)以矩阵为基本的计算单位,拥有各种控制语句,大量的函数。
2)工作环境(打开MA TLAB)Command window3)MA TLAB工具箱。
控制系统,模糊系统,通信等等。
3.安装。
二.MA TLAB入门。
1.视窗环境。
1)Command window. File/ new;preference(更改字体);serpath(搜索路径;字符x 搜索顺序:1变量2内置函数3当前目录m文件4搜索路径中m文件eg.sin);View/Command window;Launch pad2)程序调试/编辑器:单击new2.常用命令。
1)获得帮助:help;lookfor;view/help/demos/control system toolbox2)变量及空间管理:1 变量的空间形式。
即用即删。
who,whos,clear,clc,length,dispeg. A=[0:0.1:1] length(A)2 数值输出format short(缺省显示)/rational(分数近似)/long/long e/short esym(); vpa()3)MA TLAB运算符0.算术运算符:加法减法:>>a=[1 2 3;4 5 6];b=[4 5 6;1 2 3];c=1;>>a+b,a+c,a-b乘法:a的列数=b的行数>>b=magic(3)>>a*b除法:左除/ >>1/2 右除\ >>1\21.关系运算>,>=,<,<=,==,~= 同型矩阵为对应元素比较,返回1为真,0为假eg. >>a=magic(3);b=ones(3)2.逻辑运算符&,|,~,xor(a,b),3.特殊运算符:冒号(1)m:n >>a=1:8(2)m:p:n >>a=1:2:8(3)通配符>>b=magic(4) >>b(:,2),b(2,:),b(:,1:3)>>b=[1:3;5:9](不要太为难计算机)3.数组与矩阵1)矩阵的创建:(1)直接输入>>[1,2;3,4] 或>>[1,23,4](2)使用冒号>>a=[-pi:pi;1:7]由矩阵生成矩阵>>b=a(:,2:4) (生成一般用[],调用一般用())(3)特殊矩阵>>zeros(4) >>ones(4) >>magic(3)>>eye(2,3)(对角为1)2) 数组的创建:(1)直接输入:(2)>>a=linspace(初值,终值,元素个数) 与用冒号区别(3)>>b=logspace(初始指数,终结指数,元素个数)eg. >>b=logspace(0,2,3) (分析两者的内在关系)3) 数组运算:(1) 加,减,标量乘>>a=[0:10] >>a*5(2) 向量的点乘,点除,乘方:向量的对应分量相乘除乘方,点除分左除和右除。
MATLAB入门讲义
MATLAB讲稿目录1 MATLAB简介 (2)1.1 MATLAB的特点 (2)1.2 窗口 (2)1.3 联机查询与演示 (3)2 数值计算 (4)2.1 数字及其运算 (4)2.2 常用数学符号及函数: (4)2.3 向量、数组及其运算 (5)2.4 矩阵及其运算 (7)2.5 多项式及其运算 (9)3 符号运算 (10)3.1 定义符号表达式 (10)3.2 符号表达式运算 (10)3.3 符号表达式的因式分解、展开与化简 (11)3.4 符号微积分 (11)3.5 符号方程求解 (12)3.6 调用函数计算器:funtool (13)3.7 级数 (13)3.8 Maple接口 (13)4 绘图 (13)一、绘图命令 (13)二、绘图参数(点标、线型、颜色) (14)三、图形标注处理 (14)四、图形控制 (14)5 程序设计 (16)一、M文件 (16)二、控制语句 (16)三、一些数学问题............................................ 错误!未定义书签。
6 在最优化问题中的应用..................................... 错误!未定义书签。
一、线性优化lp ............................................... 错误!未定义书签。
二、二次优化qp............................................... 错误!未定义书签。
三、非线性无约束优化问题............................ 错误!未定义书签。
四、最小二乘优化问题.................................... 错误!未定义书签。
五、强约束问题................................................ 错误!未定义书签。
MATLAB讲义
第二章数值数组及其运算数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。
自MATLAB5.x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB最重要的一种内建数据类型(Built-in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。
本章系统阐述:一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN、“空”数组概念和应用;关系和逻辑操作。
顺便指出:(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。
(2)MATLAB5.x和6.x 版在本章内容上的差异极微。
(3)MATLAB6.5版新增的两种逻辑操作,在第2.13.2节给予介绍。
数组是指由一组实数或复数排成的长方阵列(Array)。
它可以是一维的“行”或列,可以是二维的“矩阵”,也可以是三维的“若干同维矩形的堆叠,甚至更高维数”。
数组运算:是指无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素(Element)平等地实行同样的操作。
2.1一维数组的创建和寻访2.1.1一维数组的创建(1)无特殊规律数组,直接创建(逐个元素输入):X=[3.4 exp(5.2) -4*pi] x=[3.4 exp(5.2) -4*pi]x =3.4000 181.2722 -12.5664(2)等步长数组:①冒号生成法:通用格式:x=a:inc:b% inc是采样点之间的间隔,即步长。
若(b-a)是inc的整数倍,则所生成数组的最后一个元素等于b,否则小于b。
inc可以省略,省略时默认inc=1。
如:x=0:2*pi/50:2*pi,②定数线性采样法:通用格式T=linspace(a,b,n),其作用与指令:x=a:(b-a)/(n-1):b相同。
MATLAB课件第一讲
这时得到了6个文件mfile1.mat~mfile6.mat, 分别保存x1~x6。这可通过load命令检验 :
clear, load mfile1 load mfile3 for i=1:6 load([‘mfile’ int2str(i)]) %读取所有6个的以mfile开头的.mat文件 end
tempdir
返回系统临时工作目录名
tempname 产生临时文件的唯一文件名
3.5: 启动和退出MATLAB
matlabrc startup quit
启动MATLAB的M文件 启动MATLAB的M文件 终止(退出)MATLAB
第一章: 练习
结合下列指令练习:
ver,help,disp,length,size,dir,cd,等
Practice !
第一章: MATLAB系统概述
3. 通用命令
1. 管理命令和函数 2. 管理变量和工作空间 3. 控制命令窗口 4. 使用文件和工作环境 5. 启动和退出MATLAB
第一章: MATLAB系统概述
3.1: 管理命令和函数
help
MATLAB函数和M文件的在线帮助
ver(version) 显示MathWorks产品的版本信息(MATLAB版本号)
1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版 先如今已发展到MATLAB7.1,2008,2009版本
MATLAB基本组成
8个主要部分
➢工作空间中的变量
MM编AA程TT与LLAA数BB据数开类学发型函环数境库提绘供制一二组维读曲ggsprr写aae面ppc文ghh、r23a件➢➢➢➢dd三提提M p输开估处h的维供供A二三入算于发专T命曲许运维维L/、Mg业输A线令多算e图 图n文管图B出e数 所形 形编r件理形数a据 需程l的、的据类 的技执调目型 操术行试录作效M符率文件
matlab讲义知识大总结,很详细的哦
matlab讲义知识大总结,很详细的哦实验一 MATLAB 环境及命令窗口的使用一、实验目的:1.掌握MA TLAB语言的特点2.熟悉MA TLAB的工作环境3.掌握MA TLAB的基本操作字符串采用赭红色;“if”、“for”等关键词采用蓝色。
键名作用键名作用↑向前调回已输入过的命令行Home 使光标移到当前行的开头↓向后调回已输入过的命令行End 使光标移到当前行的末尾←在当前行中左移光标Delete 删去光标右边的字符→在当前行中右移光标Backspace 删去光标左边的字符PageUp 向前翻阅当前窗口中的内容Esc 清除当前行的全部内容Page Down 向后翻阅当前窗口中的内容CTRL+C 中断MATLAB 命令的运行空格用于输入变量之间的分隔符以及数组行元素之间的分隔符。
●显示格式设置:选择菜单“File”→“ Preferences”,则会出现参数设置对话框,如图所示;clc:用于清空命令窗口中的显示内容。
more:在命令窗口中控制其后每页的显示内容行数。
1.单行或多行命令的运行 (Evaluate Selection) 修改搜索路径实验二 MATLAB 数值计算一、实验目的:(1)熟练掌握MATLAB 变量的使用。
(2)熟练掌握矩阵的创建。
(3)熟练掌握MATLAB的矩阵和数组的运算。
用from:step:to方式。
>> x1=2:10x6=[1,4,7;2,5,8] %两行向量构成矩阵x6 =1 4 72 5 8 3)用linspace 函数。
x1=linspace(0, pi,4) %从0到 pi 等分成4个点(4)使用特殊矩阵函数。
>> x = eye(2,3);BA A BA A +=-61> B= inv(inv(A)-eye(3))*6*A *inv(A) [v,d]=eig(x)其特征值和特征向量 w 为【0.01,10】范围按对数均Lw=-20*)1)2(lg(202+-=w L w log10(sqrt((2*w).^2+1)logspace 简介用法:logspace (a,b,n),其中a 、b 、n 分别表示开始值、结束值、元素个数。
Matlab讲义
第一章MATLAB软件的基本操作1.1矩阵的建立和基本运算一、实验的目的熟悉MATLAB软件中关于矩阵的建立以及矩阵运算的各种命令二、实验内容与要求1.启动与退出2.数、数组、矩阵的输入(1)数的输入>> a=5a =5>> b=2-5ib =2.0000 - 5.0000i>> b=[1,3,5,7,9,11]b =1 3 5 7 9 11>> c=1:2:11c =1 3 5 7 9 11>> d=linspace(1,11,6)d =1 3 5 7 9 11>> b=linspace(0,2*pi,22)b =Columns 1 through 60 0.2992 0.5984 0.8976 1.1968 1.4960 Columns 7 through 121.79522.0944 2.3936 2.6928 2.99203.2912 Columns 13 through 183.5904 3.88964.1888 4.4880 4.78725.0864 Columns 19 through 225.3856 5.6848 5.98406.2832(2)数组的输入>> A=[2,3,4;1,3,5;6,9,4]A =2 3 41 3 56 9 43.矩阵大小的测定和定位>> A=[3,5,6;2,5,8;3,5,9;3,7,9]A =3 5 62 5 83 7 9>> d=numel(A) %测定矩阵A的元素数d =12>> [n,m]=size(A) %测试A的行(n),列(m)数n =4m =3>> [i,j]=find(A>3) %找出A中大于3的元素的行列数i =12341234j =222233334.矩阵的块操作>> A(2,:) %取出A的第2行的所有元素ans =2 5 8>> A([1,3],:) %取出A的第1、3行的所有元素ans =3 5 63 5 9>> A(2:3,1:2) %取出A的2、3行与1、2列交叉的元素ans =2 53 5>> A([1,3],:)=A([3,1],:) %将A的第1行和第3行互换A =3 5 93 5 63 7 9问题:如何将A的2,3列互换?>> A(2,:)=4 %将A的第2行的所有元素用4取代A =3 5 94 4 43 5 63 7 9>> A(find(A==3))=-3 %将A中等于3的所有元素换为-3A =-3 5 94 4 4-3 5 6-3 7 9>> A(2,:)=[] %删除A的第2行A =-3 5 9-3 5 6-3 7 9>> A=[3,5,6;2,5,8;3,5,9;3,7,9]A =3 5 62 5 83 5 93 7 9>> reshape(A,2,6) %返回以A的元素重新构造的2×6维矩阵ans =3 3 5 5 6 92 3 5 7 8 9>> reshape(A,3,4)ans =3 3 5 82 5 7 93 5 6 9>> A(4,5)=3 %扩充A的维数,A成为4×5维矩阵,未定义元素为3A =3 5 6 0 02 5 8 0 03 5 9 0 03 7 9 0 3注意:“:”表示全部5.矩阵的翻转操作>> A=[3,5,6;2,5,8;3,5,9;3,7,9]A =3 5 62 5 83 5 93 7 9>> flipud(A) % A进行上下翻转ans =3 7 93 5 92 5 83 5 6>> fliplr(A) % A进行左右翻转ans =6 5 38 5 29 5 39 7 3>> rot90(A) % A逆时针旋转900ans =6 8 9 95 5 5 73 2 3 3问题:尝试操作>> rot90(A,2)和rot90(A,-2),结果有区别吗? >> rot90(A,2)ans =9 7 39 5 38 5 26 5 3>> rot90(A,-2)ans =9 7 39 5 38 5 26 5 36.特殊矩阵的产生>> A=eye(n) %产生n维单位矩阵A =1 0 0 00 1 0 00 0 1 00 0 0 1>> A=ones(n,m) %产生n×n维1矩阵A =1 1 1 11 1 1 11 1 1 11 1 1 1>> A=zeros(n,m) %产生n×n维0矩阵A =0 0 00 0 00 0 00 0 0>> A=rand(n,m) %产生n×n维随机矩阵(元素在0~1之间)A =0.9501 0.8913 0.82140.2311 0.7621 0.44470.6068 0.4565 0.61540.4860 0.0185 0.7919>> A=rand(n,m)A =0.9218 0.9355 0.05790.7382 0.9169 0.35290.1763 0.4103 0.81320.4057 0.8936 0.00997.数的运算>>4+2;>>4*2;>> 4/2; % 4右除2,等于2>> 4\2; % 4左除2,等于0.5>> 4^3; % 4的3次方>> sqrt(4); % 4的算术平方根>> exp(3); %e的三次方>> log(4); %4的自然对数>> log2(4); %4的以2为底的对数>> log10(4); %4的以10为底的对数8.矩阵的运算A=[2,3,4;1,3,5;6,9,4];B=[3,5,1;2,6,2;1,8,3];>> A'; %A的转置>> det(A); %A的行列式,A必须是方阵>> rank(A); %A的秩>> 3*A; %常数与矩阵相乘>> A+B;>> A-B;>> A*B; %(和A. *B进行比较)>> A/B; %(和A. /B 进行比较) >> A\B; %(和A. \B 进行比较)>>A^2; % A^2相当于A*A (和A.^2进行比较) 二、练习与思考(1)熟悉MATLAB 的启动和退出。
MATLAB讲义
MATLAB讲义第一章 MATLAB系统概述1.1 MATLAB系统概述MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用C语言编写。
特点:(1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。
(2)语句书写简单。
(3)语句功能强大。
(4)有丰富的图形功能。
如plot,plot3语句等。
(5)提供了许多面向应用问题求解的工具箱函数。
目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。
(6)易扩充。
1.2 MATLAB系统组成(1)MATLAB语言MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。
同时MATLAB又具有面向对象编程特色。
MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。
(2)开发环境MATLAB开发环境有一系列的工具和功能体,其中大部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。
(3)图形处理图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。
还包括低级的图形命令,供用户自由制作、控制图形特性之用。
(4)数学函数库有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。
MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。
(5)MATLAB应用程序接口(API)MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。
1.3 MATLAB的应用范围包括:MATLAB的典型应用包括:●数学计算●算法开发●建模、仿真和演算●数据分析和可视化●科学与工程绘图●应用开发(包括建立图形用户界面)以矩阵为基本对象第二章 Matlab基础2.1 MATLAB快速入门(1)搜索路径搜索路径也被看作是MATLAB的路径,其包含的文件被认为在路径上。
MATLAB软件基础知识讲义
MATLAB软件基础知识讲义§1MATLAB 概述MATLAB 是MATrix LABoratory〔〝矩阵实验室〞〕的缩写,是由美国MathWorks 公司开发的集数值运算、符号运算和图形可视化三大差不多功能于一体的,功能强大、操作简单的语言。
是国际公认的优秀数学应用软件之一。
20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,现在的MATLAB语言已同时具备了数值运算功能和简单的图形处理功能。
1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MA TLAB 语言推向市场,并开始了对MATLAB工具箱等的开发设计。
1993年,Mathworks公司推出了基于个人运算机的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本〔Release 11〕,并在2000年又推出了最新的MATLAB 6版本〔Release 12〕。
现在,MATLAB差不多进展成为适合多学科的大型软件,在世界各高校,MATLAB差不多成为线性代数、数值分析、数理统计、优化方法、自动操纵、数字信号处理、动态系统仿真等高级课程的差不多教学工具。
专门是最近几年,MATLAB在我国大学生数学建模竞赛中的应用,为参赛者在有限的时刻内准确、有效的解决问题提供了有力的保证。
概括地讲,整个MATLAB系统由两部分组成,即MATLAB 内核及辅助工具箱,两者的调用构成了MATLAB的强大功能。
MATLAB语言以数组为差不多数据单位,包括操纵流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下要紧特点:1〕运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB 除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。
利用其运算符号和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN的程序功能。
matlab讲义
2.3终值及其应用2.3.1终值的概念终值是与现值相对的概念,是指当前的一项现金流在未来某个时刻的价值。
在求终值问题时应该考虑单利和复利的问题,一般如果没有特别的说明则都是按照复利(离散复利)进行计算。
在复利计息的情况下,当前的现金流PV在利率为r时到第t期期末的终值为:tFV)=1(+rPV2.3.2终值的计算在Matlab中,用来计算现金流的终值的函数有fvfix和fvvar两个。
同样,-fix函数用来计算规则现金流的终值;而-var函数则用来计算不规则现金流的终值。
【例2.9】一投资者的储蓄账户初始余额为$1500,在随后的10年中,每月末都会收到$200并存入该账户,银行的年利率为9%。
试计算其到期时的价值。
通过执行fvfix函数命令:FutureVal = fvfix(Rate, NumPeriods, Payment, PresentVal, Due)即可计算出该固定收入现金流的的终值。
变量解释:Rate:周期性收支的利息率,以小数的形式输入;NumPeriods:周期性收支的次数;Payment:每期收支的现金流数额;PresentVal:初始余额Due:收支被预定或确定的时间:0表示在期末收支(默认值),1表示在期初收支(任选)。
输入命令:>>FutureVal = fvfix(0.09/12, 12*10, 200, 1500, 0)输出结果:FutureVal =42379.89即该现金流到期时的价值为42379.89$。
【例2.10】设某投资者期初投资为$10,000,在随后的5年投资期中每年产生的收入流依次为$2000、$1500、$3000、$3800、$5000,年利率为8%。
试计算该现金流到期时的价值。
通过执行fvvar函数命令:FutureVal = fvvar(CashFlow, Rate, IrrCFDates)即可求出这个规则(周期性的)现金流的终值。
Matlab基本教学讲义
Matlab基本教學講義環境的基本使用方法Matlab Command Window的指令選單上有幾個選項File Edit View Window HelpFile選單上第一個指令New分有三個選項M-file →開啟一個新的檔案用來編輯matlab程式。
副檔名*.m,如同C語言程式的副檔名*.cpp或是*.c一樣。
Figure →開始一個新的圖檔。
Model →開啟一個新的simulink檔案。
Help選單上有選項可以幫助指令的查詢一些基本指令的操作運算元數學運算元加+減-乘.*除./轉置‘次方.^比較運算元小於<大於>小於等於<=大於等於>=等於==不等於~=邏輯運算元and &or |not ~矩陣矩陣的表示方法若輸入指令為A=[1 2 3;4 5 6;7 8 9]則視窗顯示出A= 1 2 34 5 67 8 9則A(1,1)=1,A(1,2)=2,A(1,3)=3A(2,1)=4,A(2,2)=5,A(2,3)=6A(3,1)=7,A(3,2)=8,A(3,3)=9特殊符號 冒號”:”繼續之前的陣列A,若輸入A( : )則會出現長數列1~9。
若輸入A( : , 3)則出現ans =369若輸入A(1:1:3,1:2)則出現ans =1 24 578其中A(X:Y:Z,P:Q) 之中若表示法為X:Y:Z 時:X 表示起始值Y 表示公差Z 表示終止值若表示法為P:Q 時P 為起始值Q 為終止值公差= 1for、if等條件式的使用forfor I = 1:n (或是1:n可改成1:x:n,其中x則為公差)運算式endifif 條件式1運算式1elseif 條件式2運算式2elseif 條件式3運算式3…………………else運算式nend副程式的設計(*.m)function 傳回值=函式名稱(引數1,引數2,…..)運算式………………例如%I am bababa.....hahahaha……………….%Matlab is easy la.....function result=summation(a,b)%.....%.....result=sum(a:b);%Oh~bye bye.....%後面的文字為註解,程式不會執行。
matlab教学讲义
第二章 MATLAB 运算基础(1)主要内容:①变量的定义及赋值;②数值数组、字符串数组、元胞数组和构架数组等数据类型;③矩阵运算的定义和规则;④数组运算的定义和规则。
2.1 概述2.1.1 数据术语1)矩阵:由m×n个数组成的排成m行n列的一个矩形的数表,其中0×0矩阵为空矩阵([])。
数表中第i(1≤i≤m)行第j(1≤j≤n)列的数据称为矩阵元素2)标量:1×1的矩阵,即为只含一个数的矩阵。
3)向量:1×n或n×1的矩阵,即只有一行的或者一列的矩阵。
只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。
数表中第i(1≤i≤n)个数据称为向量元素。
4)数组:矩阵的延伸,一般指多维数组,其中标量、向量和矩阵都是数组的特例。
2.1.2 数据类型数据类型包括数值型、字符串型、元胞型、构架型等。
数值型有单精度型、双精度型和整数型。
整数型有uint8,uint16,uint32和uint64等无符号型和int8,int16,int32和int64等符号型整数。
数值型数据可以用带小数点的形式和科学计数法表示,数值的表示范围是10-309~10+309。
-20、1.25、2.88e-56(表示2.88×10-56)、7.68e204(表示7.68×10204) 都是合法的数据表示。
一般在计算时采用双精度型,在输出时有多种数值显示格式可供选择。
数值显示格式的设置通过format 命令,格式如下:format short 默认设置,以5位数字形式输出format long 以15位十进制数形式输出format short e 以5位十进制数加指数形式输出format long e 以16位十进制数加指数形式输出format short g 从format short和format short eformat long g 从format long和format long e中自动选择最佳输出形式format hex 以16位十六进制数形式输出format + 以正号、负号和零形式输出format bank 以两位小数形式输出format rat 以近似分数形式输出format loose 以稀疏格式(变量与执行结果之间有空行)输出format compact 以紧凑格式(变量与执行结果之间无空行)输出2.2 变量2.2.1变量的命名变量的命名规则为:1 变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号。
matlab讲义
第一章 Matlab 基本介绍一、数学建模常用软件简介数值计算 Matlab符号计算 Maple , Mathematica统计软件 SPSS, SAS优化软件 LINGOOFFICE 软件 Word , Excel二、matlab 界面介绍1、command window (命令窗口)2、wordspace (工作空间)3、command history (历史命令窗口)4、菜单(1)File->import data(2)View->desklayout->default(3)Help三、一些常用命令1、clc (清空命令窗口)2、clear (清空工作空间变量)3、save (保存工作空间中变量到指定文件)4、load (导入文件中数据)(注:双击数据文件也可)5、help (帮助)6、doc (查询帮助文档)第二章 数值计算一、数据类型1、主要四大类数据类型:数值型,字符串,符号型(代数式),逻辑型1⎧⎪⎧⎨⎨⎪⎩⎩、浮点数值型长整2、整型短整 字符串 name=’lisan ’a=’x ’符号型 用syms , sym 定义逻辑型 取值只能为0或1,即真或假2 常用运算符数值运算:+ , - ,* , / , \, ^,.*, ./, .^关系运算 (运算结果为逻辑型,即0或1)>,<,>=,<=,==,~=逻辑运算(运算结果为逻辑型,即0或1)与或非,&,|,~any, all基本数学函数三角sin ,asin,cos,acos,tan,atan,cot,acot指数exp,log,log2,log10,sqrt其他abs,real,imag,sign,mod,floor,ceil特殊字符, ; . : [] () @ %2、变量命名规则(1)以字母开头,可包含字母、数字、下划线,不超过31位字符。
(2)区分大小写。
3、常量i, j 虚数单位pi , 圆周率eps,infNaN4、数字的输入输出格式format 格式参数shortlongrat5、字符串(1)字符串生成name=’lisan’a=char(‘l’,’i’)size(name) 查看字符串长度length(name) 查看字符串长度(2)字符与数组之间的转换double 字符转换为ASC码num2str 数字转化为字符str2num 字符转位数字a=’2’b=a*2b=double(a)*2b=str2num(a)*2(3)字符串操作相关函数。
MATLAB基础知识讲义
h
2
MATLAB语言的主要特点
MATLAB基础
(1)具有丰富的数学功能
包括矩阵各种运算。如:正交变换、三角分解、特征值、常见的特殊矩 阵等。
包括各种特殊函数。如:贝塞尔函数、勒让德函数、伽码函数、贝塔函 数、椭圆函数等。
包括各种数学运算功能. 如: 数值微分, 数值积分, 插值, 求极值,方程求根, 常微分方程的数值解, 符号运算, 极限问题、积分问题等。
h
5
MATLAB基础
h
6
MATLAB基础
一、变量、数值与函数
1、变量
MATLAB中变量的命名规则 (1) 变量名必须是不含空格的单个词; (2) 变量名区分大小写; (3) 变量名最多不超过63个字符; (4) 变量名必须以字母打头,之后可以是任意字母、数字 或下划线,变量名中不允许使用标点符号。
h
7
特殊变量表
MATLAB基础
特殊变量 取 值
ans
用于结果的缺省变量名
pi eps flops
圆周率 计算机的最小数,当和 1 相加就产生一个比 1 大的数 浮点运算数
inf NaN i,j
无穷大,如 1/0 不定量,如 0/0 i=j= 1
nargin
所用函数的输入变量数目
nargout 所用函数的输出变量数目
cumsum
求元素累积和
length size
MATLAB基础
MATLAB基础
h
1
MATLAB基础
MATLAB的发展史
MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。 那是20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moler出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK 和 EISPACK 矩 阵 软 件 工 具 包 库 程 序 的 的 “ 通 俗 易 用 ” 的 接 口 , 此 即 用 FORTRAN编写的萌芽状态的MATLAB。
MATLAB讲义
MATLAB王春兴编物理与电子科学学院2009.9第一章MATLAB简介MA TLAB的原意为MATrix LABoratory,即矩阵实验室,是由在数值线性代数领域颇有影响的Cleve Moler博士首创的。
后来由Moler博士等一批数学家和软件专家组建了MathWorks软件公司,专门从事MATLAB的扩展与改进。
MA TLAB不仅具有强大的数值计算能力,而且具有数据图示功能和符号运算功能。
特别是大量的工具箱,扩展了应用领域,是高校学生、教师、科研人员和工程计算人员的最好选择,是数学建模必不可少的工具。
1.1MATLAB的主要特点1.功能强大MATLAB以复数矩阵作为基本编程单元,可以方便地处理诸如矩阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常微分方程求解、偏微分方程求解、插值与拟合、特征值问题、统计及优化问题。
2.语言简单MATLAB语句书写简单,表达式的书写如同在稿纸中演算一样,允许用户以数学形式的语言编写程序,控制语句同C语言相近,并提供了强大的帮助功能。
3.扩充能力强MATLAB本身就像一个解释系统,用户可以方便地看到函数的源程序,也可以方便地开发自己的程序。
另外,MATLAB可以方便地和FORTRAN、C等语言进行接口,还和Maple有很好的接口。
4.编程易从形式上看,MATLAB程序文件是一个纯文本文件,扩展名为M,调试方便。
1.2MATLAB的窗口1.启动MATLAB2.工具栏3.命令窗口MATLAB的输入命令和输出结果的窗口,在这里输入的命令会立即执行并输出结果。
可用UP键盘将以前执行的命令调出。
1.3MATLAB的通用命令1.管理命令和函数:2.管理变量和工作空间3.控制命令窗口4.使用文件和工作环境5.启动和退出MA TLAB第二章数值计算2.1数字及运算1.数值MA TLAB中采用十进制数,并可用科学表示法,虚数用i或j 表示。
5 -39 0.0025 1.52e-20 6.9e13 3.0i -3+4i浮点数的范围大致为10-308~10308。
Matlab讲义第二章 matlab语言基础
七、使用帮助
1、help命令,在命令窗口中显示 • MATLBA的所有函数都是以逻辑群组方式进行组 织的,而MATLAB的目录结构就是以这些群组方 式来编排的。 • help matfun :矩阵函数-数值线性代数 • help general:通用命令 • help graphics:通用图形函数 • help elfun:基本的数学函数 • help elmat:基本矩阵和矩阵操作 • help datafun:数据分析和傅立叶变换函数 • help ops:操作符和特殊字符
• 如果结果为整数,则显示没有小数;如果结果不是 整数,则输出形式有: format (short):短格式(5位定点数)99.1253 format long:长格式(15位定点数 99.12345678900000 format short e:短格式e方式 9.9123e+001 format long e:长格式e方式 9.912345678900000e+001 format bank:2位十进制 99.12 format hex:十六进制格式
》a=[1 2 3; 4 5 6; 2 3 5]; 》b=inv(a)
4、了解矩阵超越函数 •在MATLAB中exp、sqrt等命 令也可以作用到矩阵上,但 这种运算是定义在矩阵的单 个元素上的,即分别对矩阵 的每一个元素进行计算。 •超越数学函数可以在函数后 加上m而成为矩阵的超越函 数,例如:expm,sqrtm。矩 阵的超越函数要求运算矩阵 为方阵。
2、命令行编辑器 (1)方向键和控制键可以编辑修改已输入的命令 :回调上一行命令 :回调下一行命令 (2)命令窗口的分页输出 • more off:不允许分页 more on:允许分页 • more(n):指定每页输出的行数 • 回车前进一行,空格键显示下一页,q结束当前显 示。 (3)多行命令(…) • 如果命令语句超过一行或者太长希望分行输入,则 可以使用多行命令继续输入。 • S=1-12+13+4+… 9-4-18;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011年数学中国国赛培训讲座 Matlab的基础及数学建模中的应用周吕文:zhou.lv.wen@大连大学数学建模工作室&中国科学院力学研究所2011年7月第一部分 MatLab基础1 简单介绍MATLAB是Matrix Laboratory“矩阵实验室”的缩写。
MatLab语言是由美国的Clever Moler博士于1980年开发的,初衷是为解决“线性代数”课程的矩阵运算问题。
1984年由美国 MathWorks公司推向市场,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。
MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
在数学建模竞赛中,由于只有短短的三到四天,而论文的评判不仅注重计算的结果更注重模型的创造性等很多方面,因此比赛中把大量的时间花费在编写和调试程序上只会喧宾夺主,是很不值得的。
使用MATLAB 可以很大程度上的方便计算、节省时间,使我们将精力更多的放在模型的完善上,所以是较为理想的。
这里快速的介绍一下MATLAB与数学建模相关的基础知识,并列举一些简单的例子,很多例子都是源于国内外的数学建模赛题。
希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题。
当然要想学好MatLab更多的依赖自主学习,一个很好的学习MatLab的方法是查看MatLab的帮助文档:z如果你知道一个函数名,想了解它的用法,你可以用'help'命令得到它的帮助文档:>>help functionnamez如果你了解含某个关键词的函数,你可以用'lookfor'命令得到相关的函数:2 基本命令与函数基本运算z变量的赋值实数赋值>> x=5;复数赋值>> x=5+10j; (或>>x=5+10i)z向量的一般值方法行向量赋值:>>x=[1 2 3]; (或x=[1, 2 ,3])列向量赋值:>>y=[1;2;3];矩阵的赋值:>>x=[1 2 3; 4 5 6; 7 8 9];z常用矩阵(zeros ones eye)n行m列0矩阵:>>x=zeros(n,m);n行m列1矩阵:>>x=ones(n,m);n 阶的单位阵:>>y=eye(n);z矩阵行列操作>> A=[1 2 3;4 5 6;7 8 9]A=1 2 34 5 67 8 9>>x=A(1,3) %取第一行的第三列元素x=3>>y=A(2, :) %取第二行元素y=4 5 6>>z=A(1:2,1:3)%取一到二行,一到三列的元素Z=1 2 34 5 6z矩阵运算(+ - * / \ ^ / ‘)z数组运算(点运算)>>A=[1 2; 3 4]A=1 23 4>>B=A*AB=7 1015 22>>C=A.*AC=1 49 16常用数学函数sin sum limit asin sort intsolve exp roundlog fix dsolve log10 ceil diff sqrt floor det abs randsign flipud/fliplr固定变量pii,jinf –infNaNans自定义函数z M文件文件名一律以字母打头z函数名不能与系统函数重名function [output 1, …] = functionname(input1, …)% comment of this functionMatLab command 1;MatLab command 2;… …[例2.1]做一个将角度转为孤度的函数function% DEG2RAD convert degrees to radians%% USAGE: Radians = deg2rad(Degrees)% Degrees =[degrees, minutes, seconds]%% zhou lvwen. 2011/7/25Radians = pi * Degrees * [1/180; 1/180/60; 1/180/60/60];[例2.2]灰色G(1,1)模型function [q,e,E] = GM(Q,t)% E = contrary error% e = absolute errorQ1 = cumsum(Q); % 一阶累加B1 = Q1';B1(1)=[];B2=Q1';B2(end)=[];B=[-0.5*(B1+B2) ones(length(B1),1)]; % 构造矩阵BXn=Q';Xn(1)=[]; % 构造矩阵Xnc=(B'*B)^-1*B'*Xn;a=c(1);u=c(2) % 计算a和uq1=(Q(1)-u/a)*exp(-a.*t)+u/a; % 计算出qlq2=diff(q1);q=[q1(1) q2]; % 还原成qe=Q-q(1:length(Q)); % 算绝对误差E=e./Q; % 算相对误差2 流程控制语句z for endz if else end / if elseif else end[例2.3]计算10以内的奇数和% Sum of the odd numbers between 1 and 10Sum = 0;for i = 1:10if mod(i,2)Sum =Sum + i;endendSum3 二/三维作图简单作图z Plotz Xlabel ylabel xtick ytick xticklabel yticklabel z text legendz axis ylim ylimz grid on/off grid minorz subplotz linewidth makersize作图函数fplot polar barpie contour quiver image plot3meshgridmesh surf contour3meshc surfc[例3.2]用plot3作三维螺旋线x = -pi:0.05:pi;y1 = sin(x);y2 = cos(x);plot(x,y1,'-bs',x,y2,'-m^');title('Helix');xlabel('x');ylabel('y');text(0,0,'zero');legend('sin','cos')grid on第二部分例题精讲1人口问题表1是1790年至1900年美国人口数(单位:百万),请用指数增长模型拟合美国人口变化。
表1. 1790 年至1900年美国人口数(单位:百万)1790 3.9 1840 17.1 1890 62.91800 5.3 1850 23.2 1900 76.01810 7.2 1860 31.41820 9.6 1870 38.61830 12.9 1880 50.2参考程序:prediction_of_population.m% translate the qustion into polynomial fit,then we can use the% polyfit fuction% P = x0 * exp(r*t) => lnP = lnx0 + r * t% \|/ \|/ \|/ \|/% Y = a2 + a1* xt=1790:10:1900;population=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0];Y=log(population);X=t;a=polyfit(X,Y,1);x0=exp(a(2))r=a(1)ti=1790:1950;poi=x0*exp(r*ti);plot(t,population,'k.', ti,poi,'b', 'markersize', 18,'linewidth',2);legend('Actual data', 'Fit result')xlabel('Year');ylabel('Population')2图像处理在Matlab 中,图可以表示成矩阵,矩阵也可能表示成图。
对图像的处理就可转化为对矩阵的处理(见附件1)。
设计算法求出任一矩阵的边界矩阵(算法应具有一般性)。
边界矩阵是要找出图形的边界。
下面为边界矩阵的定义:B B 的边界矩阵图1边界矩阵的定义参考程序:Boundary.m, main_of_boundary.m function boundary=Boundary(M) [I,J]=size(M); i=2:I-1; j=2:J-1;SUM=M(i-1,j)+M(i+1,j)+M(i,j-1)+M(i,j+1);%Sum of four neighbours m=M(i,j);m(SUM==4)=0; % if all of (i,j)'s four neighbours==1 then m(i,j)=0 M(i,j)=m; boundary=M;'A.txt'boundary=Boundary(M); subplot(1,2,1)image(M*255) % show the M matrix subplot(1,2,2)image(boundary*255) % show the boundary matrix00 1 0 00 1 1 1 01 1 1 1 11 1 1 1 00 1 1 0 000100010101000110010011003矩阵构造用元胞自动机模型研究收费站设置多少收费亭最佳时,需要根据给定的高速公路(车道数L),和收费亭数目B以及与收费站结构有关的参数生成相应的格子(矩阵).每个格子可能的状态有三种:用1表示车辆,0表示空位,-888表示不可进入区域.图2 收费站的离散化参考程序:create_plaza.mfunctionplaza = zeros(plazalength,B+2); % 1 = car, 0 = empty, -888 = forbidv = zeros(plazalength,B+2); % velocity of automata (i,j), if it existstime = zeros(plazalength,B+2); % cost time of automata (i,j) if it existsplaza(1:plazalength,[1,2+B]) = -888;%left: angle of width decline for boundariestoptheta = 1.3;bottomtheta = 1.2;for col = 2:ceil(B/2-L/2) + 1for row = 1:(plazalength-1)/2 - floor(tan(toptheta) * (col-1))plaza(row, col) =-888;endfor row = 1:(plazalength-1)/2 - floor(tan(bottomtheta) * (col-1))plaza(plazalength+1-row, col) =-888;endendfac = ceil(B/2-L/2)/floor(B/2-L/2);%right: angle of width decline for boundariestoptheta = atan(fac*tan(toptheta));bottomtheta = atan(fac*tan(bottomtheta));forfor row = 1:(plazalength-1)/2 - floor(tan(toptheta) * (col-1))plaza(row,B+3-col) =-888;endfor row = 1:(plazalength-1)/2 - floor(tan(bottomtheta) * (col-1))plaza(plazalength+1-row,B+3-col) = -888;endend%% Alternative method %%% topgap = 5;% bottomgap = 1;% plaza = zeros(plazalength,B+2);% plaza(1:plazalength,[1,2+B]) = -888;% if mod(B-L,2)==0% for col = 2:B/2 - L/2 + 1% for row = 1:(plazalength-1)/2 - topgap * (col-1)% plaza(row,[col, B+3-col]) = -888;% end% for row =(plazalength+3)/2 + bottomgap*(col-1):plazalength % plaza(row,[col, B+3-col]) = -888;% end% end% else% plaza(1:plazalength, B+3) =-888;% for col = 2:(B+1)/2 - L/2 + 1% for row = 1:(plazalength-1)/2 - topgap * (col-1)% plaza(row, [col, B+4-col]) = -888;% end% for row =(plazalength+3)/2 + bottomgap*(col-1):plazalength % plaza(row, [col, B+4-col]) = -888;% end% end% end%%4地面搜索地震后,有一块km 5050×的地面须要搜索,以抢救伤员。