日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

鲍威尔法源程序码matlab,鲍威尔算法matlab程序.doc

發布時間:2024/8/1 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鲍威尔法源程序码matlab,鲍威尔算法matlab程序.doc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

function f=fun(x)

f=10*(x(1)+x(2)-5)^2+(x(1)-x(2))^2;

function f=fx(x0,alpha,s)

x1=x0+alpha*s;

f=fun(x1);

function f=fsearch(x0,s)

%利用進退法確定高低高區間

alpha1=0;

h=0.1;

alpha2=alpha1+h;

f1=fx(x0,alpha1,s);

f2=fx(x0,alpha2,s);

if f1>f2

alpha3=alpha2+h;

f3=fx(x0,alpha3,s);

while f2>f3

alpha1=alpha2;

alpha2=alpha3;

alpha3=alpha3+h;

f2=f3;

f3=fx(x0,alpha3,s);

end

else

h=-h;

v=alpha1;

alpha1=alpha2;

alpha2=v;

v=f1;

f1=f2;

f2=v;

alpha3=alpha2+h;

f3=fx(x0,alpha3,s);

while f2>f3

alpha1=alpha2;

alpha2=alpha3;

alpha3=alpha3+h;

f2=f3;

f3=fx(x0,alpha3,s);

end

end

a=min(alpha1,alpha3);

b=max(alpha1,alpha3);

%利用黃金分割點法求解

alpha1=a+0.382*(b-a);

alpha2=a+0.618*(b-a);

f1=fx(x0,alpha1,s);

f2=fx(x0,alpha2,s);

while abs(a-b)>0.001

if f1>f2

a=alpha1;

alpha1=alpha2;

f1=f2;

alpha2=a+0.618*(b-a);

f2=fx(x0,alpha2,s);

else

b=alpha2;

alpha2=alpha1;

f2=f1;

alpha1=a+0.382*(b-a);

f1=fx(x0,alpha1,s);

end

end

f=0.5*(a+b);

clear

%初始點

x0=[0;0];

%搜索方向

e1=[1;0];

e2=[0;1];

G0=fun(x0);

F0=G0;

%第一次迭代

%沿著e1

alpha1=fsearch(x0,e1);

x1=x0+alpha1*e1;

F1=fun(x1);

delta1=F0-F1;

% 沿著方向e2;

alpha2=fsearch(x1,e2);

x2=x1+alpha2*e2;

F2=fun(x2);

G2=F2;

delta2=F1-F2;

deltam=max(delta1,delta2);

%映射點

x3=2*x2-x0;

G3=fun(x3);

if G3

^2

s=x2-x0;

%方向替換

e1=e2;

e2=s;

% 沿著方向s 進行搜索

alpha3=fsearch(x2,s);

x3=x2+alpha2*s;

x0=x3;

else

if F2>G3

x0=x3;

else

x0=x2;

end

End

子文件JT,JH

進退法程序代碼?56555 .

function [minx,maxx] = minJT(f,x0,h0,eps)

format long;

if nargin == 3

eps = 1.0e-6;

end

x1 = x0;

k = 0;

h = h0;

while 1

x4 = x1 + h;

k = k+1;

f4 = subs(f, findsym(f),x4);

f1 = subs(f, findsym(f),x1);

if f4 < f1

x2 = x1;

x1 = x4;

f2 = f1;

f1 = f4;

h = 2*h;

else

if k==1

h = -h;

x2 = x4;

f2 = f4;

else

x3 = x2;

x2 = x1;

x1 = x4;

break;

end

end

end

minx = min(x1,x3);

maxx = x1+x3 - minx;

format short;

黃金分割法程序代碼?56555 .

function [x,minf] = minHJ(f,a,b,eps)

format long;

if nargin == 3

eps = 1.0e-6;

end

l = a + 0.382*(b-a);

u = a + 0.618*(b-a);

k=1;

tol = b-a;

while tol>eps && k<100000

fl = subs(f , findsym

總結

以上是生活随笔為你收集整理的鲍威尔法源程序码matlab,鲍威尔算法matlab程序.doc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。