То есть тебе нужно построить полином по этой таблице, а потом вывести значения в этих четырех точках. Так? Ньютон - это вроде как частный случай Лагранжа.. )) Лагранжа ты вроде как сделала. В чем затруднение?
Dark_san
21.04.2010 5:23
В том, что я обсалютно не понимаю этот метод. И нужна конечная общая формула, чему равно значение в этих точках Хотя бы, что бы пока забить через мат кад , а уж потом программку
Dark_san
21.04.2010 5:45
Нужна помощь, скрипя зубами, пытаюсь написать процедуру для Ньютона, но нужен хелп вот в ожном кусочке кода.
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? Меня препод съест
Lapp
21.04.2010 7:05
Цитата(Dark_san @ 21.04.2010 2:45)
if j=i then goto l; p:=p*(xx-x[j]); l:
Вот кусочек когда, можно как то это оформить без goto?
Гм?..
if j<>i then p:=p*(xx-x[j]);
Цитата
Меня препод съест
И правильно сделает, приятного ему аппетита..
Гость
22.04.2010 0:50
Цитата(Lapp @ 21.04.2010 3:05)
Гм?..
if j<>i then p:=p*(xx-x[j]);
И правильно сделает, приятного ему аппетита..
Ну... не честно ))
Dark_san
22.04.2010 0:58
Цитата(Lapp @ 21.04.2010 4:05)
Гм?..
if j<>i then p:=p*(xx-x[j]);
И правильно сделает, приятного ему аппетита..
Т.е
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;
Lapp
22.04.2010 2:37
Цитата(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. Ты уж определись, что именно тебе нужно, дорогая негритяночка..
Я посмотрю попозже твою прогу сегодня. И, может, напишу ченть. Мне нравится, что ты хоть что-то делаешь. Скажи препу - пусть оставит мне кусочек от обеда )). А вообще - ужасные у вас порядки..
Dark_san
22.04.2010 3:31
)) бывает и такое
Lapp
22.04.2010 14:49
Как и обещал, в конце трудового дня и перед положением тела в кресла у ТВ пишу своей далекой африканской (или австралийской?) корреспондентке - темной, но образованной труженице компьютера и всякого прочего интеграла..
Вот тебе предмет твоих ночных мечт, о гордая и независимая дочь прерий (или джунглей?) И после того, как ты покажешь ЭТО своему Высокочтимому шаману.. тьфу, пропасть! преподу - он тебя так возлюбит, что уж ТОЧНО СЪЕСТ!! как это у вас там принято.. (брр.. даже не зови в гости - не приеду!..))
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)
)) бывает и такое
Это какое же?? весь дрожу и бледнею с лица..
Dark_san
22.04.2010 16:40
Спасибо но.. Во первых выдает 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]4,' Y[',i,']',y[i]4); end; write(' Otvet f(x*)='); textcolor(18); writeln(s:5:3); writeln; textcolor(15); write(' Nazhmite Enter');
readln; end
Воооооооо ^_^ все оки теперь. Спасиб ))) скоро прийду с схемой ейткина)))
Lapp
22.04.2010 16:59
Цитата(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"... кашмар..
Цитата
Спасиб ))) скоро прийду с схемой ейткина)))
ну, это уже не ко мне.. мою прекрасную программу забраковала - успехов тебе..
Dark_san
22.04.2010 17:05
Цитата(Lapp @ 22.04.2010 13:59)
0.65459
Откомпилируй с информацией о строках и скажи, в какой строке сбой.
Натупил..кхм... это как ? точнее где)
Добавлено через 2 мин. Вобщем вот тут, на n-ой итерации p:=p+Prod(t,k-1)*FinDif(k,0)/f выбивает, Eror 207 Invalid Floating point operation. т.е переполнение... вот)
Dark_san
23.04.2010 0:06
Не забраковала, а потерялась ) Где там игрики? куда икс вводить нашла а вот с игриками- проблема
Lapp
23.04.2010 3:33
Цитата(Dark_san @ 22.04.2010 21:06)
Не забраковала, а потерялась )
Гм..
Цитата
Где там игрики? куда икс вводить нашла а вот с игриками- проблема
- ? Это твои "игрики". Я при наборе отрезал два знака в конце. Понимаешь? Добавь. Вот и все. В чем проблема? Ты меня начинаешь разочаровывать, бушмэночка..
Проверил на Турбо - да, есть проблема. Решается небольшой коррекцией функции 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)
Это тоже не влияет на математику, но к компьютерным вычислениям относится более щадяще..
Пиши, что получается. Задавай вопросы, что есть что и зачем. Не стесняйся. Мне гораздо больше нравится, когда спрашивают, а не когда спишут, сдадут и забудут..
Dark_san
23.04.2010 7:53
Поняла. А где же массив с моими иксами ?)
Добавлено через 1 мин. п.с онли BP или Вижуал си для этого предмета >< да и с паскалем почти не общалась, очень теряюсь в коде
Lapp
23.04.2010 9:27
Цитата(Dark_san @ 23.04.2010 4:53)
А где же массив с моими иксами ?)
Ну, на зачема он нужен, скажи плз? По определению, полином сэра Исаака работает исключительно с равноотстоящими точками по x. Ты приглядись (очки надень)) - все иксы идут ровно через 0.05. Ну, и зачем тогда массив?? Достаточно начала (x0=0.01) и промежутка (h=0.05). Все. Ясно?
Цитата
онли BP или Вижуал си для этого предмета
НЕ ВЕРЮ. Спроси препа. Конкретно, про Free Pascal (FPC).
Добавлено через 7 мин.
Цитата(Dark_san @ 23.04.2010 4:53)
очень теряюсь в коде
Ты не в коде теряешься, а в чем-то еще (не знаю, в чем). Дай себе труд посмотреть внимательно (больше 5 мин) - и уж "игрики" ты бы разглядела - они занимают треть кода!..
Смотри, разленишься - не буду тебе помогать. И даже есть тебя не стану...
Dark_san
23.04.2010 15:52
Цитата(Lapp @ 23.04.2010 6:27)
Ну, на зачема он нужен, скажи плз? По определению, полином сэра Исаака работает исключительно с равноотстоящими точками по x. Ты приглядись (очки надень)) - все иксы идут ровно через 0.05. Ну, и зачем тогда массив?? Достаточно начала (x0=0.01) и промежутка (h=0.05). Все. Ясно?
НЕ ВЕРЮ. Спроси препа. Конкретно, про Free Pascal (FPC).
Добавлено через 7 мин. Ты не в коде теряешься, а в чем-то еще (не знаю, в чем). Дай себе труд посмотреть внимательно (больше 5 мин) - и уж "игрики" ты бы разглядела - они занимают треть кода!..
Смотри, разленишься - не буду тебе помогать. И даже есть тебя не стану...
Теперь поняла , с иксами ( п.с игрики видела, но почему то подумала, что то иксы ) xD
Lapp
23.04.2010 15:57
Цитата(Dark_san @ 23.04.2010 12:52)
Теперь поняла , с иксами ( п.с игрики видела, но почему то подумала, что то иксы ) xD
Так что - тебе теперь все-все понятно?
where is thw cheepesr place to b
16.09.2021 13:17
Teilbar Levitra 20mg
best place to buy furosemide onl
17.09.2021 16:57
cialis levitra viagra compare
order lasix online next day deli
1.11.2021 2:19
Viagra Generico Santiago
Andry
7.11.2021 12:28
Цитата(Dark_san @ 22.04.2010 3:31)
)) бывает и такое
Самомнение свое засунь, знаешь куда
how long does it take for gabape
9.12.2021 23:57
Gnc Substitute For Viagra
buy zithromax z-pak without pres
18.12.2021 20:46
viagra kamagra cialis aneros
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.