Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 17.12.2014, 17:36   #1 (permalink)
Onotole
Новичок
 
Регистрация: 17.12.2014
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Реализовать в Паскале

Всем доброго дня. Нужна Ваша помощь, необходимо реализовать решение задачи в Паскале.

Найти точку максимума функции Z

Z=S*x1+G*x2

где G=11
S=1

при ограничениях:
-x1/G-x2/S+1/4<=0
-S*x1+2*G*X2-G*S<=0
2*S*x1-G*x2-G*S<=0

X1,2>=0.

Увидел тут похожую задачу, но там к сожалению каша и ничего не понятно, я про тему пользователя "Oskarrr"

При решение на листе получилось, что x1=11, x2=1
Z=11+11=22
Onotole вне форума   Ответить с цитированием

Старый 17.12.2014, 17:36
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Информативные ответы вы можете найти в схожих обсуждениях

Помогите, пожалуйста, реализовать в Scilab
Идея есть, а реализовать не знаю как
Помогите реализовать проект
Помогите реализовать схему включения

Старый 17.12.2014, 17:41   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вопрос тот же - что требуется от Паскаля? Численное решение?
Vladimir_S вне форума   Ответить с цитированием
Старый 17.12.2014, 17:48   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Onotole Посмотреть сообщение
Увидел тут похожую задачу, но там к сожалению каша и ничего не понятно, я про тему пользователя "Oskarrr"
Не понимаю - в чем Вы узрели "кашу"? Там ровно та же задача, но для S=2 и G=19.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.12.2014, 17:50   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ладно, если требуется численное решение - сейчас нарисую. Причем такое, чтобы для обоих мыслителей подошло.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.12.2014, 18:07   #5 (permalink)
Onotole
Новичок
 
Регистрация: 17.12.2014
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ну не знаю, дали задание реализовать в Паскале)
А так спасибо))
Onotole вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 17.12.2014, 19:25   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ладно, если требуется численное решение - сейчас нарисую. Причем такое, чтобы для обоих мыслителей подошло.
Да... вот ведь дрянь какая... Думал раз-раз - и квас, ан нет. Там, ну кто бы мог подумать, при простом переборе вылезают локальные максимумы... Ладно, завтра с утра поразмыслю - всё равно с работы выгнали по причине простуды, так что сижу дома.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.12.2014, 11:49   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да... задачка-то оказалась поинтереснее, чем на первый взгляд.
Решал так.
1. Преобразуем неравенства к виду
Код:
x2 >= S/4 - S/G*x1
x2 <= S/2 + S/(2G)*x1
x2 >= -S + (2S)/G*x1
2. Находим максимальное значение х1, при котором все три неравенства совместимы.
3. В качестве х2 принимаем большее из значений правых частей первого и третьего неравенств при найденном х1.
Код:
Const
 S=1;
 G=11;
 dx=0.01;

Var
 x1,x2:Real;

Begin
 x1:=0;
 While ((S/2+S/2/G*x1)>=(S/4-S/G*x1)) and ((S/2+S/2/G*x1)>=(-S+S*2/G*x1)) do
  x1:=x1+dx;
 writeln('x1 = ',x1:0:3);
 if (S/4-S/G*x1)>(-S+S*2/G*x1) then
  x2:=(S/4-S/G*x1)
 else
  x2:=(-S+S*2/G*x1);
 writeln('x2 = ',x2:0:3);
 writeln(' Z = ',(S*x1+G*x2):0:3);
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.12.2014, 22:10   #8 (permalink)
Onotole
Новичок
 
Регистрация: 17.12.2014
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое)
Onotole вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:48.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.