QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 9806|回复: 17
打印 上一主题 下一主题

学精一个数学软件就可以了

[复制链接]

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

跳转到指定楼层
1#
发表于 2009-8-20 20:47 |只看该作者 |倒序浏览
在matlbe中如何求:
            1、非线性方程、微分方程组;
            2、线性规划、非线性规划;
            3、聚类分析;
            4、神经网络,遗传算法;
            5、以及其它的重要的应用等等。

我会好几个数学软件,如eviews、matlbe、spss、lingo、lindo等,但只是略知一二!上面的问题,我希望我们能讨论一下,大家互相交流交流,互相帮助帮助!
转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

2#
发表于 2009-8-20 21:00 |只看该作者
[编辑本段]MATLAB的简介
  MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
  MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
  MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
[编辑本段]发展历程
  20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。
  
版本更新

  版本[4] 建造编号 发布时间
MATLAB 1.0   1984  
MATALB 2   1986
MATLAB 3   1987
MATLAB 3.5   1990
MATLAB 4   1992
MATLAB 4.2c R7  1994
MATLAB 5.0 R8 1996
MATLAB 5.1 R9 1997
MATLAB 5.1.1 R9.1  1997
MATLAB 5.2 R10  1998
MATLAB 5.2.1 R10.1 1998
MATLAB 5.3 R11 1999
MATLAB 5.3.1 R11.1 1999
MATLAB 6.0 R12 2000
MATLAB 6.1 R12.1 2001
MATLAB 6.5 R13 2002
MATLAB 6.5.1 R13SP1 2003
MATLAB 6.5.2 R13SP2 2003
MATLAB 7 R14 2004
MATLAB 7.0.1 R14SP1 2004
MATLAB 7.0.4  R14SP2 2005
MATLAB 7.1  R14SP3 2005
MATLAB 7.2 R2006a 2006
MATLAB 7.3  R2006b 2006
MATLAB 7.4
   R2007a 2007
MATLAB 7.5 R2007b 2007
MATLAB 7.6
   R2008a 2008
MATLAB 7.7 R2008b 2008
MATLAB 7.8 R2009a 2009.3.6

[编辑本段]应用
  MATLAB 产品族可以用来进行以下各种工作:
  ● 数值分析
  ● 数值和符号计算
  ● 工程与科学绘图
  ● 控制系统的设计与仿真
  ● 数字图像处理 技术
  ● 数字信号处理 技术
  ● 通讯系统设计与仿真
  ● 财务与金融工程
  MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。
[编辑本段]Matlab的优势和特点
  
matlab特点

  ●此高级语言可用于技术计算
  ●此开发环境可对代码、文件和数据进行管理
  ●交互式工具可以按迭代的方式探查、设计及求解问题
  ●数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等
  ●二维和三维图形函数可用于可视化数据
  ●各种工具可用于构建自定义的图形用户界面
  ●各种函数可将基于MATLAB的算法与外部应用程序和语言(如 C、C++、Fortran、Java、COM 以及 Microsoft Excel)集成[2]
  
MATLAB的优势

  (1)友好的工作平台和编程环境
  MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
  (2)简单易用的程序语言
  Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
  (3)强大的科学计算机数据处理能力
  MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
  (4)出色的图形处理功能
  图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
  (5)应用广泛的模块集合工具箱
  MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
  (6)实用的程序接口和发布平台
  新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
  (7)应用软件开发(包括用户界面)
  在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。
[编辑本段]Matlab常用工具箱
  MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
  开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
  Matlab Main Toolbox——matlab主工具箱
  Control System Toolbox——控制系统工具箱
  Communication Toolbox——通讯工具箱
  Financial Toolbox——财政金融工具箱
  System Identification Toolbox——系统辨识工具箱
  Fuzzy Logic Toolbox——模糊逻辑工具箱
  Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱
  Image Processing Toolbox——图象处理工具箱
  LMI Control Toolbox——线性矩阵不等式工具箱
  Model predictive Control Toolbox——模型预测控制工具箱
  μ-Analysis and Synthesis Toolbox——μ分析工具箱
  Neural Network Toolbox——神经网络工具箱
  Optimization Toolbox——优化工具箱
  Partial Differential Toolbox——偏微分方程工具箱
  Robust Control Toolbox——鲁棒控制工具箱
  Signal Processing Toolbox——信号处理工具箱
  Spline Toolbox——样条工具箱
  Statistics Toolbox——统计工具箱
  Symbolic Math Toolbox——符号数学工具箱
  Simulink Toolbox——动态仿真工具箱
  Wavele Toolbox——小波工具箱
[编辑本段]常用函数
  Matlab内部常数[3]
  eps:浮点相对精度
  pi:圆周率
  exp:自然对数的底数e
  i 或 j:基本虚数单位
  inf:无限大, 例如1/0
  NaN:非数值(Not a number),例如0/0
  pi:圆周率 p(= 3.1415926...)
  realmax:系统所能表示的最大数值
  realmin:系统所能表示的最小数值
  nargin: 函数的输入引数个数
  nargin: 函数的输出引数个数
  MATLAB常用基本数学函数
  abs(x):纯量的绝对值或向量的长度
  angle(z):复数z的相角(Phase angle)
  sqrt(x):开平方
  real(z):复数z的实部
  imag(z):复数z的虚部
  conj(z):复数z的共轭复数
  round(x):四舍五入至最近整数
  fix(x):无论正负,舍去小数至最近整数
  floor(x):地板函数,即舍去正小数至最近整数
  ceil(x):天花板函数,即加入正小数至最近整数
  rat(x):将实数x化为分数表示
  rats(x):将实数x化为多项分数展开
  sign(x):符号函数 (Signum function)。
  当x<0时,sign(x)=-1;
  当x=0时,sign(x)=0;
  当x>0时,sign(x)=1。
  rem(x,y):求x除以y的馀数
  gcd(x,y):整数x和y的最大公因数
  lcm(x,y):整数x和y的最小公倍数
  exp(x) :自然指数
  pow2(x):2的指数
  log(x):以e为底的对数,即自然对数或
  log2(x):以2为底的对数
  log10(x):以10为底的对数
  MATLAB常用三角函数
   sin(x):正弦函数
  cos(x):余弦函数
  tan(x):正切函数
  asin(x):反正弦函数
  acos(x):反余弦函数
  atan(x):反正切函数
  atan2(x,y):四象限的反正切函数
  sinh(x):超越正弦函数
  cosh(x):超越余弦函数
  tanh(x):超越正切函数
  asinh(x):反超越正弦函数
  acosh(x):反超越余弦函数
  atanh(x):反超越正切函数
  适用于向量的常用函数有
  min(x): 向量x的元素的最小值
  max(x): 向量x的元素的最大值
  mean(x): 向量x的元素的平均值
  median(x): 向量x的元素的中位数
  std(x): 向量x的元素的标准差
  diff(x): 向量x的相邻元素的差
  sort(x): 对向量x的元素进行排序(Sorting)
  length(x): 向量x的元素个数
  norm(x): 向量x的欧氏(Euclidean)长度
  sum(x): 向量x的元素总和
  prod(x): 向量x的元素总乘积
  cumsum(x): 向量x的累计元素总和
  cumprod(x): 向量x的累计元素总乘积
  dot(x, y): 向量x和y的内积
  cross(x, y): 向量x和y的外积
  MATLAB基本绘图函数
   plot: x轴和y轴均为线性刻度(Linear scale)
  loglog: x轴和y轴均为对数刻度(Logarithmic scale)
  semilogx: x轴为对数刻度,y轴为线性刻度
  semilogy: x轴为线性刻度,y轴为对数刻度
  matlab插值和样条plot绘图函数的参数
   字元 颜色 字元 图线型态
  y 黄色 . 点
  k 黑色 o 圆
  w 白色 x x
  b 蓝色 + +
  g 绿色 * *
  r 红色 - 实线
  c 亮青色 : 点线
  m 锰紫色 -. 点虚线
  -- 虚线
  注解
  xlabel('Input Value'); % x轴注解
  ylabel('Function Value'); % y轴注解
  title('Two Trigonometric Functions'); % 图形标题
  legend('y = sin(x)','y = cos(x)'); % 图形注解
  grid on; % 显示格线
  二维绘图函数
   bar 长条图
  errorbar 图形加上误差范围
  fplot 较精确的函数图形
  polar 极座标图
  hist 累计图
  rose 极座标累计图
  stairs 阶梯图
  stem 针状图
  fill 实心图
  feather 羽毛图
  compass 罗盘图
  quiver 向量场图[4]
回复

使用道具 举报

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

3#
发表于 2009-8-20 21:11 |只看该作者
Matlab常用函数

Matlab的内部常数

eps   浮点相对精度
pi  圆周率
exp  自然对数的底数e
i 或j  虚数单位
Inf或 inf  无穷大


Matlab概率密度函数

betapdf   β概率密度函数  
binopdf   二项概率密度函数
chi2pdf   x2概率密度函数
exppdf   指数概率密度函数
fpdf    F概率密度函数  
gampdf    γ概率密度函数
geopdf   几何概率密度函数
hygepdf    超几何概率密度函数  
lognpdf   对数正态概率密度函数
nbinpdf  负二项概率密度函数
ncfpdf   偏F概率密度函数
nctpdf  偏t概率密度函数
ncx2pdf   偏概率密度函数
normpdf  正态分布概率密度函数
pdf   指定分布的概率密度函数  
poisspdf  泊松分布的概率密度函数
raylpdf   Rayleigh概率密度函数  
tpdf    t概率密度函数
unidpdf  离散均匀分布概率密度函数
unifpdf   连续均匀分布概率密度函数
weibpdf   Weibull概率密度函数  

Matlab随机数据处理函数

corrcoef    计算互相关系数  
cov    计算协方差矩阵
geomean   计算样本的几何平均值
harmmean   计算样本数据的调和平均值
iqr   计算样本的四分位差
kurtosis  计算样本的峭度
mad   计算样本数据平均绝对偏差  
mean   计算样本的均值
median     计算样本的中位数  
  moment      计算任意阶的中心矩   prctile   计算样本的百份位数


Matlab的常用内部数学函数

指数函数
exp(x)
以e为底数

对数函数
log(x)
自然对数,即以e为底数的对数

log10(x)
常用对数,即以10为底数的对数

log2(x)
以2为底数的x的对数

开方函数
sqrt(x)
表示x的算术平方根

绝对值函数
abs(x)
表示实数的绝对值以及复数的模

三角函数

(自变量的单位为弧度)
sin(x)
正弦函数

cos(x)
余弦函数

tan(x)
正切函数

cot(x)
余切函数

sec(x)
正割函数

csc(x)
余割函数

反三角函数

  
asin(x)
反正弦函数

acos(x)
反余弦函数

atan(x)
反正切函数

acot(x)
反余切函数

asec(x)
反正割函数

acsc(x)
反余割函数

双曲函数

  
sinh(x)
双曲正弦函数

cosh(x)
双曲余弦函数

tanh(x)
双曲正切函数

coth(x)
双曲余切函数

sech(x)
双曲正割函数

csch(x)
双曲余割函数

反双曲函数

  
asinh(x)
反双曲正弦函数

acosh(x)
反双曲余弦函数

atanh(x)
反双曲正切函数

acoth(x)
反双曲余切函数

asech(x)
反双曲正割函数

acsch(x)
反双曲余割函数

求角度函数
atan2(y,x)
以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , ]

数论函数
gcd(a,b)
两个整数的最大公约数

lcm(a,b)
两个整数的最小公倍数

排列组合函数
factorial(n)
阶乘函数,表示n的阶乘

  

复数函数

  
real(z)
实部函数

imag(z)
虚部函数

abs(z)
求复数z的模

angle(z)
求复数z的辐角,其范围是( , ]

conj(z)
求复数z的共轭复数

求整函数与截尾函数
ceil(x)
表示大于或等于实数x的最小整数

floor(x)
表示小于或等于实数x的最大整数

round(x)
最接近x的整数

最大、最小函数
max([a,b,c,...])
求最大数

min([a,b,c,..])
求最小数

符号函数

  
sign(x)
  


Matlab中的数学运算符

a+b  
加法
a./b
数组右除

a-b
减法
a.\b
数组左除

a*b
矩阵乘法
a^b  
矩阵乘方

a.*b
数组乘法
a.^b
数组乘方

a/b
矩阵右除
-a
负号

a\b
矩阵左除
'  
共轭转置


  
.'
一般转置


如何在matlab中调用maple

(不用安装maple软件就可调用)

方法1:   

maple(’maplestatement’)

其中maplestatement 是完整的maple语句,由一条或几条命令组成,必须符合maple 的语法

方法2:

maple(’function’,arg1, arg2,…)

其中function为maple中的函数名称,arg1, arg2,…是函数function所用的参数。

注:如果方法1行不通,可尝试方法2(个人经验)。

基本代数部分

如何用matlab求阶乘

factorial(n) 求n的阶乘

如何用matlab配方 

没有发现matlab有这一命令,不过我们可以调用maple的命令,调用方法如下:

首先加载maple中的student函数库,加载方法为:maple(’with(student)’)

然后运行maple中的配方命令,格式为:

maple(’completesquare(f)’)       把f配方,其中f为代数表达式或代数方程

maple(’completesquare(f,x)’)       把f按指定的变量x配方,其中f同上

maple(’completesquare(f,{x,y,...})’)    把f按指定的变量x,y,...配方

maple(’completesquare(f,[x,y,...])’)     把f按指定的变量x,y,...配方,

如何用matlab进行多项式运算

(1)       合并同类项  

syms  表达式中包含的变量     collect(表达式,指定的变量)

(2)因式分解 

syms  表达式中包含的变量     factor(表达式)

  (3)展开

syms  表达式中包含的变量     expand(表达式)

我们也可在matlab中调用maple的命令进行多项式的运算,调用格式如下:

                             maple(’maple中多项式的运算命令’)

如何用matlab进行分式运算 

发现matlab只有一条处理分式问题的命令,其使用格式如下:

[n,d]=numden(f)    把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。注意:f必须为符号表达式

不过我们可以调用maple的命令,调用方法如下:

maple(’denom(f)’)
提取分式f的分母

maple(’numer(f)’)  
提取分式f的分子

maple(’normal(f)’ )
把分式f的分子与分母约分成最简形式

maple(’expand(f)’)
把分式f的分子展开,分母不变且被看成单项。

maple(’factor(f)’)
把分式f的分母和分子因式分解,并进行约分。


如何用Matlab进行因式分解

syms  表达式中包含的变量           factor(表达式)

   如何用Matlab展开

syms  表达式中包含的变量        expand(表达式) 

 如何用Matlab进行化简

syms  表达式中包含的变量     simplify(表达式) 

如何用Matlab合并同类项

syms  表达式中包含的变量     collect(表达式,指定的变量)

  如何用Matlab进行数学式的转换 

调用Maple中数学式的转换命令,调用格式如下:

maple(‘Maple的数学式转换命令’)

即:maple(‘convert(表达式,form)’)     将表达式转换成form的表示方式

maple(‘convert(表达式,form, x)’)  指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用)

如何用Matlab进行变量替换

syms  表达式和代换式中包含的所有变量    subs(表达式,要替换的变量或式子,代换式) 

 如何用matlab进行复数运算 

a+b*i  或  a +b*j
表示复数a+bi  或  a+bj

real(z)
求复数z的实部

imag(z)
求复数z的虚部

abs(z)
求复数z的模

angle(z)
求复数z的辐角,

conj(z)
求复数z的共轭复数

exp(z)
复数的指数函数,表示e^z


如何在matlab中表示集合

[a, b, c,…]  表示由a, b, c,…组成的集合    (注意:元素之间也可用空格隔开)

unique(A)   表示集合A的最小等效集合(每个元素只出现一次)

也可调用maple的命令,格式如下:

maple('{a, b, c,…}')                     表示由a, b, c,…组成的集合

下列命令可以生成特殊的集合:

maple(‘{seq(f(i),i=n..m)}’)               生成集合{f(n), f(n+1), f(n+2), … , f(m)}

如何用Matlab求集合的交集、并集、差集和补集 

union(A,B)
求集合A和B的并集

intersect(A,B)
求集合A和B的交集

setdiff(A,B)
求集合A和B的差集A-B

setdiff(U,A)
求集合A关于全集U的补集


我们也可以调用Maple的相应功能,调用方法如下:

maple('用Maple求集合的交集、并集、差集和补集的命令 ')

具体地说,共有下列几个调用命令:

maple( 'A union B' )                                          求集合A和B的并集

maple( 'A intersect B ' )                                    求集合A和B的交集

maple('A minus B ' )                                         求差集A-B

maple( '全集I minus A ' )                                求集合A关于全集I的补集

如何用matlab排序

sort(v)                            将向量v的元素从小到大排列(升序排列)
回复

使用道具 举报

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

4#
发表于 2009-8-20 21:13 |只看该作者
一、MATLAB常用的基本数学函数
  abs(x):纯量的绝对值或向量的长度
  angle(z):复数z的相角(Phase angle)
  sqrt(x):开平方
  real(z):复数z的实部
  imag(z):复数z的虚部
  conj(z):复数z的共轭复数
  round(x):四舍五入至最近整数
  fix(x):无论正负,舍去小数至最近整数
  floor(x):地板函数,即舍去正小数至最近整数
  ceil(x):天花板函数,即加入正小数至最近整数
  rat(x):将实数x化为分数表示
  rats(x):将实数x化为多项分数展开
  sign(x):符号函数 (Signum function)。
  当x<0时,sign(x)=-1;
  当x=0时,sign(x)=0;
  当x>0时,sign(x)=1。
  
  rem(x,y):求x除以y的馀数
  gcd(x,y):整数x和y的最大公因数
  lcm(x,y):整数x和y的最小公倍数
  exp(x) :自然指数
  pow2(x):2的指数
  log(x):以e为底的对数,即自然对数或
  log2(x):以2为底的对数
  log10(x):以10为底的对数
  二、MATLAB常用的三角函数
  sin(x):正弦函数
  cos(x):馀弦函数
  tan(x):正切函数
  asin(x):反正弦函数
  acos(x):反馀弦函数
  atan(x):反正切函数
  atan2(x,y):四象限的反正切函数
  sinh(x):超越正弦函数
  cosh(x):超越馀弦函数
  tanh(x):超越正切函数
  asinh(x):反超越正弦函数
  acosh(x):反超越馀弦函数
  atanh(x):反超越正切函数
  三、适用於向量的常用函数有:
  min(x): 向量x的元素的最小值
  max(x): 向量x的元素的最大值
  mean(x): 向量x的元素的平均值
  median(x): 向量x的元素的中位数
  std(x): 向量x的元素的标准差
  diff(x): 向量x的相邻元素的差
  sort(x): 对向量x的元素进行排序(Sorting)
  length(x): 向量x的元素个数
  norm(x): 向量x的欧氏(Euclidean)长度
  sum(x): 向量x的元素总和
  prod(x): 向量x的元素总乘积
  cumsum(x): 向量x的累计元素总和
  cumprod(x): 向量x的累计元素总乘积
  dot(x, y): 向量x和y的内积
  cross(x, y): 向量x和y的外积
  四、MATLAB的永久常数
  i或j:基本虚数单位(即)
  eps:系统的浮点(Floating-point)精确度
  inf:无限大, 例如1/0
  nan或NaN:非数值(Not a number),例如0/0
  pi:圆周率 p(= 3.1415926...)
  realmax:系统所能表示的最大数值
  realmin:系统所能表示的最小数值
  nargin: 函数的输入引数个数
  nargin: 函数的输出引数个数
  五、MATLAB基本绘图函数
  plot: x轴和y轴均为线性刻度(Linear scale)
  loglog: x轴和y轴均为对数刻度(Logarithmic scale)
  semilogx: x轴为对数刻度,y轴为线性刻度
  semilogy: x轴为线性刻度,y轴为对数刻度
  六、plot绘图函数的叁数
  字元 颜色 字元 图线型态
   y 黄色 . 点
   k 黑色 o 圆
   w 白色 x x
   b 蓝色 + +
   g 绿色 * *
   r 红色 - 实线
   c 亮青色 : 点线
   m 锰紫色 -. 点虚线
   -- 虚线
  七、注解
  xlabel('Input Value'); % x轴注解
  ylabel('Function Value'); % y轴注解
  title('Two Trigonometric Functions'); % 图形标题
  legend('y = sin(x)','y = cos(x)'); % 图形注解
  grid on; % 显示格线
  八、二维绘图函数
  bar 长条图
   errorbar 图形加上误差范围
   fplot 较精确的函数图形
   polar 极座标图
   hist 累计图
   rose 极座标累计图
   stairs 阶梯图
   stem 针状图
   fill 实心图
   feather 羽毛图
   compass 罗盘图
   quiver 向量场图
回复

使用道具 举报

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

5#
发表于 2009-8-20 21:18 |只看该作者
用Runge-Kutta方法求一阶微分方程组初值问题的matlab通用程序:

用经典Runge-Kutta方法求下列一阶微分方程组的近似解:

y1' = 3y1 + 2y2 − (2x2 + 1)e2x, y1(0) = 1             e2x表示exp(2*x)
y2 '= 4y1 + y2 + (x2 + 2x − 4)e2x, y2(0) = 1
y3 '= 2y1 − y2 − xe3x, y3(0) = 1
y4 '= y1 + x2ex, y4(0) = 1
y5 '= y2 − e2x, y5(0) = 1

其中初值条件y0为一个五维数组,包含了这五个方程在区间[0,1]左端点0的值,并假设N=10为区间等分数


程序:

function rk(A,x,h,y0)

%A为字符串函数的元胞数组

%x为x轴上的各点

%h为点距

%y0为初值

i=1;

y(i,=y0;

m=length(A);

b=x(length(x));

while x(i)<b

     a=[x(i),y(i,];

    for l=1:m

         k1(l)=eval(A{l},a);

    end

     a=[x(i)+h/2,y(i,+h/2*k1];

    for l=1:l

         k2(l)=eval(A{l},a);

    end

     a=[x(i)+h/2,y(i,+h/2*k2];

    for l=1:m

         k3(l)=eval(A{l},a);

    end

     a=[x(i)+h,y(i,+h*k3];

    for l=1:m

         k4(l)=eval(A{l},a);

    end

     y(i+1,=y(i,+h/6*(k1+2*k2+2*k3+k4);

     i=i+1;

end

y   




输入及结果:

>> y1='3*a(2)+2*a(3)-(2*a(1)^2+1)*exp(2*a(1))';      解释:a(1)为x,a(2)、a(3)……为y1,y2……

>> y2='4*a(2)+a(3)+(a(1)^2+2*a(1)-4)*exp(2*a(1))';

>> y3='2*a(2)-a(3)-a(1)*exp(3*a(1))';

>> y4='a(2)+a(1)^2*exp(a(1))';

>> y5='a(3)-exp(2*a(1))';

>> A=[{y1},{y2},{y3},{y4},{y5}]

A =

     [1x38 char]     [1x41 char]     [1x28 char]     [1x21 char]     'a(3)-exp(2*a(1))'

>> rk(A,0:0.1:1,0.1,ones(1,5))

y =

     1.0000     1.0000     1.0000     1.0000     1.0000

     1.4692     1.1649     1.1312     1.1226     0.9963

     2.1246     1.5112     1.3309     1.3031     0.9930

     3.0680     2.1507     1.6105     1.5679     1.0078

     4.4629     3.2638     1.9873     1.9573     1.0718

     6.5725     5.1403     2.4884     2.5335     1.2376

     9.8237     8.2476     3.1587     3.3940     1.5930

    14.9117    13.3402     4.0745     4.6925     2.2837

    22.9721    21.6384     5.3681     6.6746     3.5497

    35.8640    35.1212     7.2699     9.7346     5.7843

    56.6365    57.0045    10.1818    14.5095     9.6315
回复

使用道具 举报

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

6#
发表于 2009-8-20 21:20 |只看该作者
Matlab中微分方程求解
前面已经介绍了微分方程(组)的求解方法:解析解法、数值解法和图解法等等。这些方法计算工作量大,需要借助于计算机实现。下面简单介绍Matlab在此领域的应用。

3.1 解析解

desolve(‘eqn1’,’eqn2’, ...) 求常微分方程(组)的解析解。

1. 微分方程

    例1:求解二阶微分方程x2y’’ + xy’ + (x2-n2)y = 0, y (p/2) = 2, y’(p /2) = - 2/p, n = 1/2.

解析解:

dsolve('D2y+(1/x)*Dy+(1-(1/2)^2/x^2)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x')

ans = 2^(1/2)*pi^(1/2)*sin(x)/x^(1/2)

pretty(ans)

              

2.微分方程组

例2:求解     df/dx=3f+4g; dg/dx=-4f+3g。

通解:   [f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g')

f= exp(3*t)*cos(4*t)*C1+exp(3*t)*sin(4*t)*C2

g=-exp(3*t)*sin(4*t)*C1+exp(3*t)*cos(4*t)*C2

特解: [f,g]=dsolve('Df=3*f+4*g','Dg=4*f+3*g','f(0)=0,g(0)=1')

f=exp(3*t)*sin(4*t)

g=exp(3*t)*cos(4*t)

3.2 数值解

在微分方程(组)难以获得解析解的情况下,可以用Matlab方便地求出数值解。格式为:

[t,y] = ode23('F',TSPAN,Y0,OPTIONS,P1,P2,...)

注意:微分方程组形式:y' = F(t, y),t为自变量,y为因变量(可以是多个,如微分方程组)。[t, y]为输出矩阵,分别表示自变量和因变量的取值;F代表微分方程组的函数名(m文件,必须返回一个列向量);TSPAN=[t0, tf] 表示自变量的取值范围;Y0为初值条件;OPTIONS为选项;P1,P2,...用于传递附加的参数值。

ode23是微分方程组数值解的低阶方法,ode45为中阶方法,与ode23类似。另外还有系列其它方法,如求解非刚性微分方程组的可变阶方法 ode123。

例 3 求解一个经典的(Van Der pol)微分方程:


解 形式转化:令y1=u(t); y2= (t)。则以上方程转化为: 。

编写M文件如下(必须是M文件表示微分方程组,一般地,M文件的名字与函数名相同):

    function dot1=vdpol(t,y);

    dot1=[y(2); (1-y(1)^2)*y(2)-y(1)];

在工作空间写如下命令:

[t,y]=ode23('vdpol',0,20,[1,0]);y1=y(:,1);y2=y(:,2);

plot(t,y1,t,y2,'--');title('Van Der Pol Solution ');

xlabel('Time,Second');ylabel('y(1)andy(2)')

注:Van der Pol方程描述具有一个非线性振动项的振动子的运动过程。最初,由于它在非线性电路上的应用而引起广泛兴趣。一般形式为 。

又如例2的数值解:

首先建立M-文件函数:

    function f=jie3(x,y)

    f=[y(1) -y(2)/x+((1/2)^2/x^2-1)*y(1)];

计算:

[x,y]=ode23('jie3',[pi/2,pi],[2,-2/pi])

x = 1.5708 1.6074 1.7645 1.9215 2.0786 2.2357 2.3928 2.5499 2.7069

   2.8640 3.0211 3.1416;

y =

    2.0000   -0.6366

    2.0745   -0.6885

    2.4273   -0.9351

    2.8401   -1.2259

    3.3231   -1.5695

    3.8883   -1.9758

    4.5495   -2.4564

    5.3232   -3.0249

    6.2285   -3.6973

    7.2877   -4.4923

    8.5271   -5.4319

    9.6189   -6.2668

作图如下:           

y1=y(:,1);

y2=y(:,2);

plot(x,y1,'--',x,y2,'r')

plot(x,y1,x,y2,'r')                        图3-8 例2的数值解图形

3.3 图形解

无论是解析解还是数值解,都不如图形解直观明了。即使是在得到了解析解或数值解的情况下,作出解的图形,仍然是一件深受欢迎的事。这些都可以用Matlab方便地进行。

1.图示解析解

如果微分方程(组)的解析解为:y=f (x),则可以用Matlab函数fplot作出其图形:

fplot(fun,lims)

其中:fun给出函数表达式;lims=[xmin xmax ymin ymax]限定坐标轴的大小。例如

fplot('sin(1/x)', [0.01 0.1 -1 1])

2.图示数值解

设想已经得到微分方程(组)的数值解(x,y)。可以用Matlab函数plot(x,y)直接作出图形。其中x和y为向量(或矩阵)。
回复

使用道具 举报

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

7#
发表于 2009-8-20 21:23 |只看该作者
MATLAB线性微分方程求解1matlab常微分方程和常微分方程组的求解

在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:

X=dsolve(‘eqn1’,’eqn2’,…)

函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。

例1:求解常微分方程 的MATLAB程序为:dsolve('Dy=1/(x+y)','x'),注意,系统缺省的自变量为t,因此这里要把自变量写明。

结果为:-lambertw(-C1*exp(-x-1))-x-1

其中:Y=lambertw(X)表示函数关系Y*exp(Y)=X。

例2:求解常微分方程 的MATLAB程序为:Y2=dsolve('y*D2y-Dy^2=0’,’x’)

结果为:

Y2 =[ exp((x+C2)/C1)]

[           C2]

我们看到有两个解,其中一个是常数。

例3:求常微分方程组 通解的MATLAB程序为:

[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')

例4:求常微分方程组 通解的MATLAB程序为:

[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')

以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为:

[T,Y]=solver(odefun,tspan,y0)

该函数表示在区间tspan=[t0,tf]上,用初始条件y0求解显式常微分方程 。

solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,这些命令各有特点。

例5:求解常微分方程 , , 的MATLAB程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1)

结果为:

x = 0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.3400,0.3900,0.4400,0.4900,0.5000

y = 1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6179

例6:求解常微分方程 的解,并画出解的图形。

分析:这是一个二阶非线性方程,用现成的方法均不能求解,但我们可以通过下面的变换,将二阶方程化为一阶方程组,即可求解。

令: , , ,则得到:接着,编写vdp.m如下:

function fy=vdp(t,x)

fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)];

再编写m文件sy12_6.m如下:

y0=[1;0]

[t,x]=ode45(@vdp,[0,40],y0);

y=x(:,1);dy=x(:,2);

plot(t,y,t,dy)
回复

使用道具 举报

4

主题

4

听众

43

积分

新人进步奖

群组数学建模

8#
发表于 2009-8-20 21:24 |只看该作者
ode23    解非刚性微分方程,低精度,使用Runge-Kutta法的二三阶算法。
ode45    解非刚性微分方程,中等精度,使用Runge-Kutta法的四五阶算法。
ode113   解非刚性微分方程,变精度变阶次Adams-Bashforth-Moulton PECE算法。
ode23t    解中等刚性微分方程,使用自由内插法的梯形法则。
ode15s    解刚性微分方程,使用可变阶次的数值微分(NDFs)算法。
ode23s    解刚性微分方程,低阶方法,使用修正的Rosenbrock公式。
ode23tb    解刚性微分方程,低阶方法,使用TR-BDF2方法,即Runger-Kutta公式的第一级采用梯形法则,第二级采用Gear法。
[t,YY]=solver('F',tspan,Yo)
解算ODE初值问题的最简调用格式。
solver指上面的指令。

tspan=[0,30];     %时域t的范围
y0=[1;0];         %y(1)y(2)的初始值
[tt,yy]=ode45(@DyDt,tspan,y0);
plot(tt,yy(:,1)),title('x(t)')

function ydot=DyDt(t,y)
ydot=[y(2); 2*(1-y(1)^2)*y(2)-y(1)]

刚性方程:刚性是指其Jacobian矩阵的特征值相差十分悬殊。在解的性态上表现为,其中一些解变化缓慢,另一些变化快,且相差较悬殊,这类方程常常称为刚性方程,又称为Stiff方程。
刚性方程和非刚性方程对解法中步长选择的要求不同。
刚性方程一般不适合由ode45这类函数求解,而应该采用ode15s等。
如果不能分辨是否是刚性方程,先试用ode45,再用ode15s。

[t,YY,Te,Ye,Ie] = solver('F',tspan,Yo,options,p1,p2,…)
解算ODE初值问题的最完整调用格式。
为了能够解出方程,要用指令odeset确定求解的条件和要求。在MATLAB中,求解方程组的指令都有默认的求解的条件和要求(由结构数组options表示),但可以用odeset修改或重新建立,也可以用odeget去获取已有的“优化选项”的信息。指令odeset和odeget用法介绍如下:
语句格式如下:
options=odeset(‘name1’,value1,’name2’,value2,…)
options=odeset(oldopts,‘name1’,value1,’name2’,value2,…)
options=odeset(oldopts,newopts)
odeset
第一种调用格式是指定各个参数的取值,对不指定取值的参数,取默认值。在不引起混淆的情况下,参数名可以只键入前面的几个字母,也不必区分大小写,如用“abst”表示AbsTol.但数值的输入必须格式正确,否则仍采用默认值。
第二种格式使用了原来的优化选项,但对其中的参数1等指定了新值。
第三种格式合并了两个优化选项oldopts newopts,重复部分取newopts的指定值):
第四种格式可在屏幕上显示如下全部可设置的参数及其默认值。

键入help odeset可查看全部参数的说明,下面对其中几个参数举例说明。
RelTol               相对误差,默认值为1e-3
AbsTol              绝对误差,默认值为1e-6
OutputFcn    输出方式,
默认值为‘odeplot’,其它选项有:
          odeplot       按时间顺序画出全部变量的解
          odephase2    二维相空间中两个变量的图形
          odephase2 三维相空间中三个变量的图形
          odeprint       打印输出
语句格式:
val=odeget(options,’name’)
这里options是由odeset设定的优化选项。
该语句从优化选项中提取指定的参数的取值。如果该参数没有指定值,则返回空阵[]。
options
odeget(options,'Reltol')
options=odeset(options,'Reltol',1e-6)
odeget(options,'Reltol')

function ydot=lorenfcn(t,y)
ydot=[-8/3*y(1)+y(2)*y(3);
    -10*y(2)+10*y(3);
    -y(2)*y(1)+35*y(2)-y(3)];

axis([10 50 -50 50 -50 50])
view(3)
hold on
title('Lorenz Attractor')
options=odeset('OutputFcn','odephas3');
[t,y]=ode23(@lorenfcn,[0 20],[0,0,eps],options);

% EPS    Floating point relative accuracy.
    EPS returns the distance from 1.0 to the next largest
    floating point number. EPS is used as a default tolerance by
    PINV and RANK, as well as several other MATLAB functions.


pdftool
回复

使用道具 举报

飞箭 实名认证       

0

主题

4

听众

53

积分

新人进步奖

群组数学建模

9#
发表于 2009-8-30 01:30 |只看该作者
回复

使用道具 举报

0

主题

7

听众

1304

积分

新人进步奖

群组数学趣味、游戏、IQ等

群组数学建模

群组数模讨论——图论方面

群组我行我数

群组Mathematica研究小组

10#
发表于 2009-9-2 20:52 |只看该作者
回复

使用道具 举报

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-7-20 22:35 , Processed in 0.613865 second(s), 69 queries .

回顶部