IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Интерполяция многочленом ньютона
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


blink.gif
Вот такое вот у меня было лицо smile.gif
Нужен алгоритм для решения програмным путём
Входные данные - 12 X|Y и 4 точки x1 x2 x3 x4.


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 18.04.2010 18:49) *
Входные данные - 12 X|Y и 4 точки x1 x2 x3 x4.

Гм. А по-русски?.. blink.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


х у
0,01 0,991824
0,06 0,951935
0,11 0,913650
0,16 0,876905
0,21 0,841638
0,26 0,807789
0,31 0,775301
0,36 0,744120
0,41 0,714193
0,46 0,685470
0,51 0,657902
0,56 0,631442


x1 x2 x3 x4
0,1243 0,492 0,0094 0,66
Воть... wink.gif


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 20.04.2010 22:17) *
Воть...
То есть тебе нужно построить полином по этой таблице, а потом вывести значения в этих четырех точках. Так?
Ньютон - это вроде как частный случай Лагранжа.. )) Лагранжа ты вроде как сделала. В чем затруднение?



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


В том, что я обсалютно не понимаю этот метод.
И нужна конечная общая формула, чему равно значение в этих точках smile.gif
Хотя бы, что бы пока забить через мат кад , а уж потом программку


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Нужна помощь, скрипя зубами, пытаюсь написать процедуру для Ньютона, но нужен хелп вот в ожном кусочке кода.
 var
s, s1, p, p1, xx, H, J1, a: real;
k, i, n, j, ii, e1, f1, n1: integer;
x, y, z, z1: array [1..50] of real;


begin
repeat
clrscr;
write('Vvedite kolichestvo tochek: ');
readln(n);
if n<=0 then
begin
writeln;
write('Vvodit nado polozhitelnoe chislo! Nazhmite Enter');
readln;
end;
until n>0;
writeln;
for i:=1 to n do
begin
Write('vvedite x',i,': '); Readln(x[i]);
Write('vvedite y',i,': '); Readln(y[i]);
writeln;
end;
write(' Vvedite x*:'); Readln(xx);
s:=y[1];
for i:=2 to n do
begin
p:=1; s1:=0;
for j:=1 to i do
begin
if j=i then
goto l;
p:=p*(xx-x[j]);
l:
p1:=1;
for k:=1 to i do
begin
if j<>k then
p1:=p1*(x[j]-x[k]);
end;
p1:=y[j]/p1; s1:=s1+p1;
end;
p:=p*s1; s:=s+p;

____________________________________________
if j=i then
goto l;
p:=p*(xx-x[j]);
l:

Вот кусочек когда, можно как то это оформить без goto? Меня препод съест sad.gif

Сообщение отредактировано: Lapp -


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 21.04.2010 2:45) *
if j=i then
goto l;
p:=p*(xx-x[j]);
l:

Вот кусочек когда, можно как то это оформить без goto?
Гм?.. blink.gif
if j<>i then p:=p*(xx-x[j]);


Цитата
Меня препод съест sad.gif
И правильно сделает, приятного ему аппетита.. yes2.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Lapp @ 21.04.2010 3:05) *

Гм?.. blink.gif
if j<>i then p:=p*(xx-x[j]);


И правильно сделает, приятного ему аппетита.. yes2.gif

Ну... не честно ))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Цитата(Lapp @ 21.04.2010 4:05) *

Гм?.. blink.gif
if j<>i then p:=p*(xx-x[j]);


И правильно сделает, приятного ему аппетита.. yes2.gif

Т.е
if j=i then
goto l;
p:=p*(xx-x[j]);
l:
p1:=1;

можно заменить на
if j<>i then p:=p*(xx-x[j]) else
p1:=1;


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 21.04.2010 21:58) *

Т.е
if j=i then
goto l;
p:=p*(xx-x[j]);
l:
p1:=1;

можно заменить на
if j<>i then p:=p*(xx-x[j]) else
p1:=1;


Ни в коем разе!! Ты не передергивай - я "else" не писал!
В твоем посте был фрагмент с обходом оператора p:=p*(xx-x[j]) в случае, когда i=j. Все. Никаких других условий не было. То, что стоит за меткой l, будет выполняться всегда. Значит, никаких else. Ты уж определись, что именно тебе нужно, дорогая негритяночка.. smile.gif

Я посмотрю попозже твою прогу сегодня. И, может, напишу ченть. Мне нравится, что ты хоть что-то делаешь. Скажи препу - пусть оставит мне кусочек от обеда )). А вообще - ужасные у вас порядки.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


smile.gif)) бывает и такое smile.gif


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Как и обещал, в конце трудового дня и перед положением тела в кресла у ТВ пишу своей далекой африканской (или австралийской?) корреспондентке - темной, но образованной труженице компьютера и всякого прочего интеграла..

