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