Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
19 / 19 / 5
Регистрация: 05.12.2008
Сообщений: 157
1

Геометрическая головоломка.

24.02.2011, 09:30. Показов 939. Ответов 5
Метки нет (Все метки)

Здравствуйте товарищи... помогите пожалуйста вот с каким вопросом:
Есть задача, дан полу эллипс, цель - внутри полу эллипса разместить прямоугольник с максимально возможной площадью.
По условию, что бы было легче представить, дана комната формы полу эллипс, необходимо внутри разместить прямоугольную комнату с минимальной потерей площади )

Добрые люди подсказали с теоретическим решением (С геометрией я еще меньше дружу=D)
уравнение эллипса:

(x/a)^2 + (y/b)^2 = 1

Надо найти чтоб xy = max при условии ур-я,
Для удобства возьмем b = 1,

выразим y = sqrt ( 1 - (x/a)^2 )
Тогда ищем max F = x*y = x * sqrt ( 1 - (x/a)^2 )

F ' x = 1 / a^2 ( sqrt ( 1 - x^2 ) - 2 x^2 / sqrt ( 1 - x^2 ) ) = 0
1 / a^2 ( a^2 - x^2 ) = x^2

x = sqrt ( a^2 / (1+a^2) )
Как то так...

Пожалуйста посоветуйте методы решения на pascal'е.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2011, 09:30
Ответы с готовыми решениями:

Головоломка
Пожалуйста, помогите решить ХОД+ХОД+ХОД=МАГ там нужно чтобы оно как можно меньше решений...

Легкая головоломка
С клавиатуры вводится возраст человека, надо вывести фразу “мне N лет” при этом некоторые значения...

Геометрическая прогрессия
геометрическая прогрессия задана первым членом а1 и знаменателем q. Вычислить и вывести на экран...

Геометрическая прогрессия
Известен первый член геометрической прогрессии а и знаменатель г. п вывести на экран 10 членов г.п

5
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
24.02.2011, 11:52 2
Не
выразим y = sqrt ( 1 - (x/a)^2 )
а выразим y = b*sqrt ( 1 - (x/a)^2 )
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses crt;
var a,b,x,y,mx,xmx,ymx:real;
begin
clrscr;
writeln('Введите значения a,b:');
readln(a,b);
mx:=0;
x:=0;
while x<=a do
 begin
  y:=b*sqrt(1-sqr(x/a));
  if x*y>mx then
   begin
    mx:=x*y;
    xmx:=x;
    ymx:=y;
   end;
  x:=x+0.001;//можно поменять шаг
 end;
writeln('Прямоугольник с максимальной площадью ',xmx:0:2,'*',ymx:0:2,'=',mx:0:2);
readln
end.
1
19 / 19 / 5
Регистрация: 05.12.2008
Сообщений: 157
24.02.2011, 13:51  [ТС] 3
Спасибо большое, всё понятно, всё работает ))
А есть какой ни будь метод нахождения координат этого прямоугольника с максимальной площадью... Что бы по факту можно было абстрактно начертить решение.
0
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
24.02.2011, 14:04 4
Ну так мы находим значения x,y. Если считать что начало координат в центре эллипса, то это и есть координаты в первой четверти.
0
19 / 19 / 5
Регистрация: 05.12.2008
Сообщений: 157
24.02.2011, 17:17  [ТС] 5
Спасибо, вот что у меня получилось с кординатами:

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
uses crt;
var a,b,x,y,mx,xmx,ymx,ix,xi,jy,yj:real;
begin
clrscr;
writeln('Вводим значения a,b:');
readln(a,b);
mx:=0;
x:=0;
while x<=a do
 begin
  y:=b*sqrt(1-sqr(x/a));
  if x*y>mx then
   begin
    mx:=x*y;
    xmx:=x;
    ymx:=y;
   end;
  x:=x+0.001;
 end;
writeln('Прямоугольник с максимальной площадью: ',xmx:0:2,'*',ymx:0:2,'=',mx:0:2);
 
 
 
Writeln ('Кординаты максимального прямоугольника:');
ix:=xmx/2;
xi:=ix*-1;
jy:=ymx/2;
yj:=jy*-1;
Writeln('Кординаты на F2:', '[',ix:0:1,';',jy:0:1,']');
Writeln('Кординаты на F1:', '[',xi:0:1,';',yj:0:1,']');
 
readln
end.
0
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
24.02.2011, 17:35 6
Кстати, я совсем забыл что площадь нужно умножить на 2, это же у меня только верхнюю половину считает..
И координаты получаются правого верхнего угла...

Добавлено через 15 минут
Поправил...
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
uses crt;
var a,b,x,y,mx,xmx,ymx:real;
begin
clrscr;
writeln('Вводим значения a,b:');
readln(a,b);
mx:=0;
x:=0;
while x<=a do
 begin
  y:=b*sqrt(1-sqr(x/a));
  if x*y>mx then
   begin
    mx:=x*y;
    xmx:=x;
    ymx:=y;
   end;
  x:=x+0.001;
 end;
writeln('Прямоугольник с максимальной площадью:');
writeln('площадь=',2*mx:0:2);
Writeln ('координаты левого верхнего угла x1,y1:');
writeln('x1=0  y1=',ymx:0:2);
Writeln ('координаты правого нижнего угла x2,y2:');
writeln('x2=',xmx:0:2,' y1=',-ymx:0:2);
readln
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2011, 17:35

Геометрическая интерпретация решения
Проблема с решение, если ввести два неравенства то результат есть , но если ввести 3 неравенства то...

Геометрическая задача на построение отрезков
Бесконечная последовательность отрезков А0А1, А1А2, … строится по следующему правилу. Сначала...

Геометрическая фигура с помощью паскаля.
Вывести на экран геометрическую фигуру размер которой задается при вводе. Для отображения на экране...

Количество литров в галлонах, геометрическая прогрессия.
#1. Составить программу для нахождение количества литров L, которые содержится в Х галлонах (1...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru