реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как найти коэффициентов полинома лагранжа по его корня?
Petrovich
сообщение Nov 20 2012, 19:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 2-06-05
Из: Днепропетровск
Пользователь №: 5 658



Господа!
Подскажите как посчитать коэфициенты полинома если есть n пар x y?
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Nov 20 2012, 22:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Цитата
если есть n пар x y
можно составить и решить систему линейных уравнений n-го порядка. Если n невелико (порядка нескольких единиц), то не сложно ещё и минимизировать количество операций для этого.

ЗЫ: можно не находить коэффициенты а применять интерполяционный многочлен в форме Лагранжа
ЗЗЫ: и это вовсе не корни многочлена а узловые точки
Go to the top of the page
 
+Quote Post
Petrovich
сообщение Nov 21 2012, 06:08
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 2-06-05
Из: Днепропетровск
Пользователь №: 5 658



Цитата(_Ivana @ Nov 21 2012, 02:02) *
можно составить и решить систему линейных уравнений n-го порядка. Если n невелико (порядка нескольких единиц), то не сложно ещё и минимизировать количество операций для этого.

ЗЫ: можно не находить коэффициенты а применять интерполяционный многочлен в форме Лагранжа
ЗЗЫ: и это вовсе не корни многочлена а узловые точки

Да, действительно ошибочка, это узловые точки.
Мне нужно находить имеенно коэфициенты. Просто интерполяция ясна но она не подходит.
Решать систему не получится, точнее муторно, n может быть до 6. Должен же быть как либо численный метод нахождения коэффициентов
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 21 2012, 06:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Petrovich @ Nov 21 2012, 10:08) *
Решать систему не получится, точнее муторно, n может быть до 6. Должен же быть как либо численный метод нахождения коэффициентов

MATLAB?

>> x = [1,2,3,4,5,6,7];
>> y = [3,2,5,6,8,7,3];
>> p = polyfit(x,y,6)

p =

0.0375 -0.9208 8.9375 -43.6458 112.0250 -139.4333 66.0000

>>
Go to the top of the page
 
+Quote Post
Petrovich
сообщение Nov 21 2012, 07:58
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 2-06-05
Из: Днепропетровск
Пользователь №: 5 658



Цитата(blackfin @ Nov 21 2012, 10:49) *
MATLAB?

>> x = [1,2,3,4,5,6,7];
>> y = [3,2,5,6,8,7,3];
>> p = polyfit(x,y,6)

p =

0.0375 -0.9208 8.9375 -43.6458 112.0250 -139.4333 66.0000

>>

Я наверно не совсем понятно объяснил. Это должно происходить в приборе, в который Матлаб к сожалению не запихнуть...
А вот сделать так как делается в Матлабе, было бы не плохо.
Go to the top of the page
 
+Quote Post
iiv
сообщение Nov 21 2012, 13:06
Сообщение #6


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(Petrovich @ Nov 21 2012, 13:58) *
Это должно происходить в приборе, в который Матлаб к сожалению не запихнуть...

метод решения сильно зависит от того, поддерживает ли Ваш прибор двойную, а может и четверную точность - простой метод в 7-8 строк на С или Фортране очень плохо устойчив к ошибкам округления, а методы поточнее могут случайно не поместиться в скомпилированном виде в память маленьких микроконтроллеров. Также важно знать сколько Вы готовы ждать этого решения и производительность по флопам или другим схожим операциям в секунду на каком-то характерном размере задачи.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Nov 21 2012, 13:22
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(Petrovich @ Nov 21 2012, 10:08) *
Да, действительно ошибочка, это узловые точки.
Мне нужно находить имеенно коэфициенты. Просто интерполяция ясна но она не подходит.
Решать систему не получится, точнее муторно, n может быть до 6. Должен же быть как либо численный метод нахождения коэффициентов

Для такого порядка должно хватить даже простенького МК. Возьмите, например, метод Гаусса с выбором главного элемента, при малых порядках он предпочтительнее.
Go to the top of the page
 
+Quote Post
iiv
сообщение Nov 21 2012, 17:05
Сообщение #8


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(Serg76 @ Nov 21 2012, 19:22) *
Возьмите, например, метод Гаусса с выбором главного элемента, при малых порядках он предпочтительнее.

да, но, всяко, ТС не озвучил ни тип железа, ни тип сетки. Если взять экспоненциальео сгущающуюся сетку и эдак 10 точек, то Гаусс с выбором (и по строке и по столбцу) уже в двойной точности развалится, хотя из всех "просто программируемых" методов - это самый простой, строчек в 15 можно уложиться.
Go to the top of the page
 
+Quote Post
Petrovich
сообщение Nov 21 2012, 17:54
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 2-06-05
Из: Днепропетровск
Пользователь №: 5 658



Цитата(iiv @ Nov 21 2012, 20:05) *
да, но, всяко, ТС не озвучил ни тип железа, ни тип сетки. Если взять экспоненциальео сгущающуюся сетку и эдак 10 точек, то Гаусс с выбором (и по строке и по столбцу) уже в двойной точности развалится, хотя из всех "просто программируемых" методов - это самый простой, строчек в 15 можно уложиться.

Процессор PIC32. Узловых точек может быть от 2 до 6. Точность... Не знаю с какой точностью должен быть коэффициент, но вычисленный по построенному полиному результат должен имет один знак после запятой. На вычисление есть около 5 мс.
Почитаю про Гауса. Спасибо за советы.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Nov 21 2012, 18:29
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(Petrovich @ Nov 21 2012, 21:54) *
Узловых точек может быть от 2 до 6. Точность... Не знаю с какой точностью должен быть коэффициент, но вычисленный по построенному полиному результат должен имет один знак после запятой.

Так проблем тогда не должно быть
Go to the top of the page
 
+Quote Post
iiv
сообщение Nov 21 2012, 18:36
Сообщение #11


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(Petrovich @ Nov 21 2012, 23:54) *
Процессор PIC32. Узловых точек может быть от 2 до 6. Точность...На вычисление есть около 5 мс.
Почитаю про Гауса. Спасибо за советы.

Тогда выбора почти нет... Программируете Гаусса, но обязательно с выбором ведущего элемента по всей оставшейся подматрице - не пугайтесь, это реально просто! Должно при старании получится строк 15. Делаете это в одинарной точности, ее обычно будет не хватать, если точки криво располагаются... Дальне любым простым итерационным методом уточняете решение, в Вашем случае сходимость будет однозначно, поэтому, не мудрствуя лукаво, можно поставить простую итерацию. Стоимость будет на матрице 6х6 примерно 100 флоат операций. Сделаете пяток таких итераций, получите устойчивое решение. Если с сеткой будет везти, то и Гаусса хватит.

Гаусс на даубле отъест у Вас раз так в 20 больше арифметических ресурсов, в 5мс не уложитесь sad.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016