2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Формула Лагранжа
Сообщение18.06.2012, 18:49 
Уважаемые математики, помогите пожалуйста разобраться, в чём ошибка. Задача на составление полинома по формуле Лагранжа.
Дано:
Таблица зависимости температуры кипения жидкостей t от давления P.
-----------------------------------------------------------------------------------------------------------
Давление мм.рт.ст.| 10 | 20 | 40 | 60 | 100 | 200 | 400 | 760 |
-----------------------------------------------------------------------------------------------------------
Температура |84.6|99.3|115.4|125.8|139.9|161.2|185.8|210.6|
-----------------------------------------------------------------------------------------------------------
Необходимо методом интерполяции найти функцию t=f(P) для каждой из жидкостей и определить температуру их кипения при давлениях 50, 300 мм. рт. ст.
Я составил полином по формуле Лагранжа. Вот он:

L_7 (t)=((P-20)(P-40)(P-60)(P-100)(P-200)(P-400)(P-760))/(-75026250000000)*84,6+
((P-10)(P-40)(P-60)(P-100)(P-200)(P-400)(P-760))/32394240000000*99,3+
((P-10)(P-20)(P-60)(P-100)(P-200)(P-400)(P-760))/(-29859840000000)*115,4+
((P-10)(P-20)(P-40)(P-100)(P-200)(P-400)(P-760))/53312000000000*125,8+
((P-10)(P-20)(P-40)(P-60)(P-200)(P-400)(P-760))/(-342144000000000)*139,9+
((P-10)(P-20)(P-40)(P-60)(P-100)(P-400)(P-760))/8580096000000000*161,2+
((P-10)(P-20)(P-40)(P-60)(P-100)(P-200)(P-760))/(-391817088000000000)*185,8+
((P-10)(P-20)(P-40)(P-60)(P-100)(P-200)(P-400))/37218424320000000000*210,6;

Для 50 нашёл, подставив вместо Р это значение, получилось примерно 119,6 градусов, что удовлетворяет таблице. А вот для 300 получается 817 градусов. Это много. Вот расчёт с подставленным значением 300.

L_7 (t)=((300-20)(300-40)(300-60)(300-100)(300-200)(300-400)(300-760))/(-75026250000000)*84,6+
((300-10)(300-40)(300-60)(300-100)(300-200)(300-400)(300-760))/32394240000000*99,3+
((300-10)(300-20)(300-60)(300-100)(300-200)(300-400)(300-760))/(-29859840000000)*115,4+
((300-10)(300-20)(300-40)(300-100)(300-200)(300-400)(300-760))/53312000000000*125,8+
((300-10)(300-20)(300-40)(300-60)(300-200)(300-400)(300-760))/(-342144000000000)*139,9+
((300-10)(300-20)(300-40)(300-60)(300-100)(300-400)(300-760))/8580096000000000*161,2+
((300-10)(300-20)(300-40)(300-60)(300-100)(300-200)(300-760))/(-391817088000000000)*185,8+
((300-10)(300-20)(300-40)(300-60)(300-100)(300-200)(300-400))/37218424320000000000*210,6=

-18125,39883+51033,09033-69290,45782+45832,42857-9530,31459+875,79273+22,10501-0,05734 ≈
817.
Подскажите, что я неправильно делаю? Всё пересчитал не на один раз, но ответ большой.

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 19:36 
Аватара пользователя
Самый большой знаменатель, 37218424320000000000, трактуется как целое число (так как не имеет десятичного разделителя) и при этом выходит за пределы диапазона 64-разрядных целых. Поставьте в этом числе точку или запятую.

По-хорошему, то же надо сделать и в остальных знаменателях-монстрах, а ещё лучше записывать их в экспоненциальной форме, а ещё лучше нормировать все давления на атмосферное и работать с отношениями P/Patm (хотя это, возможно, для Вас будет сложновато).

-- Пн июн 18, 2012 18:45:29 --

Или же проблемы не возникло бы, если бы знаменатели подсчитывались автоматически, для чего надо написать цикл. И слагаемые суммировать можно тоже в цикле.

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 20:17 
спасибо Вам, но я не программу пишу

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 20:26 
Аватара пользователя
Ясно. Ну, а значение t(300) исправилось?

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 20:40 
я не проверял. суть в том, что мне даны конкретные значения.

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 20:43 
Аватара пользователя
Скорее всего, тогда дело в том, что интерполяция с помощью полиномов страдает известной болезнью: она точно проходит через заданные точки, но при этом совершает сильные колебания между точками, особенно на краях интервала. С этим ничего не поделаешь.

-- Пн июн 18, 2012 19:51:00 --

Да, дело в этом. Вот я построил график:
Изображение
Кривая проходит через все узлы, значит, всё правильно. Но при этом она начинает сильно раскачиваться на краю интервала, особенно если там узлы расположены редко.
Такая вот никуда не годная интерполяция по формуле Лагранжа.
Обратите внимание, для P=300 получаем как раз T=800 с хвостиком.

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 20:53 
т.е., если я отправлю преподавателю такой ответ,это будет верным по Вашему? скорее всего здесь какая-то заковыка.

-- 18.06.2012, 22:56 --

ну всё-равно спасибо Вам огромное.

-- 18.06.2012, 23:00 --

а может Вы мне подскажете, с помощью какого метода мне построить полином?

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 21:12 
Аватара пользователя
Если Вы не располагаете сведениями о том, что искомая функция, соответствующая узлам интерполяции, является степенным многочленом, то можно сделать заключение о том, что многочлен Лагранжа построенный на всех заданных узлах в данном случае не обеспечивает удовлетворительное решение задачи интерполяции, так как имеет место раскачка графика интерполирующей фнукции между узлами интерполяции.

Можно попробовать добавить фиктивных узлов интерполяции, расширив интервал интерполирования, надеясь на то, что раскачка интерполяционного многочлена отодвинеться на края этого интервала. Фиктивные узлы можно взять, например, на прямой, которая проходит через последние два узла интерполяции.

А вообще напрашивается какая-нибудь кривая с насышением.

 
 
 
 Re: Формула Лагранжа
Сообщение18.06.2012, 21:14 
Аватара пользователя
stas45rus писал(а):
т.е., если я отправлю преподавателю такой ответ,это будет верным по Вашему?
Если Вы покажете преподавателю график, вроде моего, и скажете: "Вот, смотрите, график проходит через узловые точки, но между ними совершает сильные колебания", преподаватель скажет: "А, ну так это хорошо известное явление!"

stas45rus писал(а):
с помощью какого метода мне построить полином?
Полином седьмой степени, проходящий через восемь заданных точек, единственный, и Вы его видите на графике. Его можно записывать в разных формах, но на его значения это не повлияет.

Вот здесь
http://www.ngpedia.ru/id282989p2.html
во втором абзаце найдёте такую фразу:
Цитата:
Попытки использования классических интерполяционных полиномов Лагранжа, Ньютона и других для вычерчивания лекальных кривых не привели к успеху из-за появления нежелательных перегибов и больших колебаний кривых на отдельных интервалах интерполяции.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group