0 / 0 / 0
Регистрация: 15.04.2011
Сообщений: 9
1

Вычислить минимальное и максимальное значение функции

01.11.2014, 21:16. Показов 1069. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно есть задача: используя процедурный тип, реализовать обобщенные функции max и min, которые должны для функций y1 и y2 вычислять соответственно минимальное и максимальное значение, причем функции y1 и y2 должны передаваться в функции max и min как параметры (процедурного типа).
у1 и у2 задал (у1 определена на отрезке -9;9, а у2 на -10;4 - х изменяется от -10 с шагом, заданным пользователем, до 9; вычисления значений идут параллельно для каждой функции), функции min и max сделал - программа работает, в алгоритме ошибок не вижу, но происходят неправильные вычисления этих min и max
Pascal
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
program testfunc;
 uses crt;
 type fun=function(x:real):real;
 var i:byte;
     x,hx,mx1,mn1,mx2,mn2:real;
 function y1(x:real):real; far;
  begin
   if (x<-9) or (x>9)
    then exit
    else
     if (x>=-9) and (x<-6)
      then y1:=-sqrt(9-sqr(x+6))
      else
       if (x>=-6) and (x<-3)
        then y1:=x+3
        else
         if (x>=-3) and (x<0)
          then y1:=sqrt(9-sqr(x))
          else
           if (x>=0) and (x<3)
            then y1:=3-x
            else y1:=x/2-1.5;
  end;
 function y2(x:real):real; far;
  begin
   if (x<-10) or (x>4)
    then exit
    else
     if (x>=-10) and (x<-6)
      then y2:=-sqrt(4-sqr(x+8))+2
      else
       if (x>=-6) and (x<-4)
        then y2:=2
        else
         if (x>=-4) and (x<2)
          then y2:=-0.5*x
          else y2:=x-3;
  end;
 function max(mx:real;f:fun):real;
  var a:real;
  begin
   a:=f(x);
   if a>mx
    then max:=a;
  end;
 function min(mn:real;f:fun):real;
  var a:real;
  begin
   a:=f(x);
   if a<mn
    then min:=a;
  end;
 begin
  clrscr;
  i:=0;
  x:=-10;
  mx1:=y1(-9);
  mx2:=y2(-10);
  mn1:=y1(-9);
  mn2:=y2(-10);
  writeln('‚ўҐ¤ЁвҐ и*Ј Ё§¬Ґ*Ґ*Ёп е ®в 0.1 ¤® 1');
  readln(hx);
  clrscr;
  writeln('     x      y1     y2');
  while x<=9 do
   begin
    write(x:7:2);
    if (x>=-9) and (x<=9)
     then
      begin
       write(y1(x):7:2);
       mx1:=max(mx1,y1);
       mn1:=min(mn1,y1);
      end
     else write('       ');
    if (x>=-10) and (x<=4)
     then
      begin
       write(y2(x):7:2);
       mx2:=max(mx2,y2);
       mn2:=min(mn2,y2);
      end
     else write('       ');
    writeln;
    i:=i+1;
    x:=x+hx;
    if i mod 22=0
     then
      begin
       readln;
       clrscr;
       writeln('     x      y1     y2');
      end;
   end;
  writeln(mx1:14:2,mx2:7:2,' Њ*ЄcЁ¬г¬');
  writeln(mn1:14:2,mn2:7:2,'  ЊЁ*Ё¬г¬');
  readln;
 end.
Добавлено через 3 часа 47 минут
Извините за трату вашего времени, всё исправил. Кому интересно: в функции max и min добавил перепресваивание значения, если не выполняется условие (строки 45 и 53).
Pascal
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
program testfunc;
 uses crt;
 type fun=function(x:real):real;
 var i:byte;
     x,hx,mx1,mn1,mx2,mn2:real;
 function y1(x:real):real; far;
  begin
   if (x<-9) or (x>9)
    then exit
    else
     if (x>=-9) and (x<-6)
      then y1:=-sqrt(9-sqr(x+6))
      else
       if (x>=-6) and (x<-3)
        then y1:=x+3
        else
         if (x>=-3) and (x<0)
          then y1:=sqrt(9-sqr(x))
          else
           if (x>=0) and (x<3)
            then y1:=3-x
            else y1:=x/2-1.5;
  end;
 function y2(x:real):real; far;
  begin
   if (x<-10) or (x>4)
    then exit
    else
     if (x>=-10) and (x<-6)
      then y2:=-sqrt(4-sqr(x+8))+2
      else
       if (x>=-6) and (x<-4)
        then y2:=2
        else
         if (x>=-4) and (x<2)
          then y2:=-0.5*x
          else y2:=x-3;
  end;
 function max(mx:real;f:fun):real;
  var a:real;
  begin
   a:=f(x);
   if a>mx
    then max:=a
    else max:=mx;
  end;
 function min(mn:real;f:fun):real;
  var a:real;
  begin
   a:=f(x);
   if a<mn
    then min:=a
    else min:=mn;
  end;
 begin
  clrscr;
  i:=0;
  x:=-10;
  mx1:=y1(-9);
  mx2:=y2(-10);
  mn1:=y1(-9);
  mn2:=y2(-10);
  writeln('‚ўҐ¤ЁвҐ и*Ј Ё§¬Ґ*Ґ*Ёп е ®в 0.1 ¤® 1');
  readln(hx);
  clrscr;
  writeln('     x      y1     y2');
  while x<=9 do
   begin
    write(x:7:2);
    if (x>=-9) and (x<=9)
     then
      begin
       write(y1(x):7:2);
       mx1:=max(mx1,y1);
       mn1:=min(mn1,y1);
      end
     else write('       ');
    if (x>=-10) and (x<=4)
     then
      begin
       write(y2(x):7:2);
       mx2:=max(mx2,y2);
       mn2:=min(mn2,y2);
      end
     else write('       ');
    writeln;
    i:=i+1;
    x:=x+hx;
    if i mod 22=0
     then
      begin
       readln;
       clrscr;
       writeln('     x      y1     y2');
      end;
   end;
  writeln(mx1:14:2,mx2:7:2,' Њ*ЄcЁ¬г¬');
  writeln(mn1:14:2,mn2:7:2,'  ЊЁ*Ё¬г¬');
  readln;
 end.
