原子距离问题文档格式.docx

上传人:b****3 文档编号:16871429 上传时间:2022-11-26 格式:DOCX 页数:24 大小:68.71KB
下载 相关 举报
原子距离问题文档格式.docx_第1页
第1页 / 共24页
原子距离问题文档格式.docx_第2页
第2页 / 共24页
原子距离问题文档格式.docx_第3页
第3页 / 共24页
原子距离问题文档格式.docx_第4页
第4页 / 共24页
原子距离问题文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

原子距离问题文档格式.docx

《原子距离问题文档格式.docx》由会员分享,可在线阅读,更多相关《原子距离问题文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

原子距离问题文档格式.docx

0.4394

(17,1)

1.3765

(8,6)

0.4945

(22,9)

1.2736

(16,14)

1.0952

(21,1)

1.2722

(13,6)

1.0559

(11,10)

0.5781

(20,16)

1.0422

(5,2)

0.5294

(19,6)

0.6810

(13,10)

0.9254

(23,16)

1.8255

(16,2)

0.6144

(25,6)

0.3587

(19,10)

0.6401

(18,17)

1.4325

(17,2)

0.3766

(8,7)

0.3351

(20,10)

0.2467

(19,17)

1.0851

(25,2)

0.6893

(14,7)

0.2878

(22,10)

0.4727

(20,19)

0.4995

(5,3)

0.9488

(16,7)

1.1346

(18,11)

1.3840

(23,19)

1.2277

(20,3)

0.8000

(20,7)

0.3870

(25,11)

0.4366

(24,19)

1.1271

(21,3)

1.1090

(21,7)

0.7511

(15,12)

1.0307

(23,21)

0.7060

(24,3)

1.1432

(14,8)

0.4439

(17,12)

1.3904

(23,22)

0.8025

【模型建立】

设第i个点所在的位置为

因为所求的是各原子间的位置关系,可以设定第一个点坐标为

,然后再计算其他原子的位置

,使它在最大程度上满足上表中提供的数据,即让

达到最小,其中

表示第i个原子和第j个原子之间的距离,数据如上表中所示。

问题转化为无约束优化:

【算法设计】

上面是一个无约束优化问题,要求

可以归结到无约束规划模型minf(x),令X=[0,X2,X3,X4,……,x25,0,y2,y3,……,y25],调用基本命令fminunc来做,也可以令

调用lsqnonlin命令来做。

【程序】

方法一 用lsqnonlin命令实现

functionf=distance(x,d)

f

(1)=(x(1,3))^2+(x(2,3))^2-d

(1)^2;

%对应条件第4个和第1个原子间距

(2)=(x(1,11))^2+(x(2,11))^2-d

(2)^2;

f(3)=(x(1,12))^2+(x(2,12))^2-d(3)^2;

f(4)=(x(1,16))^2+(x(2,16))^2-d(4)^2;

f(5)=(x(1,20))^2+(x(2,20))^2-d(5)^2;

f(6)=(x(1,4)-x(1,1))^2+(x(2,4)-x(2,1))^2-d(6)^2;

f(7)=(x(1,15)-x(1,1))^2+(x(2,15)-x(2,1))^2-d(7)^2;

f(8)=(x(1,16)-x(1,1))^2+(x(2,16)-x(2,1))^2-d(8)^2;

f(9)=(x(1,24)-x(1,1))^2+(x(2,24)-x(2,1))^2-d(9)^2;

f(10)=(x(1,4)-x(1,2))^2+(x(2,4)-x(2,2))^2-d(10)^2;

f(11)=(x(1,19)-x(1,2))^2+(x(2,19)-x(2,2))^2-d(11)^2;

f(12)=(x(1,20)-x(1,2))^2+(x(2,20)-x(2,2))^2-d(12)^2;

f(13)=(x(1,23)-x(1,2))^2+(x(2,23)-x(2,2))^2-d(13)^2;

f(14)=(x(1,4)-x(1,3))^2+(x(2,4)-x(2,3))^2-d(14)^2;

f(15)=(x(1,11)-x(1,3))^2+(x(2,11)-x(2,3))^2-d(15)^2;

f(16)=(x(1,23)-x(1,3))^2+(x(2,23)-x(2,3))^2-d(16)^2;

f(17)=(x(1,7)-x(1,5))^2+(x(2,7)-x(2,5))^2-d(17)^2;

f(18)=(x(1,12)-x(1,5))^2+(x(2,12)-x(2,5))^2-d(18)^2;

f(19)=(x(1,18)-x(1,5))^2+(x(2,18)-x(2,5))^2-d(19)^2;

f(20)=(x(1,24)-x(1,5))^2+(x(2,24)-x(2,5))^2-d(20)^2;

f(21)=(x(1,7)-x(1,6))^2+(x(2,7)-x(2,6))^2-d(21)^2;

f(22)=(x(1,13)-x(1,6))^2+(x(2,13)-x(2,6))^2-d(22)^2;

f(23)=(x(1,15)-x(1,6))^2+(x(2,15)-x(2,6))^2-d(23)^2;

f(24)=(x(1,19)-x(1,6))^2+(x(2,19)-x(2,6))^2-d(24)^2;

f(25)=(x(1,20)-x(1,6))^2+(x(2,20)-x(2,6))^2-d(25)^2;

f(26)=(x(1,13)-x(1,7))^2+(x(2,13)-x(2,7))^2-d(26)^2;

f(27)=(x(1,17)-x(1,7))^2+(x(2,17)-x(2,7))^2-d(27)^2;

f(28)=(x(1,12)-x(1,8))^2+(x(2,12)-x(2,8))^2-d(28)^2;

f(29)=(x(1,14)-x(1,8))^2+(x(2,14)-x(2,8))^2-d(29)^2;

f(30)=(x(1,21)-x(1,8))^2+(x(2,21)-x(2,8))^2-d(30)^2;

f(31)=(x(1,10)-x(1,9))^2+(x(2,10)-x(2,9))^2-d(31)^2;

f(32)=(x(1,12)-x(1,9))^2+(x(2,12)-x(2,9))^2-d(32)^2;

f(33)=(x(1,18)-x(1,9))^2+(x(2,18)-x(2,9))^2-d(33)^2;

f(34)=(x(1,19)-x(1,9))^2+(x(2,19)-x(2,9))^2-d(34)^2;

f(35)=(x(1,21)-x(1,9))^2+(x(2,21)-x(2,9))^2-d(35)^2;

f(36)=(x(1,17)-x(1,10))^2+(x(2,17)-x(2,10))^2-d(36)^2;

f(37)=(x(1,24)-x(1,10))^2+(x(2,24)-x(2,10))^2-d(37)^2;

f(38)=(x(1,14)-x(1,11))^2+(x(2,14)-x(2,11))^2-d(38)^2;

f(39)=(x(1,16)-x(1,11))^2+(x(2,16)-x(2,11))^2-d(39)^2;

f(40)=(x(1,14)-x(1,12))^2+(x(2,14)-x(2,12))^2-d(40)^2;

f(41)=(x(1,18)-x(1,12))^2+(x(2,18)-x(2,12))^2-d(41)^2;

f(42)=(x(1,14)-x(1,13))^2+(x(2,14)-x(2,13))^2-d(42)^2;

f(43)=(x(1,15)-x(1,13))^2+(x(2,15)-x(2,13))^2-d(43)^2;

f(44)=(x(1,19)-x(1,15))^2+(x(2,19)-x(2,15))^2-d(44)^2;

f(45)=(x(1,22)-x(1,15))^2+(x(2,22)-x(2,15))^2-d(45)^2;

f(46)=(x(1,17)-x(1,16))^2+(x(2,17)-x(2,16))^2-d(46)^2;

f(47)=(x(1,18)-x(1,16))^2+(x(2,18)-x(2,16))^2-d(47)^2;

f(48)=(x(1,19)-x(1,18))^2+(x(2,19)-x(2,18))^2-d(48)^2;

f(49)=(x(1,22)-x(1,18))^2+(x(2,22)-x(2,18))^2-d(49)^2;

f(50)=(x(1,23)-x(1,18))^2+(x(2,23)-x(2,18))^2-d(50)^2;

f(51)=(x(1,22)-x(1,20))^2+(x(2,22)-x(2,20))^2-d(51)^2;

f(52)=(x(1,22)-x(1,21))^2+(x(2,22)-x(2,21))^2-d(52)^2;

clearall

x0=[zeros(1,24);

ones(1,24)];

d=[0.9607,0.4399,0.8143,1.3765,1.2722,0.5294,0.6144,0.3766,0.6893,...

 0.9488,0.8000,1.1090,1.1432,0.4758,1.3402,0.7006,0.4945,1.0559,...

 0.6810,0.3587,0.3351,0.2878,1.1346,0.3870,0.7511,0.4439,0.8363,...

  0.3208,0.1574,1.2736,0.5781,0.9254,0.6401,0.2467,0.4727,1.3840,...

 0.4366,1.0307,1.3904,0.5725,0.7660,0.4394,1.0952,1.0422,1.8255,...

1.4325,1.0851,0.4995,1.2277,1.1271,0.7060,0.8052]';

%设定初值

[x,norms]=lsqnonlin(@distance,x0,[],[],[],d);

p=x'

 %p第一行即为第二个原子的横、纵坐标;

p第二行为第三个原子的横、纵坐标……

a=[0,x(1,:

)];

b=[0,x(2,:

)];

plot(a,b,'

*');

%画散点图表示出原子的位置

【输出结果】

每个原子的位置如下(即第二个原子的位置为(1.2378,0.0746),第三个原子为(1,6142,1,。

1211),……):

p=

 1.2378 0.0746

  1.61421.1211

   0.5485 0.7778

 0.9121  0.4836

 0.85461.1533

0.7009  0.4533

0.9871 0.6573

0.4694  0.2363

 0.8326   1.0437

 0.4356 0.6211

-0.0650 -0.4184

 0.8165   0.1140

 0.7351 0.2500

0.39710.4986

1.82290.2932

 1.3241  -0.3717

  1.7657 0.9905

1.3514 0.7020

 0.8921 0.7787

0.50401.1701

  1.31061.1878

0.8031  1.8060

 0.5290 1.4757

 0.89460.7093

为了形象直观地表示出各点的位置,画出如下的散点图:

方法二  用fminunc实现

function f=distance1(x,d)

f=(x(1,3))^2+(x(2,3))^2-d

(1)^2;

f=f+(x(1,11))^2+(x(2,11))^2-d

(2)^2;

f=f+(x(1,12))^2+(x(2,12))^2-d(3)^2;

f=f+(x(1,16))^2+(x(2,16))^2-d(4)^2;

f=f+(x(1,20))^2+(x(2,20))^2-d(5)^2;

f=f+(x(1,4)-x(1,1))^2+(x(2*5-2)-x(2,1))^2-d(6)^2;

f=f+(x(1,15)-x(1,1))^2+(x(2,15)-x(2,1))^2-d(7)^2;

f=f+(x(1,16)-x(1,1))^2+(x(2,16)-x(2,1))^2-d(8)^2;

f=f+(x(1,24)-x(1,1))^2+(x(2,24)-x(2,1))^2-d(9)^2;

f=f+(x(1,4)-x(1,2))^2+(x(2,4)-x(2,2))^2-d(10)^2;

f=f+(x(1,19)-x(1,2))^2+(x(2,19)-x(2,2))^2-d(11)^2;

f=f+(x(1,20)-x(1,2))^2+(x(2,20)-x(2,2))^2-d(12)^2;

f=f+(x(1,23)-x(1,2))^2+(x(2,23)-x(2,2))^2-d(13)^2;

f=f+(x(1,4)-x(1,3))^2+(x(2,4)-x(2,3))^2-d(14)^2;

f=f+(x(1,11)-x(1,3))^2+(x(2,11)-x(2,3))^2-d(15)^2;

f=f+(x(1,23)-x(1,3))^2+(x(2,23)-x(2,3))^2-d(16)^2;

f=f+(x(1,7)-x(1,5))^2+(x(2,7)-x(2,5))^2-d(17)^2;

f=f+(x(1,12)-x(1,5))^2+(x(2,12)-x(2,5))^2-d(18)^2;

f=f+(x(1,18)-x(1,5))^2+(x(2,18)-x(2,5))^2-d(19)^2;

f=f+(x(1,24)-x(1,5))^2+(x(2,24)-x(2,5))^2-d(20)^2;

f=f+(x(1,7)-x(1,6))^2+(x(2,7)-x(2,6))^2-d(21)^2;

f=f+(x(1,13)-x(1,6))^2+(x(2,13)-x(2,6))^2-d(22)^2;

f=f+(x(1,15)-x(1,6))^2+(x(2,15)-x(2,6))^2-d(23)^2;

f=f+(x(1,19)-x(1,6))^2+(x(2,19)-x(2,6))^2-d(24)^2;

f=f+(x(1,20)-x(1,6))^2+(x(2,20)-x(2,6))^2-d(25)^2;

f=f+(x(1,13)-x(1,7))^2+(x(2,13)-x(2,7))^2-d(26)^2;

f=f+(x(1,17)-x(1,7))^2+(x(2,17)-x(2,7))^2-d(27)^2;

f=f+(x(1,12)-x(1,8))^2+(x(2,12)-x(2,8))^2-d(28)^2;

f=f+(x(1,14)-x(1,8))^2+(x(2,14)-x(2,8))^2-d(29)^2;

f=f+(x(1,21)-x(1,8))^2+(x(2,21)-x(2,8))^2-d(30)^2;

f=f+(x(1,10)-x(1,9))^2+(x(2,10)-x(2,9))^2-d(31)^2;

f=f+(x(1,12)-x(1,9))^2+(x(2,12)-x(2,9))^2-d(32)^2;

f=f+(x(1,18)-x(1,9))^2+(x(2,18)-x(2,9))^2-d(33)^2;

f=f+(x(1,19)-x(1,9))^2+(x(2,19)-x(2,9))^2-d(34)^2;

f=f+(x(1,21)-x(1,9))^2+(x(2,21)-x(2,9))^2-d(35)^2;

f=f+(x(1,17)-x(1,10))^2+(x(2,17)-x(2,10))^2-d(36)^2;

f=f+(x(1,24)-x(1,10))^2+(x(2,24)-x(2,10))^2-d(37)^2;

f=f+(x(1,14)-x(1,11))^2+(x(2,14)-x(2,11))^2-d(38)^2;

f=f+(x(1,16)-x(1,11))^2+(x(2,16)-x(2,11))^2-d(39)^2;

f=f+(x(1,14)-x(1,12))^2+(x(2,14)-x(2,12))^2-d(40)^2;

f=f+(x(1,18)-x(1,12))^2+(x(2,18)-x(2,12))^2-d(41)^2;

f=f+(x(1,14)-x(1,13))^2+(x(2,14)-x(2,13))^2-d(42)^2;

f=f+(x(1,15)-x(1,13))^2+(x(2,15)-x(2,13))^2-d(43)^2;

f=f+(x(1,19)-x(1,15))^2+(x(2,19)-x(2,15))^2-d(44)^2;

f=f+(x(1,22)-x(1,15))^2+(x(2,22)-x(2,15))^2-d(45)^2;

f=f+(x(1,17)-x(1,16))^2+(x(2,17)-x(2,16))^2-d(46)^2;

f=f+(x(1,18)-x(1,16))^2+(x(2,18)-x(2,16))^2-d(47)^2;

f=f+(x(1,19)-x(1,18))^2+(x(2,19)-x(2,18))^2-d(48)^2;

f=f+(x(1,22)-x(1,18))^2+(x(2,22)-x(2,18))^2-d(49)^2;

f=f+(x(1,23)-x(1,18))^2+(x(2,23)-x(2,18))^2-d(50)^2;

f=f+(x(1,22)-x(1,20))^2+(x(2,22)-x(2,20))^2-d(51)^2;

f=f+(x(1,22)-x(1,21))^2+(x(2,22)-x(2,21))^2-d(52)^2;

clearall;

d=[0.9607,0.4399,0.8143,1.3765,1.2722,0.5294,0.6144,0.3766,0.6893,0.9488,0.8000,1.1090,1.1432,0.4758,1.3402,0.7006,0.4945,1.0559,0.6810,0.3587,0.3351,0.2878,1.1346,0.3870,0.7511,0.4439,0.8363,0.3208,0.1574,1.2736,0.5781,0.9254,0.6401,0.2467,0.4727,1.3840,0.4366,1.0307,1.3904,0.5725,0.7660,0.4394,1.0952,1.0422,1.8255,1.4325,1.0851,0.4995,1.2277,1.1271,0.7060,0.8052]';

x0=[zeros(1,26),ones(1,24)];

opt = optimset('

tolx'

1e-16,'

tolf',1e-16);

[x,z,exit1,out1]=fminunc(@distance1,x0,opt,d);

p=[0,0;

x(1:

24)',x(25:

48)'

];

a=[0,x(1:

24)];

b=[0,x(25:

48)];

plot(a,b,'

%画散点图表示原子位置

每个原子的位置如下(即第二个原子的位置为(-0.6818,0.6856),第二个原子为(-0.3563,0.2298),……):

p=

     0 0

 -0.68180.6856

 -0.35630.2298

-0.0530  0.9715

 -0.4866  1.1721

0.0506 1.0700

 0.3992  0.6744

0.05470.5349

 -0.3948 0.3789

-0.1388   1.0752

0.41900.9660

-0.3796  -0.3227

-0.7430 0.3687

 0.1511 0.9167

  -0.2615  0.6897

 -0.5621 0.0830

 -0.9836 0.9375

 -0.2070 -0.2659

-0.01440.4168

0.0717  0.9085

  -0.01171.2804

-0.0890 1.6054

 0.6877 1.4172

 -0.6661 1.3305

0.01250.7379

画出位置散点图如下:

【结果分析】

(1)关于lsqononlin与fminunc精确性的探讨

ﻩ用上面两种不同的命令所求出来的结果并不一样,可能是因为模型建立稍有差别导致算法不同而引起的。

为了找到更适合解决本题的模型,在命令窗口中输入以下命令比较两种算法的精确性。

对于方法一(用lsqnonlin命令实现)

>

 d=[0.9607,0.4399,0.8143,1.3765,1.2722,0.5294,0.6144,0.3766,0.6893,...

  0.9488,0.8000,1.1090,1.1432,0.4758,1.3402,0.7006,0.4945,1.0559,...

0.6810,0.3587,0.3351,0.2878,1.1346,0.3870,0.7511,0.4439,0.8363,...

 0.3208,0.1574,1.2736,0.5781,0.9254,0.6401,0.2467,0.4727,1.3840,...

 0.4366,1.0307,1.3904,0.5725,0.7660,0.4394,1.0952,1.0422,1.8255,...

1.4325,1.0851,0.4995,1.2277,1.1271,0.7060,0.8052]'

;

x=p';

f(1)=(x(1,3))^2+(x(2,3))^2-d

(1)^2;

%对应条件第4个和第1个原子间距

f

(2)=(x(1,11))^2+(x(2,11))^2-d(2)^2;

f(3)=(x(1,12))^2+(x(2,12))^2-d(3)^2;

f(4)=(x(1,16))^2+(x(2,16))^2-d(4)^2;

f(5)=(x(1,20))^2+(x(2,20))^2-d(5)^2;

f(6)=(x(1,4)-x(1,1))^2+(x(2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1