Составить подпрограмму определения минимума функции - 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
, чтобы пользователь мог увидеть результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д