《坐标轮换法matlab程序.doc》由会员分享,可在线阅读,更多相关《坐标轮换法matlab程序.doc(2页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除现代设计方法及其应用matlab程序作业(7.18)源程序:%坐标轮换法cleare=input(输入精度要求e:);X=input(输入初始点:);syms t sa=10*X(1,1)2+106*X(2,1)2+10*X(1,1)*X(2,1)+96*X(1,1)+100*X(2,1);k=1;e1=1;0;e2=0;1;A=X; %A矩阵用于存储每一轮变换所得解C=X+t*e1; %沿e1方向搜索x1=C(1,1);x2=C(2,1);df=diff(10*x12+106*x22+10*x1*x2+96*x1+100*x2);t=solve
2、(df);X=X+t*e1;C=X+s*e2; %沿e2方向搜索x1=C(1,1);x2=C(2,1);df=diff(10*x12+106*x22+10*x1*x2+96*x1+100*x2);s=solve(df);X=X+s*e2;A=A X;b=10*X(1,1)2+106*X(2,1)2+10*X(1,1)*X(2,1)+96*X(1,1)+100*X(2,1);a=a b;B=A(:,k+1)-A(:,k);while double(sqrt(B(1,1)2+B(2,1)2)e syms t s C=X+t*e1; %沿e1方向搜索 x1=C(1,1); x2=C(2,1); df
3、=diff(10*x12+106*x22+10*x1*x2+96*x1+100*x2); t=solve(df); X=X+t*e1; C=X+s*e2; %沿e2方向搜索 x1=C(1,1); x2=C(2,1); df=diff(10*x12+106*x22+10*x1*x2+96*x1+100*x2); s=solve(df); X=X+s*e2; A=A X; b=10*X(1,1)2+106*X(2,1)2+10*X(1,1)*X(2,1)+96*X(1,1)+100*X(2,1); a=a b; B=A(:,k+1)-A(:,k); k=k+1;endY=10*X(1,1)2+10
4、6*X(2,1)2+10*X(1,1)*X(2,1)+96*X(1,1)+100*X(2,1);A %n次迭代得到X值矩阵a %n次迭代得到函数值数组fprintf(轮换次数k=%fn,k);XY调试结果: CoordinateExchange输入精度要求e:0.001输入初始点:4;3A = 4, -63/10, -9991/2120, -2101267/449440, -445384479/95281280, -94421088923/20199631360 3, -37/212, -11209/44944, -2393133/9528128, -507428321/2019963136,
5、 -107575224677/428232184832a = 1918, -447593/2120, -22573759617/95281280, -1014616480722073/4282321848320, -45600924645285239537/192464673150894080, -2049487957296092615516553/8650132270093783531520轮换次数k=5.000000X =-94421088923/20199631360-107575224677/428232184832Y =-2049487957296092615516553/8650132270093783531520机研1203班 宁晖 2012210138【精品文档】第 2 页