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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2012, 19:20   #1
Mike9362
Новичок
Джуниор
 
Регистрация: 04.06.2012
Сообщений: 2
По умолчанию Построить интерполяционный многочлен Ньютона (Pascal)

Задача: Построить интерполяционный многочлен Ньютона по известным в узлах значениям функции f(x), вычислить значения этого многочлена в равномерной сетке точек на отрезке [a,b] с шагом h и сравнить их со значениями функции f(x) в этих точках. Использовать схему интерполирования вперёд.
Функция: f(x)=sqrt(x)*sin(x)
Значения функции:
Х0=0,1
Х1=0,2
Х2=0,25
Х3=0,3
Х4=0,4
Х5=0,45
Отрезок:
a=0,2
b=0,7
Шаг: h=0,01

есть программа но она работает неправильно (слишком большая погрешность) нужно как то ввести а и b
Код:
program N;
const
        h=0.01;
        a=0.2;
        b=0.7;
function
        f(x:real):real;
        begin
                f:=sqrt(x)*sin(x);
        end;
var
        mas,masX:array[1..6]of real;
        i,j:integer;
        P,delta,fun,pr,procdelta:real;
begin
        mas[1]:=0.1;
        mas[2]:=0.2;
        mas[3]:=0.25;
        mas[4]:=0.3;
        mas[5]:=0.4;
        mas[6]:=0.45;
        for i:=1 to 6 do
                masX[i]:=f(mas[i]);
        for j:=1 to 5 do
                for i:=6 downto j+1 do
                       masX[i]:=(masX[i]-masX[i-1])/(mas[i]-mas[i-j]);
        for i:=1 to 6 do
                writeln('RR(',i,')=',masX[i]:11:10);
        for i:=0 to 51 do
                begin
                        pr:=h*i;
                        P:=masX[j];
                        for j:=2 to 6 do
                                P:=masX[j]+(pr-mas[j])*P;
                        fun:=f(pr);
                        delta:=abs(P-fun);
                        procdelta:=(delta/fun)*100;
                        writeln('x(',i,')=',(pr):3:2,' P(x)=',P:7:5,' F(x)=',fun:7:5,' delta=',delta:7:5,' delta(%)=',procdelta:5:2,'%');
                end;
        readln;
end.
Помогите пожалуйста, спасибо.

Последний раз редактировалось Mike9362; 04.06.2012 в 19:29.
Mike9362 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интерполяционный многочлен Лагранжа, Pascal Ladyia Помощь студентам 8 15.10.2013 15:24
Интерполяционный многочлен Лагранжа relax92 Общие вопросы C/C++ 10 20.02.2012 19:15
интерполяционный полином Ньютона построить в делфи Klik_1602 Помощь студентам 2 16.06.2011 06:33
Интерполяционный многочлен лагранжа 3.14oner Паскаль, Turbo Pascal, PascalABC.NET 2 10.11.2008 17:30