Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 27.02.2013, 11:00   #1 (permalink)
Neonn1k
Member
 
Аватар для Neonn1k
 
Регистрация: 23.09.2008
Сообщений: 946
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 397
По умолчанию Расчёт и таблица

На любом языке программирования написать программу:
"Расчёт и таблица многочленов Лагранта и Ньютона(с решением)".

Может быть есть части кода, либо подскажите. Либо вся задача у кого имеется. Буду благодарен любой помощи.
Neonn1k вне форума   Ответить с цитированием

Старый 27.02.2013, 11:00
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую вам внимательно пролистать эти топики, они очень похожи на вашу тему

Таблица валютных курсов
Таблица WORD в EXCEL c переменными данными

Старый 27.02.2013, 12:06   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,300
Сказал(а) спасибо: 290
Поблагодарили 512 раз(а) в 169 сообщениях
Репутация: 93301
По умолчанию

Цитата:
Сообщение от Neonn1k Посмотреть сообщение
На любом языке программирования написать программу:
"Расчёт и таблица многочленов Лагранта и Ньютона(с решением)".

Может быть есть части кода, либо подскажите. Либо вся задача у кого имеется. Буду благодарен любой помощи.
Во-первых, не Лагранта, а Лагранжа, а во-вторых (и в главных) - нужна конкретная функция, интервал аргумента и шаг. Или требуется "универсальная" программа?
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 27.02.2013, 19:10   #3 (permalink)
Neonn1k
Member
 
Аватар для Neonn1k
 
Регистрация: 23.09.2008
Сообщений: 946
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 397
По умолчанию

Универсальная программа требуется.
Neonn1k вне форума   Ответить с цитированием
Старый 27.02.2013, 20:50   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,300
Сказал(а) спасибо: 290
Поблагодарили 512 раз(а) в 169 сообщениях
Репутация: 93301
По умолчанию

Ладно, пишу программу. Когда закончу - не знаю. Как пойдет.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 28.02.2013, 09:56   #5 (permalink)
Neonn1k
Member
 
Аватар для Neonn1k
 
Регистрация: 23.09.2008
Сообщений: 946
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 397
По умолчанию

Благодарю!
Neonn1k вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.02.2013, 10:56   #6 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,300
Сказал(а) спасибо: 290
Поблагодарили 512 раз(а) в 169 сообщениях
Репутация: 93301
По умолчанию

Ну вот, нарисовал. Паскаль (Turbo, Free), естественно. Метод решения был взят отсюда (да простят меня коллеги за ссылки, но без них - никак):
Многочлен Ньютона интерполяционный
Лагранжа интерполяционная формула
Между прочим, в первой (Ньютон) лёгкий брёх: поскольку нумерация начинается с нуля, то считать надо не до n+1, как у них, а до n. Учтено.
В программе по запросам предусмотрены следующие ветвления: расчет интерполяции функции пользователя (в этом случае задаются начальное и конечное значения интервала, степень полинома n и (n+1) значений функции), работа с тестовой функцией (Sin(x) от 0 до 6), расчет интерполяционного полинома каждым из методов отдельно либо обоими сразу.
С Днём рождения, Никита!
Код:
Var
 x,y,b:Array[0..9] of Real;
 n,m,i,j,k,N_L,T_R:Byte;
 Xbeg,Xfin,Dx,DX1,P,P1,P2,S,xx,yy:Real;
Begin
 Write('Your function - 1, Test function (Sin(x) from 0 to 6) - 2 ');
 Readln(T_R);
 If T_R=1 then
  begin
   Write('Chooze the method: Newton - 1, Lagrange - 2, Both - 3 ');
   Readln(N_L);
  end
 else N_L:=3;
 If T_R=1 then
  begin
   Write('Polinomial degree (n<10) = ');
   Readln(n);
   Write('Xbeg = ');
   Readln(Xbeg);
   Write('Xfin = ');
   Readln(Xfin);
   DX:=(Xfin-Xbeg)/n;
   for i:=0 to n do x[i]:=Xbeg+DX*i;
   for i:=0 to n do
    begin
     write('y[',i,']= ');
     readln(y[i]);
    end;
  end
 else
  begin
   n:=6;
   Xbeg:=0;
   Xfin:=6;
   DX:=1;
   b[0]:=y[0];
   for i:=0 to n do
    begin
     x[i]:=Xbeg+DX*i;
     y[i]:=Sin(x[i]);
    end;
  end;
  If (N_L=1) or (N_L=3) then {Newton coefficients}
   begin
    for i:=1 to n do
     begin
      S:=b[0];
      for j:=1 to i-1 do
       begin
        P:=1;
        for k:=0 to j-1 do
         P:=P*(x[i]-x[k]);
        S:=S+b[j]*P;
       end;
      P:=1;
      for k:=0 to i-1 do
       P:=P*(x[i]-x[k]);
      b[i]:=(y[i]-S)/P;
     end;
   end;
 If T_R=1 then
  begin
   Write('New n: ');
   Readln(m);
  end else m:=n*2;
 DX1:=(Xfin-Xbeg)/m;
 Write('   x   ');
 If (N_L=1) or (N_L=3) then Write('       Newton   ');
 If (N_L=2) or (N_L=3) then Write('   Lagrange  ');
 If T_R=2 then Writeln('   Accurate  ') else Writeln;
 For i:=0 to m do
  begin
   xx:=Xbeg+DX1*i;
   Write(xx:7:3);
   if (N_L=1) or (N_L=3) then { Newton }
    begin
     yy:=b[0];
     for j:=1 to n do
      begin
       P:=1;
       for k:=0 to j-1 do P:=P*(xx-x[k]);
       yy:=yy+b[j]*P;
      end;
     write(yy:13:3);
    end;
   if (N_L=2) or (N_L=3) then { Lagrange }
    begin
     yy:=0;
     for j:=0 to n do
      begin
       P1:=1;
       P2:=1;
       for k:=0 to n do
        if k<>j then
         begin
          P1:=P1*(xx-x[k]);
          P2:=P2*(x[j]-x[k]);
         end;
       yy:=yy+y[j]*P1/P2;
      end;
     write(yy:13:3);
    end;
   if T_R=2 then writeln(Sin(xx):13:3) else writeln;
  end;
 Readln;
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 28.02.2013, 20:50   #7 (permalink)
Neonn1k
Member
 
Аватар для Neonn1k
 
Регистрация: 23.09.2008
Сообщений: 946
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 397
По умолчанию

Спасибо за задачу! Большое спасибо) С 28февраля по 1 марта будет доля секунды... 29февраля) На рабочем столе отсчёт идёт до это доли)
Neonn1k вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:06.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.