现代设计方法及其应用matlab程序作业(7.18)
源程序:
%坐标轮换法
clear
e=input('输入精度要求e:');
X=input('输入初始点:');
syms t s
a=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*x1^2+106*x2^2+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*x1^2+106*x2^2+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=diff(10*x1^2+106*x2^2+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*x1^2+106*x2^2+10*x1*x2+96*x1+100*x2);
s=solve(df);
X=X+s*e2;
A=[A X];