Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Реализовать в Паскале (http://www.tehnari.ru/f41/t100141/)

Onotole 17.12.2014 17:36

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

Найти точку максимума функции 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

Vladimir_S 17.12.2014 17:41

Вопрос тот же - что требуется от Паскаля? Численное решение?

Vladimir_S 17.12.2014 17:48

Цитата:

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

Не понимаю - в чем Вы узрели "кашу"? Там ровно та же задача, но для S=2 и G=19.

Vladimir_S 17.12.2014 17:50

Ладно, если требуется численное решение - сейчас нарисую. Причем такое, чтобы для обоих мыслителей подошло.

Onotole 17.12.2014 18:07

Ну не знаю, дали задание реализовать в Паскале)
А так спасибо))

Vladimir_S 17.12.2014 19:25

Цитата:

Сообщение от Vladimir_S (Сообщение 1088973)
Ладно, если требуется численное решение - сейчас нарисую. Причем такое, чтобы для обоих мыслителей подошло.

Да... вот ведь дрянь какая... Думал раз-раз - и квас, ан нет. Там, ну кто бы мог подумать, при простом переборе вылезают локальные максимумы... Ладно, завтра с утра поразмыслю - всё равно с работы выгнали по причине простуды, так что сижу дома.

Vladimir_S 18.12.2014 11:49

Да... задачка-то оказалась поинтереснее, чем на первый взгляд.
Решал так.
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.


Onotole 18.12.2014 22:10

Спасибо большое)


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.