Главная  Радио и связь 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 [ 119 ] 120 121 122 123 124 125 126 127

. Щюхрашю поиска ииншоша функции двух переменных методом скорейшего спуска на языке FORERAN

raCIODE: EXEC.PI

G »««««««««»««««««»«»«»««»««*««*««««»*«»««««««

С ПОИСК точки МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ

С МЕТОДОМ СКОРЕЙШЕГО СПУСКА

С ********************************************

program MlnOfPuncByCoordDescent

INTEGER*2 system

COMMON x(2),s(2),absgrad,K,et,W

l=system(clsC)

WRITE (*,*) Введите координаты вектора (x1,x2)

READ (*,*) (x(i),i=1,2)

GALL GradDlrectlon

IP (absgrad.LT.0.000001) THEN

WRITE(*,(A9,E12.6,A4,E12.6)) C.T. xl.Xd), x2=.x(2) PAUSE Нажмите клавишу ENTER для продолжения...

GO TO 1 END IP

WRITE (*,*) Задайте точность нахождения точки mln Г(х) READ (*,*) е WRITE (*,*) h = 0.2

К = 2

el = e / К d = 1

l=system( clsO

CALL OutputResult DO WHILE (d.GE.e)

d = ABS(h) hi = h

CALL ScanPorOneDIM l=system(clsO CALL OutputResult h = h/K END DO

WRITE (*,(A8,E12.6,A4,E12.6)) Mln Xl=,X(1), x2=,x(2)



Прилоаенне к главе 9> §4 361

WRITE (♦.•(А14,Е12.6)*) Погрешность =.е PAUSE Нажмите клавишу ENTER для продолжения... 1 END

С---

С ШДОРОГРАМШ

С -----------------------

FUNCTION Г(х) DIMENSION х{2)

t = (х(1)*«2 + х(2) - 11)**2 + (х(1) + х(2)**2 - 7)**2 RETURN END

SUBROUTINE GradDlrection COMMON X(2),8(2),absgrad

gradx= 4*x(1)**3 + 4*x(1)*x(2) + 2«x(2)»»2 - 42*x(1) - 14

grady= 4»x(2)**3 + 4*x(1)*x(2) + 2»x(1)*»2 - 26*x(2) - 22

absgrad = SQRT (gradx»»2 + grady*»2)

s(1) = gradx / absgrad

s(2) = grady / absgrad

RETURN

SUBROUTINE ScanForOneDIM GCMIMON x(2),3(2),absgrad,K,el,h1 LOGICAL a z = f(x)

GALL GradDlrection dt=t

DO WHILE (a.OR. (dl .GE.et))

DO 1=1.2

x(l) = x(l) + ht « s(l)

END DO

zl = f(X)

dl = ABS(h1)

a = (zl.LT.z) IP (-NOT.a) hi = -hl/K

z = zl БШ) DO



RETURN END

G --------Вывод на экран промещуточных вычислений-------

SUBROUTINE OutputResult GOMMON х(2)

WRITE (*,*) Вектор приближения (х1,х2) на шаге вычислений* WRITE (*,(А5,Е12.6,А6,Е12.6)) х1 =.х(1). х2 =,х(2) WRITE (*,{А11,Е12.6)) f(x1,x2) -.Г(х) PAUSE Нажмите клавишу ENTER для продолжения...

RETURN END

5. Программа поиска минимума функции двух переменных методом скорейшего спуска на языке С

помок ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ МЕТОДОМ СКОРЕЙШЕГО СПУСКА

***************************** ****** ******M*illc/

♦Include <stdio.h> ♦Include <conlo.ii> ♦Include <math.h> ♦define N 2 ♦define к 2 Int 1;

float absgrad,et,n,h1 ,z,s[N+l ],X[N+1];

/*--------------------------------------------------

ПОДПРОГРАММЫ «/

float refloat x[N+1]) (float a,b,y; a=x[1 ]*x[t ]+х[2]~П ; b=x[ 1 ]+x[2]*x[2]-7;

у = a*a + b*b; retinn y; )

/» ------------------------------------------------ »/

40 Id graddlrec t Ion (vo Id) { float gradx,grady; gradx = 4*x[1 ]*х[П*х[П+4*хт*х[2]+2*х[2]*х[2]-42*X[1]~!4;

grady 4*x[2]*x[2]*x[2l44*x[n*x[2]+2*x[1 ]*x[П-26*x[2]-22;



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 [ 119 ] 120 121 122 123 124 125 126 127


0.01