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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2011, 17:21   #1
hottabi4
 
Регистрация: 10.06.2011
Сообщений: 5
По умолчанию интерполяция ньютона

Добрый день всем.
Дали задание по вычислительной математике, никак не могу сделать. Конец семестра и нужно сдать, помогите пожалуйста.
Нужно провести интерполяцию функции F=3*x*x+2*x+14, используя интерполяционную формулу Ньютона на интервале [-10..10] взяв количество узлов интерполяции равных 4. Построить графики исходной функции и интерполирующей функции, а так же график погрешности интерполяции.
Сделать нужно, используя вот эти формулы:

В моем случае уравнение:
Pn(x)=f(x[0])+f(x[i],x[i+1])*(x-x[0])+f(x[i],x[i+1],x[i+2])*(x-x[0])*(x-x[1])+f(x[i],x[i+1],x[i+2],x[i+3])*(x-x[0])*(x-x[1])*(x-x[2]).

Написал функцию, но работать она не хочет:
Код:
function P_Newton(xp,yp: array of real; d:real; n1: integer):real;
var
  l,p,p1,p2:real;
  k,k1,l1,l2,m1,m2: integer;
  yp2,yp3: array of real;
begin
  l:=yp[0];
  p:=1;
  p1:=1;
  p2:=1;
  // 1-ое
  for k:=1 to n1 do
  begin
    p:=p*(d-xp[k-1]);
    for k1:=0 to (n1-k) do
    begin
      yp[k1]:=(yp[k1+1]-yp[k1])/(xp[k1+1]-xp[k1]);
    end;
    // 2-ое
    for l1:=1 to n1 do
    begin
      p1:=p1*(d-xp[l1-1])*(d-xp[l1]);
      for l2:= 1 to n do
      begin
        yp2[l2]:=(((yp[l2+1]-yp[l2+2])/(xp[l2+2]-xp[l2]))-yp[l2])/(xp[l2+2]-xp[l2]);
      end;
      //3-е
      for m1:=1 to n1 do
      begin
        p2:=p2*(d-xp[m1-1])*(d-xp[m1])*(d-xp[m1+1]);
        for m2:=1 to n do
          begin
            yp3[m2]:=(((yp[m2+1]-yp[m2+2])/(xp[m2+2]-xp[m2+1]))-yp[m2+1])/(xp[m2+3]-xp[m2])
          end;
      end;
    end;
    l:=l+p*yp[k1]+p1*yp2[l2]+p2*yp3[m2];
  end;
  P_Newton:=l;
end;
Помогите пожалуйста с кодом функции. Заранее благодарен.
hottabi4 вне форума Ответить с цитированием
Старый 17.06.2011, 10:32   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Сделай отдельные функции для расчета коэффициентов F(X0....Xn) (кстати X(i+k)-X(i) есть h*k) -> результаты сохрани в массив F[]
А потом для каждой точки считаешь P= f0+сумма P[n], где P[n] =F[n]*Q[n], где Q[i]=Произведение (x-xi) (i=0...n)

P.S. код не написал т.к. с паскалем туго.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интерполяция армфайт Паскаль, Turbo Pascal, PascalABC.NET 0 12.01.2011 10:43
Интерполяция полиномом Ньютона Igolka6662 Помощь студентам 1 26.11.2010 19:22
Интерполяция Ньютона вперед Darknes Общие вопросы C/C++ 1 16.09.2010 07:54
Интерполяция ma3k Общие вопросы Delphi 0 17.07.2010 20:32
Интерполяция изображений(Сплайн интерполяция)?????) Danyla Помощь студентам 0 13.04.2010 09:08