⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.m

📁 罚函数法matlab程序.希望对大家有用.
💻 M
字号:
% 利用最速下降法实现下面问题的的求解
%  min  f(x)=2*x1^2+x2^2
%  初始点  x(1)=(1,1) ,e=0.3
%main

clc
clear
sym x;
x1=[1 1];
e=0.3;
t1= sym('t1');  
t2= sym('t2');
x=sym('x');
d1=diff(2*t1^2,1);
d2=diff(t2^2,1);
D1=-subs(d1,t1,x1(1));
D2=-subs(d2,t2,x1(2));
D=(D1^2+D2^2)^0.5;
while(D>e)
    df=2*t1^2+t2^2;
    df=subs(df,{t1,t2},{sym('x1(1)-x*D1'),sym('x1(2)-x*D2')});
    DF=diff(df);
    DF=subs(DF,'x1(1)',x1(1)) ;
    DF=subs(DF,'x1(2)',x1(2));
    DF=subs(DF,'D1',D1);
    DF=subs(DF,'D2',D2);
    X=-1:0.0001:1;
    for i=1:20001            
          if abs(subs(DF,x,X(i)))<0.01
                a=abs(X(i))
                break;
          end
    end
    x1(1)=x1(1)+a*D1;
    x1(2)=x1(2)+a*D2;
    t1= sym('t1');
    t2= sym('t2');
    x=sym('x');
    d1=diff(2*t1^2,1);
    d2=diff(t2^2,1);
    D1=-subs(d1,t1,x1(1));
    D2=-subs(d2,t2,x1(2));
    D=(D1^2+D2^2)^0.5
end
fprintf('最速下降法的最优解是:')
x1
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -