Страница: 1 |
Страница: 1 |
Вопрос: График и не только
Добавлено: 25.07.06 10:59
Автор вопроса: BeTe
Есть набор координат Х(1 to 10), Y(1 to 10) т.е. 10 точек. По этим точкам необходимо нарисовать график. Естественно из за малого кол-ва точек он получается с острыми углами. Нужно чтобы он был гладким, но при этом график прошел строго через все указаные точки. Использую интерполяцию функции кубическими сплайнами. Нашел некий алгоритм от БЧА НИВЦ МГУ (http://alglib.sources.ru/interpolation/spline3.php)
Там в описании пишется следующее:
Входные параметры:
N - число точек
DiffN - тип граничного условия. 1 соответствует граничным условиям накладываемым на первые производные, 2 - на вторые.
xs - массив абсцисс опорных точек с номерами от 0 до N-1. Точки могут быть неупорядочены по возрастанию, алгоритм отсортирует их перед расчетами.
ys - массив ординат опорных точек с номерами от 0 до N-1.
BoundL - левое граничное условие. Если DiffN равно 1, то первая производная на левой границе равна BoundL, иначе BoundL равна вторая производная.
BoundR - аналогично BoundL
Со всеми параметрами которые нужно передать все ясно кроме BoundR и BoundL. Напрашивается вопрос. Из чего и/или каким образом узнать значение BoundR и BoundL которые нужно передавать? Возможно они расчитываются по какой-то формуле из исходных данных?
Никогда таким не занимался, поэтому не слишком ориентируюсь в этом воросе и буду рад любой помощи.
Пробовал ставить значения на угад, но график принимает причудливые формы. Если надо могу выложить тут исходник этого алгоритма.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #1
Добавлено: 25.07.06 12:03
Стоит на том же сайте http://alglib.sources.ru или же на http://algolist.manual.ru поискать статьи (или ссылки на них) о сплайнах, или же прочитать о них в каком-либо справочнике/учебнике по математике либо в справочнике/учебнике по численным методам.
Номер ответа: 2
Автор ответа:
BeTe
Вопросов: 6
Ответов: 30
Профиль | | #2
Добавлено: 25.07.06 12:12
Читал, искал, закачивал... Исчерпывающей информации по этому поводу не нашлось. Поэтому и спрашиваю, может кто сталкивался.
Номер ответа: 3
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #3
Добавлено: 26.07.06 12:04
Мдя... угадал буквы, но не смог прочитать слово...
Если читал и информации полно, то в чем проблема то?
Номер ответа: 4
Автор ответа:
BeTe
Вопросов: 6
Ответов: 30
Профиль | | #4
Добавлено: 26.07.06 12:39
Собственно говоря проблема описана в самом вопросе. Из всей найденной литературы не ясно что за значения нужно вносить в качестве левого и правого граничного условий. Там сказано что если условий нету то можно ввести 0 и в качестве производной для которой будут считаться коэф-ты ввести вторую производную. Но при таком раскладе получаются большие всплески на графике, вто время как их быть не должно. Следовательно нужно подбирать граничные условия. но так как набор изначальных координа постоянно меняется, то нужно это каким-то образом высчитывать. Вот и вопрос - как ? Где ? Исходя из чего ?
Номер ответа: 5
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #5
Добавлено: 27.07.06 12:02
Стоит поискать численные методы вычисления производных (как первой, так и второй) и с сайта БЧА НИВЦ МГУ скачать описание программы и примеры ее использования. Насколько я помню, все это там есть.
Номер ответа: 6
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #6
Добавлено: 28.07.06 12:35
BoundR и BoundL судя по соответствию в VB UBound и LBound можно продположить что это правая и левая границы соответственно...
Номер ответа: 7
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #7
Добавлено: 29.07.06 08:13
2 AgentFire, стоило внимательнее прочитать вопрос прежде чем давать такой ответ.