20.04.2011, 14:03 | #1 (permalink) |
Новичок
Регистрация: 20.04.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Интерполяция функции
Помогите пожалуйста составить программу интерполяции табличной заданной функции по методу Лангранжа при произвольном расположении узлов. Необходимо выполнить интерполяцию функции, заданной значениями X[i],Y[i], согласно таблице: i x[i] y[i] 0 1.500 0.8862268255 1 1.510 0.8865716850 2 1.525 0.8872930231 3 1.540 0.8881746586 4 1.545 0.8896391990 5 1.580 0.8924282141 Расчитать у(1,55). Заранее благодарен. |
20.04.2011, 14:03 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно такое, что на форуме такую проблему уже решили Функции на Паскале График функции |
23.04.2011, 23:44 | #5 (permalink) |
Новичок
Регистрация: 20.04.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Если кому нужно:
program Interp; {Вычисление значения многочлена Лагранжа для функции, определенной таблично} uses Crt; const m=9; type Vector=array [0..m] of real; var X,Y: vector; {узлы интерполяции} i,j,N: integer; p,L,Xe,h: real; function step: real; {определение оптимального шага интерполяции} var i: integer; min: real; begin min:=Abs(X[1]-X[0]); for i:=1 to N-1 do begin if Abs(X[i+1]-X[i])<min then min:= Abs(X[i+1]-X[i]) end; step:=min; end; {основное тело программы} begin TextBackground(7); TextColor(0); ClrScr; {очистка экрана}; Writeln(' ************************************************** *****'); Writeln(' * Программа интерполяции функции многочленом Лагранжа *'); Writeln(' ************************************************** *****'); Write('Введите порядок многочлена Лагранжа N (>0): '); Read(N); WriteLn('Введите пары значений Xi,Yi (i=0,...,N): '); for i:=0 to N do begin Write('X[',i,']= '); Read(X[i]); Write('Y[',i,']= '); Read(Y[i]); end; h:=step/2; {Вычисление шага интерполяции} WriteLn('Шаг интерполяции h=', h:0:7); WriteLn('Нажмите любую клавишу для вывода интерполяционной таблицы...'); readkey; ClrScr; WriteLn(' Данные интерполяции:'); WriteLn(' X Y '); WriteLn(' ---------------------------'); Xe:=X[0]; while Xe<=(X[N]+h) do begin L:=0; for i:=0 to N do begin p:=1; for j:=0 to N do if j<>i then p:=p*(Xe-X[j])/(X[i]-X[j]); L:=L+y[i]*p; end; WriteLn(' ':10,Xe:0:3,' ':4,L:12:10); Xe:=Xe+h; end; WriteLn(' Шаг интерполяции h=', h:0:7); WriteLn; WriteLn('Нажмите любую клавишу для выхода из программы...'); readkey; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|