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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 11:25   #1
Diablo221
 
Регистрация: 16.05.2009
Сообщений: 5
По умолчанию Формула Лагранжа

Помогите пожалуйста. Нужно было написать программу в Паскале по формуле Лагранжа. Программу я нашёл, но при запуске она выдаёт ошибкуivision by zero. Почему так происходит и что тогда нужно исправить? Программа ниже:
program FormLagr;

const
Nmax = 50;

type
massiv = array[0..Nmax] of real;

var
X,Y,D: massiv;
P,x0: Real;
i,j,n: Integer;
exit:String;

function Lagr(x0:real):Real;
var
s:real;
begin
s:=0;
for i:=0 to n do
s:=s+Y[i]/((x0-X[i])*D[i]+0);
lagr:=P*s;
end;

begin
Write('n= ');
ReadLn(n);
for i:=0 to n do begin
Write('x',i,'= ');
ReadLn(X[i]);
Write('y',i,'= ');
ReadLn(Y[i]);
end;
{D}
for i:=0 to n do begin
D[i]:=1;
for j:=0 to n do
if j<>i then
D[i]:=D[i]*(X[i]-X[j]);
end; {D}
repeat
Write('x= ');
ReadLn(x0);
{P}
P:=1;
for i:=0 to n do
P:=P*(x0-X[i]); {P}
WriteLn('y= ',lagr(x0):3:3);
until false;
end.
Diablo221 вне форума Ответить с цитированием
Старый 16.05.2009, 12:25   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Если ничего не путаю, то это деление на ноль. (что впринцыпе невозможно осуществить)

Убедитесь что у вас в строке s:=s+Y[i]/((x0-X[i])*D[i]+0); (функция Lagr) не получается в знаменателе ноль. (к стати, а зачем у вас там прибавляется ноль? В этом есть какой-то тайный смысл?)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 16.05.2009 в 12:29.
ROD вне форума Ответить с цитированием
Старый 16.05.2009, 15:19   #3
Diablo221
 
Регистрация: 16.05.2009
Сообщений: 5
По умолчанию

Спасибо. Да, действительно дело было в формуле. Вопрос следущий: как составить блок-схему для этой программы?
Diablo221 вне форума Ответить с цитированием
Старый 16.05.2009, 20:56   #4
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Поищите ГОСТы на блок-схемы для программ, там достаточно исчерпывающе написанно как составлять блок-схемы программ. (ГОСТ еще советский, так что не пугайтесь, увидя советские ГОСТы для блоксхем программ)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
график функции sinx, построит функцию на основе многочлена (по формуле Лагранжа). Alexcomeback Общие вопросы C/C++ 2 18.04.2009 14:08
Интерполяционный многочлен лагранжа 3.14oner Паскаль, Turbo Pascal, PascalABC.NET 2 10.11.2008 17:30
Формула Танечка Microsoft Office Excel 3 26.06.2008 09:11
Формула Daniil2 Microsoft Office Excel 5 13.12.2007 18:33
Помогите с интерполяционными функциями Лагранжа victor07 Помощь студентам 3 03.12.2007 15:47