Найти сумму - Pascal (88001)
Формулировка задачи:
Доброго дня! Помогите тут задача 5 что то не получается
В 8 всегда ответ 2, почему - незнаю
Вот что сам сделал
Тут сумма, например при х = 0,82 равна 0,355465707949 а должна быть 0,682221207287614 (т.к. она должна ~ cos(x))
Уже весь мозг сломалНе пойму чем ошибка
Не по теме:
Компилировал Free Pascal 2.4.4. из командной строки
Не по теме:
Если сможете, то посмотрите ещё задачи 8, 11. Просто если у кого остались задачи, то поделитесь пжлст
Решение задачи: «Найти сумму»
textual
Листинг программы
Const eps = 0.001; Function fib_sample(n : Integer) : Extended; Var i : Integer; Num, un1, un2 : Extended; Begin un1 := 1; un2 := 1; For i := 3 To n Do Begin Num := un1 + un2; un2 := un1; un1 := Num; End; fib_sample:=Num; End; {Function Pow(x, y : Real) : Extended; begin If x > 0 Then Pow := Exp(y * Ln(x)) Else If x < 0 Then Pow := Exp(y * Ln(Abs(x))) Else If y = 0 Then Pow := 1 Else Pow := 0; End;} Function Pow(Base : Real; Exponent : Real): Extended; var Tmp: Real; begin Pow:=0; if Int(Exponent/2)=Exponent/2 then Base:=Abs(Base); if Exponent=0 then begin Pow:=1; Exit end; if Base=0 then begin Pow:=0; exit end; if Base>0 then begin Tmp:=Exp((Abs(Exponent))*Ln(Base)); if Exponent>0 then begin Pow:=Tmp; exit end; if Exponent<0 then begin Pow:=1/Tmp; exit end; end; if Base<0 then begin Tmp :=Exp((Abs(Exponent))*Ln(Abs(Base))); if Exponent>0 then begin Pow:=-Tmp; exit end; if Exponent<0 then begin Pow:=-1/Tmp; exit end; end; end; Function fib_test(n : Real) : Extended; Begin fib_test := (1/sqrt(5)) * (Pow((1+sqrt(5))/2, n) - Pow((1-sqrt(5))/2, n)); End; Var i:Integer; Begin i := 3; While fib_test(i) - fib_sample(i) < eps Do Begin WriteLn(fib_test(i):8:15, ' ', fib_sample(i):8:15); Inc(i); End; WriteLn ('Погрешность более чем ',eps:6:3,' начинается с ' , i,' номера'); WriteLn ('Число Фибонначи по образцу: ',fib_sample(i):0:0); WriteLn ('Число Фибонначи по формуле: ',fib_test(i):0:8); ReadLn; End.{6.XII 2011}
Объяснение кода листинга программы
- Находится функция fib_sample, которая вычисляет n-ое число Фибоначчи.
- Используется цикл для вычисления последовательности чисел Фибоначчи.
- Находится функция Pow, которая вычисляет x в степени y.
- Находится функция fib_test, которая вычисляет число Фибоначчи по формуле.
- В основной программе вычисляется число Фибоначчи по образцу и по формуле, и происходит сравнение результатов.
- Если разница между результатами больше заданной погрешности, то происходит вывод информации об этом.
- Выводится число Фибоначчи по образцу и по формуле.
- Программа завершается чтением строки с помощью ReadLn.