0
01.11.2014, 21:16
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2014, 21:16
Ответы с готовыми решениями:

Написать и применить в программе функции, которые в массиве находят и возвращают минимальное и максимальное значение элементов
Написать и применить в программе функции, которые в массиве А(N) находят и возвращают минимальное и максимальное значение элементов

Вычислить максимальное значение функции.
Построить таблицу значений функции y=fi(x) на отрезке с шагом h=0,1*i, где i = 6 Найти количество отрицательных значений функции y....

Максимальное и минимальное значение функции
Дорогие друзья! Помогите решить задачку. До сесии почти немного осталось. Очень надеюсь на вашу помощь.

4
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7800 / 4622 / 2832
Регистрация: 22.11.2013
Сообщений: 13,129
Записей в блоге: 1
01.11.2014, 22:15 2
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Вообще говоря, использовать в функции значения глобальных переменных (в данном случае x) -- не очень хорошая затея. Возможно я не прав, но скорее всего в задании имелись в виду несколько иные функции min и max:
Pascal
1
2
function min(f: fun; a, b, h: Real): Real;
function max(f: fun; a, b, h: Real): Real;
где a, b -- границы интервала, h -- шаг.

Добавлено через 7 минут
Функции y1 и y2 есть смысл переписать, исключив лишние условия, дублирующие проверенные ранее:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function y1(x: Real): Real; far;
begin
  if (x<-9) or (x>9) then exit
  else if x<-6 then y1:=-sqrt(9-sqr(x+6))
  else if x<-3 then y1:=x+3
  else if x<0  then y1:=sqrt(9-sqr(x))
  else if x<3  then y1:=3-x
  else              y1:=x/2-1.5;
end;
 
function y2(x: Real): Real; far;
begin
  if (x<-10) or (x>4) then exit
  else if x<-6 then y2:=-sqrt(4-sqr(x+8))+2
  else if x<-4 then y2:=2
  else if x<2  then y2:=-0.5*x
  else              y2:=x-3;
end;
Добавлено через 6 минут
А с учетом, что для аргумента, не входящего в область допустимых его значений, возвращаемое значение оставлять произвольным не очень хорошая идея, вызовы Exit имеет смысл заменить на RunError(207).

Добавлено через 17 минут
Честно говоря, постановка задачи (или ее пересказ) несколько крива.
Нахождение минимума и максимума функции на интервале в общем случае состоит из 2-х подзадач:
- отделение интервалов, заведомо содержащих локальный экстремум;
- уточнение значения экстремума.

Судя по решению, в задаче имелось в виду другое: расчет значений функции с заданным шагом и определение минимального и максимального значения по вычисленным точкам. Для решения такой задачи декомпозиция на отдельные функции min и max выбрана явно неудачно, эти функции будут отличаться только одним знаком больше/меньше при отделении экстремума, намного практичнее была бы одна процедура, возвращающая интересующие значения:
Pascal
1
2
3
4
5
6
7
8
9
10
11
procedure MinMax(f: fun; a, b, h: Real; var min, max: Real);
var y: Real;
begin
  min:=f(b); max:=min;
  while a<b do begin
    y:=f(a);
    if y<min then min:=y;
    if y>max then max:=y;
    a:=a+h;
  end;
end;
Добавлено через 7 минут
Вывод пробелов по ширине поля вывода удобно делать при помощи форматного вывода:
Pascal
1
Write('':7);
1
0 / 0 / 0
Регистрация: 15.04.2011
Сообщений: 9
01.11.2014, 22:27  [ТС] 3
Спасибо. Правильные замечания, что в принципе задачу можно проще решить. К сожалению, условие требует именно такого исполнения (запутанного и навороченного).
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7800 / 4622 / 2832
Регистрация: 22.11.2013
Сообщений: 13,129
Записей в блоге: 1
01.11.2014, 22:39 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

А можно увидеть условие в оригинале?

Если не нужно было бы выводить таблицу, сделал бы так:
Pascal
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
type
  TFun=function (x: Real): Real;
  RFun=record
    f: TFun; a, b: Real;
  end;
function y1(x: Real): Real; far;
begin
  if (x<-9) or (x>9) then RunError(207)
  else if x<-6 then y1:=-sqrt(9-sqr(x+6))
  else if x<-3 then y1:=x+3
  else if x<0  then y1:=sqrt(9-sqr(x))
  else if x<3  then y1:=3-x
  else              y1:=x/2-1.5;
end;
 
function y2(x: Real): Real; far;
begin
  if (x<-10) or (x>4) then RunError(207)
  else if x<-6 then y2:=-sqrt(4-sqr(x+8))+2
  else if x<-4 then y2:=2
  else if x<2  then y2:=-0.5*x
  else              y2:=x-3;
end;
 
procedure MinMax(f: TFun; a, b, h: Real; var min, max: Real);
var y: Real;
begin
  min:=f(b); max:=min;
  while a<b do begin
    y:=f(a);
    if y<min then min:=y;
    if y>max then max:=y;
    a:=a+h;
  end;
end;
 
const
  fr: array [1..2] of RFun = ((f:y1;a:-9;b:9),(f:y2;a:-10;b:4));
var
  i: Integer;
  a, b, h, min, max: Real;
begin
  for i:=1 to 2 do begin
    repeat
      Write('Для y',i,' введите интервал [',fr[i].a:0:0,',',fr[i].b:0:0,'] и шаг: ');
      ReadLn(a,b,h);
    until (a>=fr[i].a) and (b<=fr[i].b) and (h>0);
    MinMax(fr[i].f,a,b,h,min,max);
    WriteLn('На заданном отрезке для y',i,' min=',min,' max=',max);
  end;
end.
0
0 / 0 / 0
Регистрация: 15.04.2011
Сообщений: 9
01.11.2014, 22:53  [ТС] 5
Вот задание:
А) построить таблицу значений функций , причем вычисление значений для таблицы оформить в виде функций, например, с именами f1 и f2;
Б) используя процедурный тип, реализовать обобщенные функции f3 и f4, которые должны для названных выше функций f1 и f2 вычислять соответственно минимальное и максимальное значение, причем функции f1 и f2 должны передаваться в функции f3 и f4 как параметры (процедурного типа).

Графики функции прилагаются ниже.
Миниатюры
Вычислить минимальное и максимальное значение функции   Вычислить минимальное и максимальное значение функции  
0
01.11.2014, 22:53
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2014, 22:53
Помогаю со студенческими работами здесь

Найти максимальное и минимальное значение функции
Cоставить и отладить программу для решения следующей задачи: Для заданной функции f=x2(x-3) найти максимальное и минимальное значение...

Определить максимальное/минимальное значение функции y=f(x)
Ребята!!Прошу помощи в написании простецкой программы в паскале..сам не умею:wall:..нужна ваша помощь.. Задание таково: Определить...

Вычислить максимальное значение функции
Буду благодарен, если кто-то поможет или толкнет в нужном направлении. Задано целое число a. Если a &gt; 0, то вычислить...

Вычислить сумму значений функции у и найти минимальное и максимальное значение функции
здравствуйте)) помогите, пожалуйста, составить программу:help: найти сумму значений функции от а=4 до в=20 функция...

Вычислить среднее значение параметра, исключив из данных его максимальное и минимальное значение
Даны результаты проведения N экспериментов (порядковый номер эксперимента и полученное в нем численное значение некоторого параметра)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Обнаружение аномалий в машинном обучении на Python
stackOverflow 19.02.2025
Аномалии — это отклонения от ожидаемого поведения системы, которые могут указывать как на потенциальные проблемы, так и на интересные возможности для исследования. В контексте машинного обучения. . .
Введение в представления (views) Django
stackOverflow 19.02.2025
Представления (views) - ключевой элемент веб-фреймворка Django, который отвечает за обработку HTTP-запросов и формирование ответов. Они действуют как посредники между данными приложения и шаблонами,. . .
Что такое шаблоны Django и как с ними работать
stackOverflow 19.02.2025
Шаблоны Django - основополагающий компонент фреймворка Django, который позволяет эффективно разделять логику приложения и его визуальное представление. Это очень важный инструмент для. . .
Какой Python Web-фреймворк лучший: Django, Flask или FastAPI?
stackOverflow 19.02.2025
В разработке под веб Python занимает особое место благодаря своей универсальности и богатой экосистеме. При создании веб-приложений разработчики сталкиваются с важным выбором - какой фреймворк. . .
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией и Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru