Исследование итерационного метода "золотого сечения" решения задачи одномерной оптимизации, страница 3

 2.00  0.1D-01      -2.00  0.6408D-03      -3.1932      6.629  0.7864D-02  14

 2.00  0.1D+00      -1.00  0.2027D-02      -2.6931      6.629  0.8721D-01   9

Графики

U(X)

 

Рисунок 2

На рисунке 2 изображён график целевой функции u(x).

KM

 

Рисунок 3

На рисунке 3 изображён график зависимости KM = f(DK)

Lg Eo

 

KM

 

Рисунок 4

На рисунке 4 изображён графики зависимостей lg Eо = f(lg e), KM = f(lg e)

 

 

d

 

Рисунок 5

На рисунке 5 изображены графики = f(k) (сходимость оценки проектного параметра к истинному значению x*) и d = f(k) (изменение длины интервала неопределенности)

Вывод

Увеличение интервала ведет к увеличению итераций, увеличение значения параметра останова уменьшает  ошибку вычислений оптимального значения проектного параметра.

Приложение

Листинг головной программы.

      program laba6

       integer nv,km

       real*8 dk,xi,ui,dlo,dlk,eps,z1,z2,x,u,eu,euo,em,emo

       character*64 name

       nv=5

       dk=2

       eps=10E-3

       open(3,FILE='1.txt')

       name='1.pfi'

       CALL n1ypfi(nv,dk,xi,ui,z1,z2,dlo,name)

       write(3,*) 'Интервал определения цел. Ф-ции u(x),x=[a,b]:',' A='

     *,z1,'  B=',z2

       write(3,*) 'Начальная длина интервала неопределённости:'

     *,'   DLO=',dlo

       name='1.gls'

       CALL gls(z1,z2,eps,nv,x,xi,km,u,dlk,name)

       write(3,*) 'Конечная длина интервала неопределённости:'

     *,'    DLK=',dlk

       write(3,*) 'Параметр останова алгоритма:','                  E'

     *,'PS=',eps

       CALL n1ywfp(x1,x,ui,u,em,emo,eu,euo)

       write(3,*) 'XI=',xi,' UI=',ui

       write(3,*) ' X=',x,'  U=',u

       write(3,*) 'EU=',eu,' EUO=',euo

       close(3)

       dk=1.5

       eps=0.1D-2

       open(3,FILE='2.txt')

       write(3,*) ' DK     EPS      lgEPS        EO          lgEo

     * DLO        DLK      KM'

       do 1 i=1,8

        name='2.pfi'

        CALL n1ypfi(nv,dk,xi,ui,z1,z2,dlo,name)

        name='2.gls'

        CALL gls(z1,z2,eps,nv,x,xi,km,u,dlk,name)

        CALL n1ywfp(x1,x,ui,u,em,emo,eu,euo)

        write(3,9) dk,eps,log10(eps),eu,log10(eu),dlo,dlk,km

        dk=dk+0.5

1      continue

       close(3)

       dk=2

       eps=1D-9

       open(3,FILE='3.txt')

       write(3,*) ' DK     EPS      lgEPS        EO          lgEo

     * DLO        DLK      KM'

       do 2 i=1,9

        name='2.pfi'

        CALL n1ypfi(nv,dk,xi,ui,z1,z2,dlo,name)

        name='2.gls'

        CALL gls(z1,z2,eps,nv,x,xi,km,u,dlk,name)

        CALL n1ywfp(x1,x,ui,u,em,emo,eu,euo)

        write(3,9) dk,eps,log10(eps),eu,log10(eu),dlo,dlk,km

        eps=eps*10

2      continue

       close(3)

9      format(F5.2,D9.1,F11.2,D12.4,F13.4,F11.3,D12.4,I4)

      end