Вот тебе предмет твоих ночных мечт, о гордая и независимая дочь прерий (или джунглей?) И после того, как ты покажешь ЭТО своему Высокочтимому шаману.. тьфу, пропасть! преподу - он тебя так возлюбит, что уж ТОЧНО СЪЕСТ!! как это у вас там принято.. (брр.. даже не зови в гости - не приеду!..))

const
n=11;

const
x0: double= 0.01;
h: double= 0.05;
y: array[0..n]of double = (
0.99,
0.95,
0.91,
0.87,
0.84,
0.80,
0.77,
0.74,
0.71,
0.68,
0.65,
0.63
);

function Prod(t: double; k: integer): double; // t(t-1)...(t-k)
begin
if k=0 then Prod:=t else Prod:=t*Prod(t-1,k-1)
end;


function FinDif(k,i: integer): double; // finite difference
begin
if k=0 then FinDif:=y[i] else FinDif:=FinDif(k-1,i+1)-FinDif(k-1,i)
end;


function NewtonPol(x: double): double;
var
k: integer;
p,t,f: double;
begin
p:=y[0];
t:=(x-x0)/h;
f:=1;
for k:=1 to n do begin
f:=f*k;
p:=p+Prod(t,k-1)*FinDif(k,0)/f
end;
NewtonPol:=p
end;

begin
WriteLn(NewtonPol(0.492):8:5)
end.



Цитата(Dark_san @ 22.04.2010 0:31) *
smile.gif)) бывает и такое smile.gif
Это какое же?? весь дрожу и бледнею с лица.. bad.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Спасибо но..
Во первых выдает Eror 207 Invalid Floating point operation.
Во вторых или я не выспалась, или я не вижу где используется массив с Y. И чуть чуть не поняла твоих констант...


Добавлено через 10 мин.
 Program Nyuton;
uses crt;
var
str: string;
s, s1, p, p1, xx, a: real;
k, i, n, j, ii, e1, f1, n1: integer;
x, y, z : array [1..50] of real;



begin
repeat
clrscr;
write('Vvedite kolichestvo tochek: ');
readln(n);
if n<=0 then
begin
writeln;
write('Vvodit nado polozhitelnoe chislo! Nazhmite Enter');
readln;
end;
until n>0;
writeln;
for i:=1 to n do
begin
Write('vvedite x',i,': '); Readln(x[i]);
Write('vvedite y',i,': '); Readln(y[i]);
writeln;
end;
write(' Vvedite x*:'); Readln(xx);
s:=y[1];
for i:=2 to n do
begin
p:=1; s1:=0;
for j:=1 to i do
begin
if j<>i then p:=p*(xx-x[j]);

p1:=1;
for k:=1 to i do
begin
if j<>k then
p1:=p1*(x[j]-x[k]);
end;
p1:=y[j]/p1; s1:=s1+p1;
end;
p:=p*s1; s:=s+p;
end;
writeln;
for i:=1 to n do
begin
writeln('X[',i,']',x[i]3.gif4,' Y[',i,']',y[i]3.gif4);
end;
write(' Otvet f(x*)=');
textcolor(18);
writeln(s:5:3);
writeln;
textcolor(15);
write(' Nazhmite Enter');

readln;
end

Воооооооо ^_^ все оки теперь.
Спасиб ))) скоро прийду с схемой ейткина)))


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 22.04.2010 13:40) *
Во первых выдает Eror 207 Invalid Floating point operation.
Во вторых или я не выспалась, или я не вижу где используется массив с Y. И чуть чуть не поняла твоих констант...
Используется? В конечных разностях, ессно, по формуле. То бишь в функции FinDif. А задается он константой (я не стал вводить точно, только два знака). Это для простоты, поскольку не имеет отношения к главному. Если тебе нужно вводить вручную или из файла - сделай, как надо.

Теперь скажи: в какой строке ошибка? У меня нет Турбо, я использую только FreePascal. В нем все проходит, вроде.. Сейчас еще раз проверю.. Да, все идет и на этом компе. Вот ответ (с приведенными данными):
0.65459

Откомпилируй с информацией о строках и скажи, в какой строке сбой.

Добавлено через 6 мин.
Цитата(Dark_san @ 22.04.2010 13:40) *
Воооооооо ^_^ все оки теперь.
Фиии! "Nyuton"... кашмар..

Цитата
Спасиб ))) скоро прийду с схемой ейткина)))
ну, это уже не ко мне.. мою прекрасную программу забраковала - успехов тебе..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Цитата(Lapp @ 22.04.2010 13:59) *


0.65459

Откомпилируй с информацией о строках и скажи, в какой строке сбой.

Натупил..кхм... это как ? smile.gif rolleyes.gif точнее где)

