matlab常用函数总结(精选6篇)
matlab常用函数总结 第1篇
sinα=∠α的对边/斜边
cosα=∠α的邻边/斜边
tanα=∠α的对边/∠α的邻边
cotα=∠α的邻边/∠α的对边
倍角公式
Sin2A=2SinA?CosA
Cos2A=CosA2-SinA2=1-2SinA2=2CosA2-1
tan2A=(2tanA)/(1-tanA2)
(注:SinA2是sinA的平方sin2(A))
三倍角公式
sin3α=4sinαsin(π/3+α)sin(π/3-α)
cos3α=4cosαcos(π/3+α)cos(π/3-α)
tan3a=tanatan(π/3+a)tan(π/3-a)
三倍角公式推导
sin3a=sin(2a+a)=sin2acosa+cos2asina
三角函数辅助角公式
Asinα+Bcosα=(A2+B2)’(1/2)sin(α+t),其中
sint=B/(A2+B2)’(1/2)
cost=A/(A2+B2)’(1/2)
tant=B/A
Asinα+Bcosα=(A2+B2)’(1/2)cos(α-t),tant=A/B
降幂公式
sin2(α)=(1-cos(2α))/2=versin(2α)/2
cos2(α)=(1+cos(2α))/2=covers(2α)/2
tan2(α)=(1-cos(2α))/(1+cos(2α))
三角函数推导公式
tanα+cotα=2/sin2α
tanα-cotα=-2cot2α
1+cos2α=2cos2α
1-cos2α=2sin2α
1+sinα=(sinα/2+cosα/2)2=2sina(1-sin2a)+(1-2sin2a)sina=3sina-4sin3a
cos3a=cos(2a+a)=cos2acosa-sin2asina=(2cos2a-1)cosa-2(1-sin2a)cosa=4cos3a-3cosa
sin3a=3sina-4sin3a=4sina(3/4-sin2a)=4sina[(√3/2)2-sin2a]=4sina(sin260°-sin2a)=4sina(sin60°+sina)(sin60°-sina)=4sina2sin[(60+a)/2]cos[(60°-a)/2]2sin[(60°-a)/2]cos[(60°-a)/2]=4sinasin(60°+a)sin(60°-a)
cos3a=4cos3a-3cosa=4cosa(cos2a-3/4)=4cosa[cos2a-(√3/2)2]=4cosa(cos2a-cos230°)=4cosa(cosa+cos30°)(cosa-cos30°)=4cosa2cos[(a+30°)/2]cos[(a-30°)/2]{-2sin[(a+30°)/2]sin[(a-30°)/2]}=-4cosasin(a+30°)sin(a-30°)=-4cosasin[90°-(60°-a)]sin[-90°+(60°+a)]=-4cosacos(60°-a)[-cos(60°+a)]=4cosacos(60°-a)cos(60°+a)
上述两式相比可得
tan3a=tanatan(60°-a)tan(60°+a)
三角函数半角公式
tan(A/2)=(1-cosA)/sinA=sinA/(1+cosA);
cot(A/2)=sinA/(1-cosA)=(1+cosA)/sinA.
sin2(a/2)=(1-cos(a))/2
cos2(a/2)=(1+cos(a))/2
tan(a/2)=(1-cos(a))/sin(a)=sin(a)/(1+cos(a))
三角函数三角和
sin(α+β+γ)=sinαcosβcosγ+cosαsinβcosγ+cosαcosβsinγ-sinαsinβsinγ
cos(α+β+γ)=cosαcosβcosγ-cosαsinβsinγ-sinαcosβsinγ-sinαsinβcosγ
tan(α+β+γ)=(tanα+tanβ+tanγ-tanαtanβtanγ)/(1-tanαtanβ-tanβtanγ-tanγtanα)
三角函数两角和差
cos(α+β)=cosαcosβ-sinαsinβ
cos(α-β)=cosαcosβ+sinαsinβ
sin(α±β)=sinαcosβ±cosαsinβ
tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
tan(α-β)=(tanα-tanβ)/(1+tanαtanβ)
三角函数和差化积
sinθ+sinφ=2sin[(θ+φ)/2]cos[(θ-φ)/2]
sinθ-sinφ=2cos[(θ+φ)/2]sin[(θ-φ)/2]
cosθ+cosφ=2cos[(θ+φ)/2]cos[(θ-φ)/2]
cosθ-cosφ=-2sin[(θ+φ)/2]sin[(θ-φ)/2]
tanA+tanB=sin(A+B)/cosAcosB=tan(A+B)(1-tanAtanB)
tanA-tanB=sin(A-B)/cosAcosB=tan(A-B)(1+tanAtanB)
三角函数积化和差
sinαsinβ=[cos(α-β)-cos(α+β)]/2
cosαcosβ=[cos(α+β)+cos(α-β)]/2
sinαcosβ=[sin(α+β)+sin(α-β)]/2
cosαsinβ=[sin(α+β)-sin(α-β)]/2
三角函数诱导公式
sin(-α)=-sinα
cos(-α)=cosα
tan(a)=-tanα
sin(π/2-α)=cosα
cos(π/2-α)=sinα
sin(π/2+α)=cosα
cos(π/2+α)=-sinα
sin(π-α)=sinα
cos(π-α)=-cosα
sin(π+α)=-sinα
cos(π+α)=-cosα
tanA=sinA/cosA
tan(π/2+α)=-cotα
tan(π/2-α)=cotα
tan(π-α)=-tanα
tan(π+α)=tanα
诱导公式记背诀窍:奇变偶不变,符号看象限
万能公式
sinα=2tan(α/2)/[1+tan’(α/2)]
cosα=[1-tan’(α/2)]/1+tan’(α/2)]
tanα=2tan(α/2)/[1-tan’(α/2)]
其它公式
(1)(sinα)2+(cosα)2=1
(2)1+(tanα)2=(secα)2
(3)1+(cotα)2=(cscα)2
证明下面两式,只需将一式,左右同除(sinα)2,第二个除(cosα)2即可
(4)对于任意非直角三角形,总有
tanA+tanB+tanC=tanAtanBtanC
证:A+B=π-Ctan(A+B)=tan(π-C)
(tanA+tanB)/(1-tanAtanB)=(tanπ-tanC)/(1+tanπtanC)
整理可得tanA+tanB+tanC=tanAtanBtanC
得证同样可以得证,当x+y+z=nπ(n∈Z)时,该关系式也成立
由tanA+tanB+tanC=tanAtanBtanC可得出以下结论
(5)cotAcotB+cotAcotC+cotBcotC=1
(6)cot(A/2)+cot(B/2)+cot(C/2)=cot(A/2)cot(B/2)cot(C/2)
(7)(cosA)2+(cosB)2+(cosC)2=1-2cosAcosBcosC
(8)(sinA)2+(sinB)2+(sinC)2=2+2cosAcosBcosC
(9)sinα+sin(α+2π/n)+sin(α+2π2/n)+sin(α+2π3/n)++sin[α+2π(n-1)/n]=0
cosα+cos(α+2π/n)+cos(α+2π2/n)+cos(α+2π3/n)++cos[α+2π(n-1)/n]=0以及
sin2(α)+sin2(α-2π/3)+sin2(α+2π/3)=3/2
tanAtanBtan(A+B)+tanA+tanB-tan(A+B)=0
高考数学记忆方法
一、分类记忆法
遇到数学公式较多,一时难于记忆时,可以将这些公式适当分组。例如求导公式有18个,就可以分成四组来记:(1)常数与幂函数的导数(2个);(2)指数与对数函数的导数(4个);(3)三角函数的导数(6个);(4)反三角函数的导数(6个)。求导法则有7个,可分为两组来记:(1)和、差、积、商复合函数的导数(4个);(2)反函数、隐函数、幂指数函数的导数(3个)。
二、推理记忆法
许多数学知识之间逻辑关系比较明显,要记住这些知识,只需记忆一个,而其余可利用推理得到,这种记忆称为推理记忆。例如,平行四边形的性质,我们只要记住它的定义,由定义推理得它的任一对角线把它平分成两个全等三角形,继而又推得它的对边相等,对角相等,相邻角互补,两条对角线互相平分等性质。
三、标志记忆法
在学习某一章节知识时,先看一遍,对于重要部分用彩笔在下面画上波浪线,再记忆时,就不需要将整个章节的内容从头到尾逐字逐句的看了,只要看划重点的地方并在它的启示下就能记住本章节主要内容,这种记忆称为标志记忆。
四、回想记忆法
在重复记忆某一章节的知识时,不看具体内容,而是通过大脑回想达到重复记忆的目的,这种记忆称为回想记忆。在实际记忆时,回想记忆法与标志记忆法是配合使用的。
高考数学复习建议
初次学习和再次复习不同。绝大部分考生在高一高二两年的时间中进行的都是新知识新理论的学习,这是初次认识初次接触的过程,我们称之为初次学习,这个过程强调的是认知、接受和掌握。而高三将近一年的时间考生几乎接触的都是之前两年当中见过的理解了的但是很多已经遗忘的内容,我们将这个过程称之为再次复习。再次复习除了恢复考生对相应知识点的记忆之外,更重要的在于将知识点升华为考点,这个过程重视的是理解、综合与应用。两个过程截然不同,必然导致我们应对的策略也要有所变化。
学习和复习的主线不同。学习的主线我们应该都很熟悉,看一看教材的目录就非常明确了:高一高二两年当中一定是以章节为单位,一个知识点接一个知识点按部就班地介绍和学习。每个章节内部也是基本遵循“定义定理公式经典例题实际应用练习”这样由简到繁的内容安排。而二次复习如果也采用这样的模式,导致的直接结果就是,考生按知识点分块的模式分章节去解题会很顺利,一旦拿过来一份高考试卷,遇到里面的综合性题目却无从下手,这就是平时考生经常遇到的问题没有解题思路。
最有效的复习模式以题型为主线。结合以上讨论的两点内容,建议考生在复习过程中尤其是最后一轮复习中一定要以当地高考常考题型为主线,以题型为主线逐步建立自己在考试当中的解题思路。以题型为主线的复习方式有以下三点优势:
第一,可以将零散的知识点从题型的角度进行二次深入的梳理,把知识认知阶段进化为知识应用阶段,达到高考要求。
第二,题型为主线可以简化思维过程,头脑中不再是孤零零的点,而是形成模块化的解题套路。
第三,掌握相应知识的常考题型比起简单掌握知识点能够更快更大幅度地在考试中提高分数。很多考生溺死在浩如烟海的知识点当中,尽管花了相当多的时间和精力,但是收效甚微,甚至由此认为高中数学很难学。如果能够转变一下复习思路,相信一定可以柳暗花明。
matlab常用函数总结 第2篇
Part I:
所谓s函数是system Function的简称, 用它来写自己的simulink模块.s函数可以用matlab、C、C++、Fortran、Ada等语言来写,这儿我只介绍怎样用matlab语言来写吧(主要是它比较简单)< xmlnamespace prefix =“o” ns =“urn:schemas-microsoft-com:office:office” />
先讲讲为什么要用s函数,我觉得用s函数可以利用matlab的丰富资源,而不仅仅局限于simulink提供的模块,而用c或c++等语言写的s函数还可以实现对硬件端口的操作,还可以操作windows API
等
先介绍一下simulink的仿真过程(以便理解s函数),simulink的仿真有两个阶段: 一个为初始化,这个阶段主要是设置一些参数,像系统的输入输出个数、状态初值、采样时间等;第二个阶段就是运行阶段,这个阶段里要进行计算输出、更新离散状态、计算连续状态等等,这个阶段需要反复运行,直至结束.在matlab的workspace里输入edit sfuntmpl(这是matlab自己提供的s函数模板),我们看它来具体分析s函数的结构.1.函数的函数头
函数的第一行:function [sys,x0,str,ts]=sfuntmpl(t,x,u,flag), 先
讲输入与输出变量的含义:
t是采样时间, x是状态变量, u是输入(是做成simulink模块的输入), flag是仿真过程中的状态标志(以它来判断当前是初始化还是运行等)sys输出根据flag的不同而不同(下面将结合flag来讲sys的含义), x0是状态变量的初始值, str是保留参数(mathworks公司还没想好该怎么用它, 一般在初始化中将它置空就可以了, str=[]), ts是一个1×2的向量, ts(1)是采样周期, ts(2)是偏移量
2.函数分析
下面结合sfuntmpl.m中的代码来讲具体的结构:
switch flag, %判断flag,看当前处于哪个状态
case 0,[sys,x0,str,ts]=mdlInitializeSizes;
// 解释说明
flag=0表示当前处于初始化状态,此时调用函数mdlInitializeSizes进行初始化,此函数在该文件的第149行定义.其中的参数sys是一个结构体,它用来设置模块的一些参数,各个参数详
细说明如下
size = simsizes;%用于设置模块参数的结构体用simsizes来生
成
sizes.NumContStates = 0;%模块连续状态变量的个数 sizes.NumDiscStates = 0;%模块离散状态变量的个数
sizes.NumOutputs = 0;%模块输出变量的个数
sizes.NumInputs = 0;%模块输入变量的个数
sizes.DirFeedthrough = 1;%模块是否存在直接贯通 sizes.NumSampleTimes = 1;%模块的采样时间个数, 至少
是一个
sys = simsizes(sizes);%设置完后赋给sys输出
举个例子,考虑如下模型: dx/dt=fc(t,x,u)也可以用连续状态方程描述:dx/dt=A*x+B*u
x(k+1)=fd(t,x,u)也可以用离散状态方程描述:
x(k+1)=H*x(k)+G*u(k)
y=fo(t,x,u)也可以用输出状态方程描述:y=C*x+D*u 设上述模型连续状态变量、离散状态变量、输入变量、输出变量均为1个,我们就只需改上面那一段代码为(一般连续状态与离散状态不会一
块用, 我这儿是为了方便说明): sizes.NumContStates=1;sizes.NumDiscStates=1;sizes.NumOutputs=1;sizes.NumInputs=1;
其他的可以不变, 继续在mdlInitializeSizes函数中往下看:
x0 = [];%状态变量设置为空,表示没有状态变量,以我们上面的假设,可改为x0=[0,0](离散和连续的状态变量我们都设它初值为0)
str = [];%保留参数, 置[]就可以了, 没什么用
ts = [0 0];%采样周期设为0表示是连续系统, 如果是离散系统在下面的mdlGetTimeOfNextVarHit函数中具体介绍
case 1,sys=mdlDerivatives(t,x,u);
// flag=1表示此时要计算连续状态的微分, 即上面提到的dx/dt=fc(t,x,u)中的dx/dt, 找到193行的函数mdlDerivatives, 如果设置连续状态变量个数为0, 此处只需sys=[]就可以了, 按我们上述讨论的那个模型, 此处改成 sys=fc(t,x(1),u)或sys=A*x(1)+B*u, 我们这儿x(1)是连续状态变量, 而x(2)是离散的, 这儿只用到连续的, 此时的输出sys就是微分
case 2,sys=mdlUpdate(t,x,u);
// flag=2表示此时要计算下一个离散状态, 即上面提到的x(k+1)=fd(t,x,u), 找到mdlUpdate函数, 它这儿sys=[]表示没有离散状态, 我们这儿可以改成sys=fd(t,x(2),u)或sys=H*x(2)+G*u;%sys即为x(k+1)
case 3,sys=mdlOutputs(t,x,u);
// flag=3表示此时要计算输出, 即y=fo(t,x,u), 找到218行的mdlOutputs函数.如果sys=[]表示没有输出, 我们改成sys=fo(t,x,u)或sys=C*x+D*u %sys此时为输出y
case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);
// flag=4表示此时要计算下一次采样的时间, 只在离散采样系统中有用(即上文的mdlInitializeSizes中提到的ts设置ts(1)不为0), 连续系统中只需在mdlGetTimeOfNextVarHit函数中写上sys=[].这个函数主要用于变步长的设置, 具体实现大家可以用edit vsfunc看
vsfunc.m这个例子
case 9,sys=mdlTerminate(t,x,u);
//
flag=9表示此时系统要结束,一般来说写上在mdlTerminate函数中写上sys=[]就可, 如果你在结束时还要设置什么,就在此函数中写完
了.Part II
此外, s函数还可以带用户参数, 下面给个例子, 它和simulink下的gain
模块功能一样
function [sys,x0,str,ts] = sfungain(t,x,u,flag,gain)
switch flag, case 0, sizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 1;sizes.NumInputs = 1;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0=[];str=[];ts=[0,0];case 3, sys=gain*u;case {1,2,4,9},sys = [];end
做好了s函数后, simulink--> user-defined function下拖一个S-Function到你的模型, 就可以用了.在simulink--> user-defined function还有个s-Function Builder, 他可以生成用c语言写的s函数.或者在matlab的workspace下打sfundemos, 可
以看到很多演示s函数的程序
Part III
SIMULINK s-function的设计
Simulink为用户提供了许多内置的基本库模块, 通过这些模块进行连接而构成系统的模型.对于那些经常使用的模块进行组合并封装可以构建出重复使用的新模块, 但它依然是基于Simulink原来提供的内置模块.而Simulink s-function是一种强大的对模块库进行扩展的新工具.(一)s-function的概念
s-function是一个动态系统的计算机语言描述, 在MATLAB里, 用户可以选择用m文件编写, 也可以用c或mex文件编写, 在这里只给大家介绍如何用m文件编写s-function.S-function提供了扩展Simulink模块库的有力工具, 它采用一种特定的调用语法, 使函数和Simulink解法器进行交互.S-function最广泛的用途是定制用户自己的Simulink模块.它的形式十分通用, 能够支持连续系统、离散系统和混合系统.(二)建立m文件s-function
1.使用模板文件:sfuntmp1.m, 其格式为[sys,x0]=function(t,x,u,flag).该该模板文件位于MATLAB根目录下toolbox/simulink/blocks目录下
模板文件里s-function的结构十分简单, 它只为不同的flag的值指定要相应调用的m文件子函数.比如当flag=3时, 即模块处于计算输出这个仿真阶段时, 相应调用的子函数为sys=mdloutputs(t,x,u).模板文件使用switch语句来完成这种指定, 当然这种结构并不唯一, 用户也可以使用if语句来完成同样的功能.而且在实际运用时, 可以根据实际需要来去掉某些值, 因为并不是每个模块都需要经过所有的子
函数调用.模板文件只是Simulink为方便用户而提供的一种参考格式, 并不是编写s-function的语法要求, 用户完全可以改变子函数的名称, 或者直接把代码写在主函数里, 但使用模板文件的好处是, 比较方便, 而且条
理清晰.使用模板编写s-function, 用户只需把s-函数名换成期望的函数名称, 如果需要额外的输入参量, 还需在输入参数列表的后面增加这些参数, 因为前面的4个参数是simulink调用s-function时自动传入的.对于输出参数, 最好不做修改.接下去的工作就是根据所编s-function要完成的任务, 用相应的代码去替代模板里各个子函数的代码即可.Simulink在每个仿真阶段都会对s-function进行调用.在调用时, Simulink会根据所处的仿真阶段为flag传入不同的值, 而且还会为sys这个返回参数指定不同的角色.也就是说尽管是相同的sys变量, 但在不同的仿真阶段其意义却不相同, 这种变化由simulink自动完成.m文件s-function可用的子函数说明如下:
mdlInitializeSizes(flag=0)--定义s-function模块的基本特性, 包括采样时间、连续或者离散状态的初始条件和sizes数组
mdlDerivatives(flag=1)--计算连续状态变量的微分方程
mdlUpdate(flag=2)--更新离散状态、采样时间和主时间步的要
求
mdlOutputs(flag=3)--计算s-function的输出
mdlGetTimeOfNextVarHit(flag=4)--计算下一个采样点的绝对时间, 这个方法仅仅是在用户在mdlInitializeSizes 里说明了一个
可变的离散采样时间
概括说来, 建立s-function可以分成两个分离的任务: 第一, 初始化模块特性包括输入输出信号的宽度, 离散连续状态的初始条件和采样时间.第二, 将算法放到合适的s-function子函数中去。
2.定义s-function的初始信息
为了让Simulink识别出一个m文件是s-function, 用户必须在s-函数里提供有关s-函数的说明信息, 包括采样时间、连续或者离散状态个数等初始条件.这一部分主要是在mdlInitializeSizes子函数里
完成.Sizes数组是s-function函数信息的载体, 它内部的字段意义为:
NumContStates(sys(1)):连续状态的个数(状态向量连续部
分的宽度)
NumDiscStates(sys(2)):离散状态的个数(状态向量离散部
分的宽度)
NumOutputs(sys(3)): 输出变量的个数(输出向量的宽度)
NumInputs(sys(4)):输入变量的个数(输入向量的宽度)
DirFeedthrough(sys(5)):有不连续根的数量
NumSampleTimes(sys(6)):采样时间的个数,有无代数循环
标志
如果字段代表的向量宽度为动态可变, 则可以将它们赋值为-1.注意DirFeedthrough是一个布尔变量, 它的取值只有0和1两种, 0表示没有直接馈入, 此时用户在编写mdlOutputs子函数时就要确保子函数的代码里不出现输入变量u;1表示有直接馈入.NumSampleTimes表示采样时间的个数, 也就是ts变量的行数, 与
用户对ts的定义有关.需要指出的是, 由于s-function会忽略端口, 所以当有多个输入变量或多个输出变量时, 必须用mux模块或demux模块将多个单一输入合成一个复合输入向量或将一个复合输出向量分解为多个单一输出.3.输入和输出参量说明
S-function默认的4个输入参数为t、x、u和flag, 它们的次序不
能变动, 代表的意义分别为:
t--代表当前的仿真时间, 这个输入参数通常用于决定下一个采样时刻, 或者在多采样速率系统中, 用来区分不同的采样时刻点, 并
据此进行不同的处理
x--表示状态向量, 这个参数是必须的, 甚至在系统中不存在状态时也是如此.它具有很灵活的运用
u--表示输入向量
flag--是一个控制在每一个仿真阶段调用哪一个子函数的参数,由Simulink在调用时自动取值.S-function默认的4个返回参数为sys、x0、它们的次序不能变动,代表的意义分别为:
sys--是一个通用的返回参数, 它所返回值的意义取决于flag的值
x0--是初始的状态值(没有状态时是一个空矩阵[]), 这个返回参数只在flag值为0时才有效, 其他时候都会被忽略.假设, 有一系统如下:
dx1=x2
dx2=9.81*sin(x(1))-2*x(2)+u
求出系统在单位阶跃输入下的x1的状态变化曲线, 假设x1,x2初值为
0, 则:
function [sys,x0]=dong(t,x,u,flag)
if flag==0
sys=[2;0;2;1;0;0];
x0=[0;0];
elseif flag==1
sys=[x(2);9.81*sin(x(1))-2*x(2)+u];
elseif flag==3
sys=[x(1);x(2)];
else
sys=[];
matlab常用函数总结 第3篇
对于一些多元函数特别是隐函数类的数学问题, 其求解和图形绘制工作仅仅依靠人工是难以实现的, 而MATLAB软件正是解决这类复杂数学问题的一种很好的工具。
MATLAB软件包含了一系列种类齐全的绘图函数, 例如二维图形中基本的plot函数、三维曲面的mesh函数。在隐函数绘图方面, 软件提供了ezplot函数可以直接绘制二维隐函数曲线, 但在解决三维隐函数曲面的图形绘制方面, 却仍然是一个难题, 因为软件里并没有提供能直接绘制三维隐函数曲面的函数, 需要我们寻找其他方法解决这一问题。
该文主要探讨利用MATLAB软件绘制二维隐函数曲线和三维隐函数曲面的方法, 并给出具体应用实例。
1 二维隐函数绘图
二维隐函数是指满足方程f (x, y) =0的x, y之间的关系式, 由于隐函数求解不便, 很多都无法求出x、y之间的关系, 也就不能写成y=f (x) 的形式, 因此基本的二维绘图命令plot (x, y) 是不能应用的。对于这类隐函数的图形绘制问题, MATLAB提供了函数ezplot () 可以直接绘制隐函数f (x, y) =0的曲线。
1.1 函数ezplot基本格式及绘图应用
对于隐函数f=f (x, y) , ezplot的基本调用格式是:ezplot (f) , 这是在默认区间-2pi<x<2pi、-2pi<y<2pi绘制f (x, y) =0的图形。
也可以人工指定区间范围:xmin<x<xmax, ymin<y<ymax, 其调用格式为:
例如要绘制隐函数的曲线, 可以采用下列两种语句:
执行后得出如图1所示的绘图结果, 这是一种心形线。
1.2 隐函数带变量使用的情况
隐函数带变量的情况也很常见, 例如隐函数
根据实际需要可将a事先具体赋值, 但使用中应注意, 绘图语句不能简单采用前面基本格式的形式, 例如a=2;, 这样并不能执行绘图。因为函数包括单引号时, 相当于是符号表达式, 变量a的值作为一个参数, 不能传进函数, 导致ezplot () 不能正常绘图。
要把参数a的值传进函数, 就不能用单引号括起函数, 因此正确的做法是先利用syms函数定义多个变量, 再用ezplot () 对隐函数画图, 应注意函数不带单引号。绘图语句如下, 绘图结果和前面图1完全相同。
1.3 带有多个变量的隐函数组的绘图
已有方程组f (x, y) =x+y^2=a, g (x, y) =x^2-y=b, (a, b均为常数) , 可以方便地解决这类带有多个变量的隐函数组的绘图问题。以a=3, b=-3这种情况为例, 给出绘图的语句和绘图结果图2。
其中hold on语句的作用是将当前已有图形保持, 并允许添加新绘制的图形。title () 的作用是给图形加题头。
2 三维隐函数绘图
三维隐函数是指在满足方程f (x, y, z) =0的条件下, z关于x、y的关系式, 即z=g (x, y) , 这里g (x, y) 的显式表达式无法求取, 不能采用普通的绘图函数来绘制其曲线。下面主要探讨采用等值面计算函数isosurface () 和面元渲染函数patch () 来分步实现三维隐函数曲面的绘图方法。
2.1 三维隐函数分步绘图步骤
首先对要使用的两个重要的图形函数做一些简要介绍。
isosurface的调用格式:[f, v]=isosurface (x, y, z, val, isovalue) , 它是等值面计算函数, 其作用是返回由isovalue指定的某个等值面的表面 (Faces) 和顶点 (Vertices) 数据, 并存放在结构体f、v中。对于画隐函数v=f (x, y, z) =0的三维图形, 则isovalue=0。
patch是面元渲染函数, 对曲面进行修饰。它的调用格式包括:
patch (x, y, z, c) 以三维坐标 (x, y, z) 为顶点, 构造三维曲面, c是R G B颜色向量。
patch (f, v) 通过包含Faces、Vertices两个域的结构体f、v来构造三维曲面, f和v可以由等值面函数isosurface计算而得。
对于三元显函数v=f (x, y, z) 来说, 当v=0时的等值面就是z=g (x, y) 的三维曲面。isosurface函数可以计算v=0的等值面, 返回结果包括表面和顶点数据, 并存放于结构体f、v中, 再输入给patch函数, 能构造三维曲面, 还可以根据需要设置颜色、亮度、三维视角等。
根据上述方案可以归纳出三维隐函数的分步绘图步骤。
(1) 用meshgrid函数产生网格点, 同时可确定坐标范围。
(2) 引用隐函数表达式计算格点函数值val。
(3) 调用[f, v]=isosurface (x, y, z, val, 0) 计算隐函数等值面并返回到f、v。
(4) 调用patch ('Faces', f, 'Vertices', v, 'facecolor', 'none', 'Edge Color', 'flat') 对曲面修饰。
2.2 三维隐函数绘图应用举例
以心形图函数为例, 按照上述绘图步骤, 给出程序语句和三维心形图的绘图结果图3。
3 结语
该文介绍了利用M A T L A B软件中的绘图函数ezplot () 直接绘制二维隐函数曲线的方法, 以及采用等值面计算函数isosurface () 和面元渲染函数patch () 分步实现三维隐函数曲面的绘图方法。实践表明, 上述方法效率高、容易实现, 能有效解决比较复杂的隐函数绘图问题。
参考文献
[1]李国勇, 程永强.计算机仿真技术与CAD[M].北京:电子工业出版社, 2012.
[2]薛定宇, 陈阳泉.基于M A T L A B/Simulink的系统仿真技术与应用[M].北京:清华大学出版社, 2011.
[3]陈艳男, 徐爱军, 保进烽.MATLAB在高等数学课程中的应用[J].科技信息, 2010 (14) :39-40.
matlab常用函数总结 第4篇
关键词:幂指函数 极限 对数函数 无穷小代换
中图分类号:G642 文献标识码:A 文章编号:1674-098X(2015)05(c)-0233-02
1 问题的提出
考虑一个连续复利问题,设有一笔存款(本金),年利率为,若一年分为期计息,则每期的利率为,于是年后的本利和为: (1)
若计息的期数,则问题就归结为连续复利问题,则年后的本利和转化为以下函数的极限。
nk (2)
上面函数的极限是高等数学中非常重要的一类极限,常规的处理方法是利用进行求解,但在大部分高等数学教材编写过程中,对的讨论过程比较繁琐,而且有些结果也没有给出严格的数学证明,不利于教师的教学和学生的理解。这里我们简单回顾一下对其处理过程:首先,通过单调有界准则证明了数列极限的存在性,随后就直接给出了,没有给出严格的证明过程;其次,在不严格的基础上,又证明了函数极限。该文针对以上存在的两个问题:(1)极限值等于没有给出严格的证明;(2)的求解比较繁琐。该文对此类极限的求解方法进行了总结,并通过matlab进行数值仿真。由于是一类特殊的幂指函数,下面我们首先讨论一般幂指函数极限的求解问题,然后过渡到特殊的幂指函数的极限问题。
2 幂指函数极限的求解方法
形如的函数称为幂指函数,幂指函数的极限问题在高等数学的教学中经常遇到,下面介绍几种求幂指函数极限时常用到的方法。
2.1 直接代入法
若幂指函数在处是连续的,根据连续函数的定义,可以通过如下方法求极限。
定理1:
。
若不在函数定义域内,或者自变量的变化过程为,这有如下结果。
定理2:若,,则。
其中表示自变量同一变化过程中的极限。
例1:求极限
解:由于在处连续,根据定理1,我们有:
上述极限过程也可以通过matlab中的simulink模块进行数值仿真,程序的模块圖和函数图像分别为图1和图2。
从图2可以看出当时,的无限趋近于是1,这个与我们计算结果是一致的。
2.2 洛必达法则
对于,和型的幂指函数的极限,可以将幂指函数化为对数恒等式的形式,将其转化为型的未定式,再根据函数的具体形式,将其转化为或,使用洛必达法则进行极限的计算。
例2:求
解:
在上面极限求解过程中,除了使用洛必达法则之外,还利用了等价无穷小代换。
当时,的无限趋近于1,这个与我们计算结果是一致的。
2.3 无穷小等价代换方法
无穷小等价代换方法是求函数极限常用的方法,但在大多数教材中,无穷小代换常用于乘积运算,事实上,对某些幂指函数的极限也可以通过无穷小代换方法计算。
定理3:若函数,和满足以下三个条件。
(1),且,,。
(2)。
(3)存在。
则。
例3 求的极限。
解:当时,,,且,满足定理3的条件(1)和(2);又因为成立,满足条件(3),因此,可以利用定理3进行求解。
当时,无限趋近于1。
3 极限的证明
利用定理2和等价无穷小代换方法,证明
证明:
在上面证明过程中,使用了无穷小代换 ,同时,也可以看出是的一种特殊形式。
可以利用求一类幂指函数的极限,其中可以是一个表达式。
定理4:若,,,且存在,则有下面结果
例4 求的极限
解:
4 结语
幂指函数的极限类型较多,是高等数学教学中的一个重点内容。学生学习起来往往比较困难,该文对幂指函数极限的常规求解方法做了一个概括和总结,并通过matlab软件进行了数值仿真。
参考文献
[1]华东师范大学数学系.数学分析[M].北京:高等教育出版社,2001.
[2]同济大学数学系编.高等数学[M].北京:高等教育出版社,2001.
[3]刘小华.关于幂指函数求极限问题[J].高等数学研究,2008,11(5):5-6.
matlab常用函数总结 第5篇
MOD函数:求出两数相除的余数,
MONTH函数:求出指定日期或引用单元格中的日期的月份。
NOW函数:给出当前系统日期和时间。
OR函数:仅当所有参数值均为逻辑“假(FALSE)”时返回结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。
RANK函数:返回某一数值在一列数值中的相对于其他数值的排位。
RIGHT函数:从一个文本字符串的最后一个字符开始,截取指定数目的字符。
SUBTOTAL函数:返回列表或数据库中的分类汇总。
22、MOD函数
函数名称:MOD
主要功能:求出两数相除的余数。
使用格式:MOD(number,divisor)
参数说明:number代表被除数;divisor代表除数。
应用举例:输入公式:=MOD(13,4),确认后显示出结果“1”。
特别提醒:如果divisor参数为零,则显示错误值“#DIV/0!”;MOD函数可以借用函数INT来表示:上述公式可以修改为:=13-4*INT(13/4)。
23、MONTH函数
函数名称:MONTH
主要功能:求出指定日期或引用单元格中的日期的月份。
使用格式:MONTH(serial_number)
参数说明:serial_number代表指定的日期或引用的单元格。
应用举例:输入公式:=MONTH(”-12-18“),确认后,显示出11。
特别提醒:如果是给定的日期,请包含在英文双引号中;如果将上述公式修改为:=YEAR(”2003-12-18“),则返回年份对应的值“2003”。
24、NOW函数
函数名称:NOW
主要功能:给出当前系统日期和时间。
使用格式:NOW
参数说明:该函数不需要参数。
应用举例:输入公式:=NOW(),确认后即刻显示出当前系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。
特别提醒:显示出来的日期和时间格式,可以通过单元格格式进行重新设置。
25、OR函数
函数名称:OR
主要功能:返回逻辑值,仅当所有参数值均为逻辑“假(FALSE)”时返回函数结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。
使用格式:OR(logical1,logical2, ...)
参数说明:Logical1,Logical2,Logical3:表示待测试的条件值或表达式,最多这30个。
应用举例:在C62单元格输入公式:=OR(A62>=60,B62>=60),确认。如果C62中返回TRUE,说明A62和B62中的数值至少有一个大于或等于60,如果返回FALSE,说明A62和B62中的数值都小于60。
特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。
26、RANK函数
函数名称:RANK
主要功能:返回某一数值在一列数值中的相对于其他数值的排位,
使用格式:RANK(Number,ref,order)
参数说明:Number代表需要排序的数值;ref代表排序数值所处的单元格区域;order代表排序方式参数(如果为“0”或者忽略,则按降序排名,即数值越大,排名结果数值越小;如果为非“0”值,则按升序排名,即数值越大,排名结果数值越大;)。
应用举例:如在C2单元格中输入公式:=RANK(B2,$B$2:$B$31,0),确认后
matlab常用函数总结 第6篇
matlab存储变量在一块内存区域中,该区域成为基本工作空间。脚本文件和命令行创建的变量都存储在基本工作空间里面(workspace),函数不使用基本工作空间,每个函数都有自己的函数空间。
下面是函数与工作空间共享数据的方法:
1、使用global,将变量声明为全局变量
2、使用evalin和assignin(常用方法)evalin:在函数M文件中访问工作空间中的变量
[a1,a2,…] = evalin(ws,expression)说明:在工作空间ws中执行expression命令或表达式,并将执行的结果保存在变量[a1,a2]中 例:
v = evalin(’base’,’var’);%把基本工作空间中的变量var的值赋值给局部变量。
v = evalin(’base’,’var’);%查询基本工作空间中的变量名称
assignin:将函数M文件中的变量的值传给指定的工作空间中的变量
assignin(ws,’var’,val);说明:将变量val的值赋给工作空间ws中的变量var,如果变量var在工作空间中不存在,则创建该变量。例: