• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Интерполяция функции

  • Автор темы Автор темы DimX
  • Дата начала Дата начала

DimX

Ученик
Регистрация
20 Апр 2011
Сообщения
5
Реакции
0
Баллы
0
Интерполяция функции

Доброго времени суток!
Помогите пожалуйста составить программу интерполяции табличной заданной функции по методу Лангранжа при произвольном расположении узлов. Необходимо выполнить интерполяцию функции, заданной значениями X,Y, согласно таблице:

i x y
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).:tehnari_ru_117:
Заранее благодарен.
 
Язык-Паскаль
 
можно пожалуйста хоть какие идеи?...:tehnari_ru_657:
 
Если кому нужно:
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)<min then min:= Abs(X[i+1]-X)
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);
Write('Y[',i,']= '); Read(Y);
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-X[j]);
L:=L+y*p;
end;
WriteLn(' ':10,Xe:0:3,' ':4,L:12:10);
Xe:=Xe+h;
end;
WriteLn(' Шаг интерполяции h=', h:0:7);
WriteLn;
WriteLn('Нажмите любую клавишу для выхода из программы...');
readkey;
end.
 

Похожие темы

Назад
Сверху