Составить подпрограмму определения минимума функции - Turbo Pascal
Формулировка задачи:
Составить подпрограмму определения минимума функции z = f(x, y), заданной в дискретных точках
xi = x0 + ihx; yi = y0 + ihy (i = 1, 2, ..., nx; j = 1, 2, ..., ny).
Используя её, найти минимумы функций:
z1 = 3x2 - 2y2 + 4xy - 8x; x0 = 1; hx = 0.2; nx = 10; y0 = 2; hy = 0.1; ny = 20;
z2 = 6x2 + y2 - 4x - 6y +1; x0 = 0; hx = 0.1; nx = 15; y0 = -1; hy = 0.1; ny = 10.
Решение задачи: «Составить подпрограмму определения минимума функции»
textual
Листинг программы
uses crt; type func=function(x,y:real):real; {$F+} function z1(x,y:real):real; begin z1:=3*x*x-2*y*y+4*x*y-8*x; end; function z2(x,y:real):real; begin z2:=6*x*x+y*y-4*x-6*y+1; end; function min(f:func;x0,hx,y0,hy:real;nx,ny:integer):real; var z,mn:real; i,j:integer; begin mn:=f(x0,y0); for i:=0 to nx do for j:=0 to ny do begin z:=f(x0+i*hx,y0+j*hy); if z<mn then mn:=z; end; min:=mn; end; begin clrscr; writeln('Минимум функции Z1=',min(z1,1,0.2,2,0.1,10,20):0:1); writeln('Минимум функции Z2=',min(z2,0,0.1,-1,0.1,15,10):0:1); readln end.
Объяснение кода листинга программы
- Подпрограмма
min
принимает четыре аргумента: функциюf
, начальные координатыx0
,y0
, а такжеnx
иny
- количество точек для проверки. - Внутри функции
min
инициализируется переменнаяmn
значением функцииf
на точках(x0, y0)
. - Затем происходит цикл по всем точкам в пределах
nx
наx
иny
наy
. В каждой точке вычисляется значение функцииf
с помощью подпрограммыz
. - Если значение
z
меньше текущего значенияmn
, тоmn
обновляется значениемz
. - По завершении цикла, значение
mn
возвращается из функцииmin
. - Выводится минимальное значение функции для функций
Z1
иZ2
с помощью функцииwriteln
. - Выполняется вывод с помощью функции
readln
, чтобы пользователь мог увидеть результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д