word版本hslogic基于MATLAB的分子相互作用的表征模型Word文档格式.docx
《word版本hslogic基于MATLAB的分子相互作用的表征模型Word文档格式.docx》由会员分享,可在线阅读,更多相关《word版本hslogic基于MATLAB的分子相互作用的表征模型Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
取向力:
存在于极性分子偶极子-偶极子间的相互作用力;
诱导力:
包括偶极子-感应偶极子间的相互作用力;
弥散力:
非极性分子因为电子与原子核的运动,互相感应产生随时间涨落的瞬时偶极矩间的相互作用力,这种引力普遍存在于所有分子中。
除上述物理作用力外,在分子间作用力和化学键作用之间还存在一些较弱的化学键作用,这种作用有饱和性和方向性,但作用能比化学键能小得多,键长较长,现在归为分子间的弱键相互作用。
以上就是分子相互作用的基本概念。
本课题,我们将基于分子之间的相互作用,利用MATLAB来对分子相互作用的表征模型进行仿真与分析。
并得到输入xyz坐标值得到分子的空间位置的仿真结果。
第二章MATLAB简介
2.1MATLAB的概况
MATLAB是矩阵实验室(Matrix Laboratory)之意。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。
在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类,一类是数值计算型软件,如MATLAB、Xmath、Gauss等,这类软件长于数值计算,对处理大批数据效率高;
另一类是数学分析型软件,Mathematica、Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低。
MATLAB是矩阵实验室(Matrix Laboratory)的缩写。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多。
当前流行的MATLAB7.0/Simulink3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox),工具包又可以分为功能性工具包和学科工具包,功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包。
控制工具包,信号处理工具包,通信工具包等都属于此类。
开放性使MATLAB广受用户欢迎,除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写的程序构造新的专用工具包。
2.2MATLAB产生的历史背景和发展历程
在70年代中期,CleveMoler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。
EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库。
在当时,这两个程序库代表矩阵运算的最高水平。
到70年代后期,身为美国NewMEXico大学计算机系系主任的CleveMoler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序。
CleveMoler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合。
在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。
1983年春天,CleveMoler到Standford大学讲学,MATLAB深深地吸引了工程师JohnLittle。
JohnLittle敏锐地觉察到MATLAB在工程领域的广阔前景。
同年,他和CleveMoler,SteveBangert一起,用C语言开发了第二代专业版。
这一代的MATLAB语言同时具备了数值计算和数据图示化的功能。
1984年,CleveMoler和JohnLittle成立了MathWorks公司。
正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。
在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。
这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。
MATLAB的出现,为各国科学家开发学科软件提供了新的基础。
在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。
MathWorks公司1993年推出了MATLAB4.0版,1995年推出4.2C版(forwin3.X)1997年推出5.0版。
1999年推出5.3版。
MATLAB5.X较MATLAB4.X无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,在Netscape3.0或IE4.0及以上版本,AcrobatReader中可以方便地浏览。
2007年又推出了最新的7.0版,更加完善了Matlab的强大功能。
时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。
在国外,MATLAB已经经受了多年考验。
在欧美等高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;
成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。
在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。
在国内,特别是工程界,MATLAB一定会盛行起来。
可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。
经几年的校间流传,在Little的推动下,由Little、Moler、SteveBangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。
从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。
MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。
在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。
到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。
Mathcad因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。
MathWorks公司于1993年推出MATLAB4.0版本,从此告别DOS版。
4.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:
推出了SIMULINK。
这是一个交互式操作的动态系统建模、仿真、分析集成环境。
它的出现使人们有可能考虑许多以前不得不做简化假设的非线性因素、随机因素,从而大大提高了人们对非线性、随机动态系统的认知能力。
开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。
推出了符号计算工具包。
1993年MathWorks公司从加拿大滑铁卢大学购得Maple的使用权,以Maple为“引擎”开发了SymbolicMathToolbox1.0。
MathWorks公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。
构成了Notebook和MathWorks公司瞄准应用范围最广的Word,运用DDE和OLE,实现了MATLAB与Word的无缝连接,从而为专业科技工作者创造了融入科学计算、图形可视、文字处理于一体的高水准环境。
1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版。
与4.x相比,现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。
关于MATLAB5.x的特点下节将作更详细的介绍。
在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。
如美国NationalInstruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。
又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、仪器等都接受MATLAB的支持。
2.3MATLAB优点
MATLAB之所以如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其它语言的特点。
正如同Fortran和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称为第4代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。
MATLAB的主要特点:
功能强大
MATLAB具有功能强劲的工具箱,其包含两个部分:
核心部分和各种可选的工具箱。
核心部分中,有数百个核心内部函数。
其工具箱又可分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能。
功能性工具箱能用于多种学科,而学科性工具箱是专业性比较强的,例如controltoolbox,imageprocessingtoolbox,signalprocessingtoolbox等。
这些工具箱都是由该领域内的学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,就能够直接进行高、精、尖的研究。
MATLAB之所以成为世界顶级的科学计算与数学应用软件,是因为它随着版本的升级与不断完善而具有越来越强大的功能,主要有:
数值计算功能;
符号计算功能;
数据分析功能;
动态仿真功能;
图形文字统一处理功能。
界面友好,编程效率高
MATLAB突出的特点就是简洁。
它用更直观的、符合人类思维习惯的代码代替了C和Fortran语言的冗长代码,给用户带来的是最直观、最简洁的程序开发环境。
MATLAB语言简洁紧凑,使用方便灵活,库函数极其丰富,程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
由于库函数都是由本领域的专家编写的,因此用户不必担心函数的可靠性。
可以说,用MATLAB进行科学开发是站在专家的肩膀上来完成的。
开放性强
MATLAB有很好的可扩充性,可以把它当成一种更高级的语言去使用。
各种工具箱中的函数可以互相调用,也可以由用户更改。
MATLAB支持用户对其函数进行二次开发,用户的应用程序可以作为新的函数添加到相应的工具箱中。
2.4Simulink简介
Simulink是一个动态系统建模、仿真和分析的软件包,它是一种基于MATLAB的框图设计环境,支持线性系统和非线性系统,可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。
为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI),这个创建过程只需要单击和拖动鼠标操作就能完成。
利用这个接口,用户可以像用笔在草纸上绘制模型一样,只要构建出系统的方块图即可,这与以前的仿真软件包要求解算微分方程和编写算法语言程序不同,它提供的是一种更快捷、更直接明了的方式,而且用户可以立即看到系统的仿真结果。
Simulink中包括了许多实现不同功能的模块库,如Sources(输入源模块库)、Sinks(输出模块库)、Mathoperations(数学模块库),以及线性模块和非线性模块等各种组件模块库。
用户也可以自定义和创建自己的模块,利用这些模块,用户可以创建层次化的系统模型,可以自上而下或自下而上地阅读模型,也就是说,用户可以查看最顶层的系统,然后通过双击模块进入下层的子系统查看模型,这不仅方便了工程人员的设计,而且可以使自己的模型方块图功能更清晰,结构更合理。
创建了系统模型后,用户可以利用Simulink菜单或在MATLAB命令窗口中键入命令的方式选择不同的积分方法来仿真系统模型。
对于交互式的仿真过程,使用菜单是非常方便的,但如果要运行大量的仿真,使用命令行方法则非常有效。
此外,利用示波器模块或其他的显示模块,用户可以在仿真运行的同时观察仿真结果,而且还可以在仿真运行期间改变仿真参数,并同时观察改变后的仿真结果,最后的结果数据也可以输出到MATLAB工作区进行后续处理,或利用命令在图形窗口中绘制仿真曲线。
Simulink中的模型分析工具包括线性化工具和调整工具,这可以从MATLAB命令行获取。
MATLAB及其工具箱内还有许多其他的适用于不同工程领域的分析工具,由于MATLAB和Simulink是集成在一起的,因此任何时候用户都可以在这两个环境中仿真、分析和修改模型。
与其他仿真软件相比,MATLAB/Simulink具有以下特色:
(l)框图式建模。
Simulink提供了一个图形化的建模环境,通过鼠标单击和拖拉操作进行框图式建模;
(2)采用模块组合的方法来创建动态系统的计算机模型,对于比较复杂的非线性系统,效果更为明显;
(3)支持混合系统仿真,即系统中包含连续采样时间和离散采样时间;
(4)支持多速率系统仿真,即系统中存在以不同速率运行的组件;
(5)支持混合编程。
Simulink提供了一种函数规则—S函数,s函数可以是一个M文件、C语言程序或者其他高级语言程序,程序自由度大,可移植性好;
(6)开放性。
允许用户定制自己的模块和模块库。
MATLAB与Simulink集成在一起,无论何时在任何环境下都可以进行系统的建模、分析和仿真。
2.5基于MATLAB的系统仿真概要
MATLAB仿真有两种途径:
(1)MATLAB可以在SIMULINK窗口上进行面向系统结构方框图的系统仿真;
(2)用户可以在MATLAB的COMMAND窗口下,用运行m文件,调用指令和各种用于系统仿真的函数,进行系统仿真。
下面介绍在MATLAB上实现几类基本仿真。
计算机仿真,概括地说是一个“建模—实验—分析”的过程,即仿真不单纯是对模型的实验,还包括从建模到实验再到分析的全过程。
因此进行一次完整的仿真包括以下步骤:
列举并列项目:
每一项研究都应从说明问题开始,问题由决策者提供或由熟悉问题的分析者提供。
设置目标及完整的项目计划:
目标表示仿真要回答的问题、系统方案的说明。
项目计划包括人数、研究费用以及每一阶段工作所需时间。
建立模型和收集数据:
模型和实际系统没有必要一一对应,模型只需描述实际系统的本质或者描述系统中所研究部分的本质。
因此,最好从简单的模型开始,然后进一步建立更复杂的模型。
·
编制程序和验证:
利用数学公式、逻辑公式和算法等来表示实际系统的内部状态和输入/输出的关系。
建模者必须决定是采用通用语言如MATLAB、FORTRAN、C还是专用仿真语言来编制程序。
在本教材中,我们选择的是MATLAB和其动态仿真工具Simulink。
确认:
确认指确定模型是否精确地代表实际系统。
它不是一次完成,而是比较模型和实际系统特性的差异,不断对模型进行校正的迭代过程。
实验设计:
确定仿真的方案、初始化周期长度、仿真运行长度以及每次运行的重复次数。
生产性运行和分析:
通常用于估计被仿真系统设计的性能量度。
利用理论定性分析、经验定性分析或系统历史数据定量分析来检验模型的正确性,利用灵敏度分析等手段来检验模型的稳定性。
第三章基于MATLAB的分子位置定位算法的设计与实现
3.1基于MATLAB的计算机仿真简介
3.2分子函数的设计
在本例中,我们要通过输入的坐标值,来显示分子的位置,所以我们首先来设计分子函数。
其MATLAB代码如下所示:
x=linspace(x1,x2,Mx);
y=linspace(y1,y2,My);
z=linspace(z1,z2,Mz);
loadpot.out;
data=pot(1:
220881);
va=reshape(data,My,Mx,Mz);
loadFF.out;
data1=FF(1:
w=reshape(data1,My,Mx,Mz);
p=patch(isosurface(x,y,z,va,-0.36073643,w));
isonormals(x,y,z,va,p)
set(p,'
FaceColor'
'
interp'
EdgeColor'
none'
);
hiddenon
daspect([111])
view(3)
lightingphong
hsurf=isosurface(x,y,z,va,-0.3566);
vertices=hsurf.vertices(:
:
savevertice.txtvertices-ascii;
faces=hsurf.faces(:
saveface.txtfaces-ascii;
linspace
x=linspace(a1,a2,a3);
a1为第一个元素,a2为最末一个元素,a3表示x共有a3个元素,每个元素间距相等。
load
加载外部数据。
reshape
可以对数组进行重组变形,Y=reshape(X,m,n)前提条件Y与X中所含的元素个数必须相等。
则上述命令将X转为m*n的矩阵。
isosurface
形成的曲面的点集
那么,我们可以得到如下的仿真结果。
图3-1分子函数仿真图
3.3分子定位设计
本模块,我们主要设计这么一个功能,输入x,y,z坐标值,然后在相应的位置显示分子。
在本章3.2,我们已经设计了分子函数,下面我们主要通过输入坐标值来显示分子。
其设计代码如下所示:
其顶层代码为:
clc;
clear;
closeall;
NUM=input('
请输入的要显示的分子的个数'
fori=1:
NUM
x1=input('
请输入分子X轴的坐标上限MIN\n'
x2=input('
请输入分子X轴的坐标下限MAX\n'
y1=input('
请输入分子Y轴的坐标上限MIN\n'
y2=input('
请输入分子Y轴的坐标下限MAX\n'
z1=input('
请输入分子Z轴的坐标上限MIN\n'
z2=input('
请输入分子Z轴的坐标下限MAX\n'
fenzi(x1,x2,y1,y2,z1,z2);
holdon;
end
为了使系统的显示效果根据的明显,我们修改分子函数。
……………………………………
%(x1,y1,z1)UP
hndl=plot3(x1,y1,z1);
set(hndl,'
markersize'
30,'
marker'
'
.'
color'
k'
A=text(x1,y1,z1,'
A'
set(A,'
fontsize'
18,'
holdon
%(x1,y2,z1)UP
hndl=plot3(x1,y2,z1);
B=text(x1,