Добавлено через 2 мин.
Вобщем вот тут, на n-ой итерации p:=p+Prod(t,k-1)*FinDif(k,0)/f выбивает, Eror 207 Invalid Floating point operation. т.е переполнение... вот)


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Не забраковала, а потерялась smile.gif)
Где там игрики?
куда икс вводить нашла smile.gif
а вот с игриками- проблема sad.gif


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 22.04.2010 21:06) *
Не забраковала, а потерялась smile.gif)
Гм..

Цитата
Где там игрики?
куда икс вводить нашла smile.gif
а вот с игриками- проблема sad.gif
Странно. Ты видишь вот это:
  y: array[0..n]of double = (
0.99,
0.95,
0.91,
0.87,
0.84,
0.80,
0.77,
0.74,
0.71,
0.68,
0.65,
0.63
);
- ? Это твои "игрики". Я при наборе отрезал два знака в конце. Понимаешь? Добавь. Вот и все. В чем проблема? Ты меня начинаешь разочаровывать, бушмэночка..

Проверил на Турбо - да, есть проблема. Решается небольшой коррекцией функции FinDif. В ней нужно ввести дополнительные переменные, чтобы разбить вычисление выражения. Вот так:
function FinDif(k,i: integer): double;
var
a,b: double;
begin
if k=0 then FinDif:=y[i] else begin
a:=FinDif(k-1,i+1);
b:=FinDif(k-1,i);
FinDif:=a-b
end
end;
Как ты понимаешь (надеюсь), в математику или алгоритм это не вносит никаких изменений. Но Турбо, видимо, плохо работает со стеком сопроцессора и переполняет его. Этот workaround спасает ситуацию (не знаю, насколько). Но лучше все-таки взять пергаментный свиток побольше, аккуратно переписать на него весь пакет ТурбоПаскаль, отнести его к самому большому баобабу в округе, дождаться новолуния и закопать его со всеми почестями, станцевав потом на этом месте sarabanda с бубном (или что там у вас полагается по погребальному обряду), а потом скачать FreePascal с http://FreePascal.org и зажить счастливо. Кстати, извиняюсь, Турбо, кажется, не умеет определять строку сбоя, FP умеет, забыл я уже все..

Да, и еще - на всякий случай - измени внутренность цикла в функции NewtonPol, вот так:
    f:=f/k;
p:=p+f*Prod(t,k-1)*FinDif(k,0)
Это тоже не влияет на математику, но к компьютерным вычислениям относится более щадяще..

Пиши, что получается. Задавай вопросы, что есть что и зачем. Не стесняйся. Мне гораздо больше нравится, когда спрашивают, а не когда спишут, сдадут и забудут..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Поняла.
А где же массив с моими иксами ?)

Добавлено через 1 мин.
п.с онли BP sad.gif или Вижуал си для этого предмета >< да и с паскалем почти не общалась, очень теряюсь в коде smile.gif

Сообщение отредактировано: Dark_san -


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Dark_san @ 23.04.2010 4:53) *
А где же массив с моими иксами ?)
Ну, на зачема он нужен, скажи плз? По определению, полином сэра Исаака работает исключительно с равноотстоящими точками по x. Ты приглядись (очки надень)) - все иксы идут ровно через 0.05. Ну, и зачем тогда массив?? Достаточно начала (x0=0.01) и промежутка (h=0.05). Все. Ясно?

Цитата
онли BP sad.gif или Вижуал си для этого предмета
НЕ ВЕРЮ.
Спроси препа. Конкретно, про Free Pascal (FPC).

Добавлено через 7 мин.
Цитата(Dark_san @ 23.04.2010 4:53) *
очень теряюсь в коде smile.gif
Ты не в коде теряешься, а в чем-то еще (не знаю, в чем). Дай себе труд посмотреть внимательно (больше 5 мин) - и уж "игрики" ты бы разглядела - они занимают треть кода!..

Смотри, разленишься - не буду тебе помогать. И даже есть тебя не стану... dry.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Леся

Репутация: -  0  +


Цитата(Lapp @ 23.04.2010 6:27) *

Ну, на зачема он нужен, скажи плз? По определению, полином сэра Исаака работает исключительно с равноотстоящими точками по x. Ты приглядись (очки надень)) - все иксы идут ровно через 0.05. Ну, и зачем тогда массив?? Достаточно начала (x0=0.01) и промежутка (h=0.05). Все. Ясно?

НЕ ВЕРЮ.
Спроси препа. Конкретно, про Free Pascal (FPC).

Добавлено через 7 мин.
Ты не в коде теряешься, а в чем-то еще (не знаю, в чем). Дай себе труд посмотреть внимательно (больше 5 мин) - и уж "игрики" ты бы разглядела - они занимают треть кода!..

Смотри, разленишься - не буду тебе помогать. И даже есть тебя не стану... dry.gif

Теперь поняла , с иксами ( п.с игрики видела, но почему то подумала, что то иксы ) xD


--------------------
adobe photoshop master.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 11:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name