Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2010, 22:17   #1
Anarki
Пользователь
 
Аватар для Anarki
 
Регистрация: 13.09.2009
Сообщений: 29
Вопрос Интерполяция по Лагранжу по конечным разностям

Требуется выполнить интерполяцию на основе полученных конечных разностей. Алгоритм вроде бы написан правильно, не могу лишь понять как правильно записать конечные разности 'у' в строке 's=s+p*y(i)' ?
Код:
x=[11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12];
y=[-0.00023, 1.080087, 2.064282, 2.854531, 3.37121, 3.560925, 3.402017, 2.90698, 2.121544, 1.120452, 0.000357];

function[s]=lagrang(x,y,xx,n)
s=0;
for i=1:n
   p=1;
   for j=1:n
      if abs(i-j)>%eps
         p=p*(xx-x(j))/(x(i)-x(j));
      end;
   end;
   s=s+p*y(i);     //как правильно записать здесь y ?
end;
endfunction;

funcprot(0);
for i=1:10
   for j=1:11-i
      y(i+1,j)=y(i,j+1)-y(i,j);   //конечные разности
   end;
end;
n=11; 
i=0;
printf ("\n\n =======================================");
for p=11.0:0.1:11.4
    i=i+1;
    ff(i)=lagrang(x,y,p,n);
    printf ("\n xx=%f f=%f",p,ff(i));
end;
Вывод:
Цитата:
=================================== ====
xx=11.000000 f=-0.000230
xx=11.100000 f=1.080317
xx=11.200000 f=-0.096122
xx=11.300000 f=-0.097824
xx=11.400000 f=0.018200
ЗЫ: Написано на scilab.
Anarki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерполяция лагранжа Styks Общие вопросы C/C++ 4 14.12.2009 18:47
Определить, совпадает ли текст с конечным отрезком ряда 0123456789 stasig Паскаль, Turbo Pascal, PascalABC.NET 2 09.12.2008 22:52
линейная интерполяция Auster Помощь студентам 4 22.04.2008 18:02