Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

вот если что, сам когда то делал, проверено на авре:

Отправлено kan 29 мая 2008 г. 11:34
В ответ на: у меня есть интерполяция по лагранжу, на любую степень, надо? отправлено <font color=gray>kan</font> 29 мая 2008 г. 11:27

/*************************************************************************
Полином Лагранжа по Эйтекену.

function LagrangeInterpolate(
const n : Integer;
const x : array of Real;
F : array of Real;
t : Real):Real;

Параметры:
N - число точек массиве минус один
X, F - массивы абсцисс и ординат с номерами от 0 до N.
T - параметр, положение точки на кривой.

Результат:
Значение интерполяционного полинома проходящего через точки
(x[i], F[i]), в точке t.
*************************************************************************/

double lagrangeinterpolate(int n, double * x, double * f, double t)
{
// проверка-защита от деления на 0
for(unsigned char j = 0; j < n; j++)
{
for(unsigned char i = j+1; i <= n; i++)
{
if (x[i] == x[j])
return 0;// выход если какие либо две точки совпадают
}
}
// рассчет полинома
double result = 0;
for(unsigned char j = 0; j <= n; j++)
{
double sum = 1;
for(unsigned char i = 0; i <= n; i++)
{
if (i!=j) sum *= (t-x[i])/(x[j]-x[i]);
}
result +=f[j]*sum;
}
return result;
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
отымите от 2 единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru