首页 > 编程知识 正文

matlab函数速查,matlab求二元函数的最小值

时间:2023-05-05 20:10:45 阅读:137032 作者:2871

原程序代码

函数[ min,n]=fastest_dirction(x0,y0,eps ) ) )

%最速下降法,初始点,给出误差

%结果为收敛回答和迭代次数

syms x_1;

syms x_2;

f=(x_1-2) )4) x_1-2) )2*x_2^2) x_21 ) ^2; %计算的函数

v=[x_1,x_2];

j=Jacobian(f,v );

tidu=[subs(j ) 1、[x_1,x_2]、[x0,y0] )、subs ) j ) 2、[x_1,x_2]、[x0,y0];

temp=sqrt () tidu1) )2) tidu ) )2);

x1=x0; y1=y0;

n=0;

syms kk;

while(tempeps ) %迭代

d=-Tidu; %下降方向、负梯度方向

f1=x1kk*d(1; f2=y1kk*d(2;

ft=[subs(j ) 1、[x_1,x_2]、[f1,f2] )、subs ) j ) 2、[x_1,x_2]、[f1,f2];

phi=sqrt () ft(1) )2) ft ) )2);

lm=gold(phi,0,1,0.00001 ); 调用%近似黄金分割法,设初始搜索区间为[ 0,1 ],设eps=0.00001

x0=x1lm*d(1; y0=y1lm*d(2;

tidu=[subs(j ) 1、[x_1,x_2]、[x0,y0] )、subs ) j ) 2、[x_1,x_2]、[x0,y0];

temp=sqrt () tidu1) )2) tidu ) )2);

x1=x0; y1=y0;

n=n 1; %累计迭代次数

结束

min=[x0,y0];

%%定义近似黄金分割函数

函数lm=gold (f,a0,b0,eps ) ) )。

syms x; 格式龙; 提高%精度,定义为倍精度

syms kk;

u=A0.382*(B0-A0 );

v=A0.618*(B0-A0 );

k=0;

a=a0; b=b0;

array (k1,1 )=a; array (k1,2 )=b;

while(ABS(B-a )=eps ) ) )

fu=Subs(f,kk,u );

FV=subs(f,kk,v );

if(fu

b=v;

v=u;

u=a0.382*(B-a );

k=k 1;

else

a=u;

u=v;

v=a0.618*(B-1 );

k=k 1;

结束

array (k1,1 )=a; array (k1,2 )=b;

结束

lm=(ab )/2;

运行m文件的总是在运算。 我想没有出现循环,但我不知道哪里发生了错误。 请上帝看,告诉我

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。