AidarM: Все сообщения за 25 Октября 2005 года

 
ПнВтСрЧтПтСбВс
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

AidarM

аксакал
★★
varban>А есть ли аналитическое решение задачи?
А нужно именно оно? Алгоритм сейчас слепим.

>Даны экспериментальные данные, зависимость давления от температуры газа в постоянном объеме. Дана и дельта по давлению.
Пока вроде понятно. Есть 'лента' допустимых значений изменяемой ширины, достаточно плавная.

>Требуется построить две прямые, с минимальным и максимальным наклоном, так, чтобы обе прямые проходили через дельт экспериментальных точек.
Обязательное укладывание этих прямых в 'ленту' оставим на совести(?) препода.

Терминология:
Влево - на уменьшение X координаты.
Вправо - на увеличение X координаты.
Y-координата точки плюс её дельта - верхняя граница точки(гы) из набора давлений
Y-координата точки минус её дельта - нижняя граница точки из набора давлений

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

Все дальнейшие построения будут иметь такие свойства:
а) Будут строиться прямые через точки с названиями AnBm(n и m - номера), где Аn - нижняя граница какой-то точки из набора давлений. Bm - верхняя граница какой-то точки из набора давлений.
б) При n1>n2 Аn1 расположена не ниже An2. Т.е. координата Y при росте ндекса n у соответствующей точки An может лишь возрастать, либо не изменяться никак.
c) При m1>m2 Bm1 расположена не выше Bm2. Т.е. координата Y при росте индекса m у соответствующей точки Bm может лишь уменьшаться, либо не изменяться никак.

Заранее извиняюсь за банальности.

1. Проводим мысленно прямую через верхнюю границу самой правой точки и нижнюю самой левой. Обозначим эти границы за А1 и Б1. Очевидно, что тангенс угла наклона искомой прямой не превышает такового у А1Б1.

2. Идем например, справа налево - от точки Б1 к точке А1 и ищем, а не вылезает ли наша прямая выше чьей-то верхней границы? Если такого нет вплоть до соседней с А1, то ОК, переходим к пункту 3.

Если да, то верхнюю границу такой точки обзываем Б2 и проводим прямую A1Б2.
От Б2 идем обратно направо и глядим, не вылезла ли А1Б2 ниже нижней границы любой из точек справа от Б2. Если да, то задача решения не имеет из-за свойства с. Что сделать с преподом, требующим такую прямую - сами решайте, у вас целый Арсенал под боком. :)

Если нет, то повторяем пункт 2, только уже от точки Б2 идем к А1...
И так повторяем пункт 2 до тех пор, пока не доберемся до левого конца, т.е. точки А1.

Наша прямая как бы поворачивалась относительно точки А1. Есс-но, только по часовой стрелке, из-за свойства с.

3. Итак, у нас проведена некоторая прямая А1БN, про которую мы знаем, что она лежит в дельта-окрестностях всех точек справа от точки БN и как минимум, не выше дельта-окрестностей всех точек между A1 и БN.

То есть нам осталось разобраться, а не лежит ли она ниже дельта-окрестностей точек между A1 и БN. Но тут ситуация симметричная, только теперь

3.1 мы идём от А1 к БN и проверяем, а не проходит ли А1БN ниже нижней границы любой из точек между A1 и БN. Теперь граничная прямая поворачивается относительно БN. Также только по часовой стрелке из-за свойства б.

Если нет, то всё ОК, прямая найдена и это прямая A1БN. Если она все же проходит ниже нижней границы какой-то точки, лежащей между А1 и БN, то эту нижнюю границу такой точки обозначаем за А2 и проводим прямую А2БN.

3.2 После чего идем обратно налево и смотрим, а не превысила ли она чью-то верхнюю границу слева от А2? Если да, то задача решения не имеет, см. пункт про препода и Арсенал. :)

3.3 Если нет, то идем направо от А2 и смотрим, а не ниже ли А2БN чьей-то нижней границы справа от А2 и до Б1? Если нет, то искомая прямая - А2БN. Если да, и

а) если эта точка правее БN, то задача решения не имеет см. пункт про препода и Арсенал. Если же эта точка между А2 и БN, то

б) эту нижнюю границу обозначаем за А3 и т.д., такие же проверки - с пункта 3.1 для A3БN. и т.д.


Для поиска кривой минимального наклона алгоритм аналогичный, только верхняя граничная точка лежит левее нижней граничной - через которые искомая прямая проводится.

Если криво объяснил, то извините. Спрашивайте.
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 25.10.2005 в 21:13

AidarM

аксакал
★★
Ишь ты, уважаемые люди хвалят. :)

И даже Вуду почти не стебётся! :blink:
Солипсизм не пройдёт! :fal:  

AidarM

аксакал
★★
Тогда говорят - присылайте нам фотографию неработающих экземпляров, а мы пришлём вместо них исправные.
 

Мощно! :D
Солипсизм не пройдёт! :fal:  

AidarM

аксакал
★★
Блин, про мораль забыл.

При существовании ответа на вопрос в заданной формулировке, его смысл по глубине не превосходит смысла вопроса. Эх, завернул теоремку. :F

Может, будет лучше, если товарищ метод наименьших квадратов освоит? :rolleyes: Физфак/мехмат - 1й курс, матан. Хде-то перед тем, как рассказать про интеграл Фурье, обычно рассказывается про ортогональные системы функций, а рядышком - про задачу о наименьшем квадратичном уклонении.

Если нужно было провести одну прямую, 'среднюю', то можно было и этим способом решить. А вот насчет прямых с максимальным/минимальным наклонами - больше ничего не соображу пока. Слепил дубовый алгоритм построения, а программировать - лень.
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 25.10.2005 в 21:43

AidarM

аксакал
★★
ED>Тупо, но эффективно.

Один из военных законов Мерфи: 'If it's stupid, but it works - it isn't stupid.' :)
Солипсизм не пройдёт! :fal:  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru