基于MATLAB的分子相互做用的表征模型

分子在永不停息地做无规则运动。扩散现象是分子做无规则运动的例证。所谓扩散是指两种不一样的物质相互接触时,彼此进入对方的现象。分子之间既有引力,又有斥力。固体能保持必定的形状和体积且难以拉断,说明分子之间存在引力,而固体和液体分子间保持必定的间隙且很难被压缩,说明分子间又存在斥力。物质内分子间引力和斥力是同时存在的,引力和斥力都随分子间距离的增大而减少,斥力减少得更快。当分子间距为某必定值r0时,引力等于斥力,此时分子处于平衡位置;当分子间距大于r0时,引力起主要做用;当分子间距小于r0时,斥力起主要做用。若分子间距大于分子直径的10倍时,分子间做用力变得十分微弱,能够认为此时分子间做用力为零。编程

MATLAB是一种面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络和图像处理等学科的处理功能于一体,具备极高的编程效率。MATLAB是一个高度集成的系统,MATLAB提供的Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统,可以在连续时间域、离散时间域或者二者的混合时间域里进行建模,它一样支持具备多种采样速率的系统。在过去几年里,Simulink已经成为数学和工业应用中对动态系统进行建模时使用得最为普遍的软件包。数组

3.2 分子函数的设计网络

    在本例中,咱们要经过输入的坐标值,来显示分子的位置,因此咱们首先来设计分子函数。其MATLAB代码以下所示:函数

x=linspace(x1,x2,Mx);spa

y=linspace(y1,y2,My);设计

z=linspace(z1,z2,Mz);orm

load pot.out;blog

data=pot(1:220881);ci

va=reshape(data,My,Mx,Mz);input

load FF.out;

data1=FF(1:220881);

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');

hidden on

daspect([1 1 1])

view(3)

lighting phong

hsurf=isosurface(x, y, z, va,-0.3566);

vertices=hsurf.vertices(:,:);

save vertice.txt vertices -ascii;

faces=hsurf.faces(:,:);

save face.txt faces -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.3 分子定位设计

    本模块,咱们主要设计这么一个功能,输入x,y,z坐标值,而后在相应的位置显示分子。在本章3.2,咱们已经设计了分子函数,下面咱们主要经过输入坐标值来显示分子。其设计代码以下所示:

     其顶层代码为:

clc;

clear;

close all;

NUM=input('请输入的要显示的分子的个数');

for i=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);

hold on;

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,'color','k');

hold on

%(x1,y2,z1)UP

hndl=plot3(x1,y2,z1);

set(hndl,'markersize',30,'marker','.','color','k');

B=text(x1,y2,z1,'B');

set(B,'fontsize',18,'color','k');

hold on

%(x2,y1,z1)UP

hndl=plot3(x2,y1,z1);

set(hndl,'markersize',30,'marker','.','color','k');

C=text(x2,y1,z1,'C');

set(C,'fontsize',18,'color','k');

hold on

%(x2,y2,z1)UP

hndl=plot3(x2,y2,z1);

set(hndl,'markersize',30,'marker','.','color','k');

D=text(x2,y2,z1,'D');

set(D,'fontsize',18,'color','k');

hold on

%(x1,y1,z1)DOWN

hndl=plot3(x1,y1,z2);

set(hndl,'markersize',30,'marker','.','color','k');

E=text(x1,y1,z2,'E');

set(E,'fontsize',18,'color','k');

hold on

%(x1,y2,z2)DOWN

hndl=plot3(x1,y2,z2);

set(hndl,'markersize',30,'marker','.','color','k');

F=text(x1,y2,z2,'F');

set(F,'fontsize',18,'color','k');

hold on

%(x2,y1,z2)DOWN

hndl=plot3(x2,y1,z2);

set(hndl,'markersize',30,'marker','.','color','k');

G=text(x2,y1,z2,'G');

set(G,'fontsize',18,'color','k');

hold on

%(x2,y2,z2)DOWN

hndl=plot3(x2,y2,z2);

set(hndl,'markersize',30,'marker','.','color','k');

H=text(x2,y2,z2,'H');

set(H,'fontsize',18,'color','k');

hold on

lx2=[x1 x2];ly2=[y1 y1];lz2=[z1 z1];

BL2=plot3(lx2,ly2,lz2,'b');

set(BL2,'linewidth',1);

hold on

lx4=[x1 x2];ly4=[y2 y2];lz4=[z1 z1];

BL4=plot3(lx4,ly4,lz4,'b');

set(BL4,'linewidth',1);

hold on

lx8=[x1 x2];ly8=[y2 y2];lz8=[z2 z2];

BL8=plot3(lx8,ly8,lz8,'b');

set(BL8,'linewidth',1);

hold on

lx11=[x1 x2];ly11=[y1 y1];lz11=[z2 z2];

BL11=plot3(lx11,ly11,lz11,'b');

set(BL11,'linewidth',1);

hold on

lx1=[x1 x1];ly1=[y1 y2];lz1=[z1 z1];

BL1=plot3(lx1,ly1,lz1,'b');

set(BL1,'linewidth',1);

hold on

lx7=[x2 x2];ly7=[y1 y2];lz7=[z1 z1];

BL7=plot3(lx7,ly7,lz7,'b');

set(BL7,'linewidth',1);

hold on

lx9=[x2 x2];ly9=[y1 y2];lz9=[z2 z2];

BL9=plot3(lx9,ly9,lz9,'b');

set(BL9,'linewidth',1);

hold on

lx12=[x1 x1];ly12=[y1 y2];lz12=[z2 z2];

BL12=plot3(lx12,ly12,lz12,'b');

set(BL12,'linewidth',1);

hold on

lx3=[x1 x1];ly3=[y1 y1];lz3=[z1 z2];

BL3=plot3(lx3,ly3,lz3,'b');

set(BL3,'linewidth',1);

hold on

lx5=[x1 x1];ly5=[y2 y2];lz5=[z1 z2];

BL5=plot3(lx5,ly5,lz5,'b');

set(BL5,'linewidth',1);

hold on

lx6=[x2 x2];ly6=[y2 y2];lz6=[z1 z2];

BL6=plot3(lx6,ly6,lz6,'b');

set(BL6,'linewidth',1);

hold on

lx10=[x2 x2];ly10=[y1 y1];lz10=[z1 z2];

BL10=plot3(lx10,ly10,lz10,'b');

set(BL10,'linewidth',1);

hold on

咱们对系统进行仿真,能够获得以下的结果。

·输入一个分钟的状况

 

图3-2 分子位置显示

·输入二个分钟的状况

图3-2 多个分子的位置显示仿真效果图