Страница 1 из 1

[Pascal] Вычислить приближенное значение

Добавлено: 26 сен 2008, 13:47
Alexey91
Здравствуйте!

В задаче необходимо вычислить приближенно значение суммы с точностью до e=0.0001
S= 1 - 1/(2*3) + 1/(3*4)^2 - 1/(4*5)^3... (S= 0,84015)
Для решения использовать циклы while и repeat.

Вообще, что я могу сказать. Мне непонятно все в задаче с приближенным значением, зачем нам нужно создавать переменную e, если мы можем к примеру вычислить сумму и без нее (вычислив только вышеуказанное выражение). Но задача гласит другое :)

Значок ^ - это степень.

При компиляции возникает ошибка - float point overflow, код я оставил в универе к сожалению :(
Препод что-то бурчит и ничего говорить не хочет, возможно одна из причин, что я иду по лабам с опережением.
Но вот уже долбаюсь несколько дней, никак не могу с ней справиться.

Пожалуйста ответьте), если не кодом, то словами скажите, что надо делать, буду очень рад!

Re: [Pascal] Вычислить приближенное значение

Добавлено: 29 сен 2008, 12:32
somewhere
зачем нам нужно создавать переменную e, если мы можем к примеру вычислить сумму и без нее (вычислив только вышеуказанное выражение)
Во-первых вышеуказанное выражение имеет бесконечную запись, и как следствие сумма никогда не вычислится абсолютно точно. Значит сумму нужно вычислять до какого то знака, о чем собственно и гласит заданная точность Е. И вообще вас никто не заставляет использовать для нее переменную, можете использовать константу или явным образом задать это число в коде.
При компиляции возникает ошибка - float point overflow
Если возникает на стадии компиляции, то мне сложно представить ваш код. Но что бурчит препод, я думаю, здесь писать нельзя ))))
Вообще, если заметите как отличается следущее слагаемое от предыдущего, то задача решается легко. И для этого по-видимому не понадобится даже возведение в степень.

Re: [Pascal] Вычислить приближенное значение

Добавлено: 06 окт 2008, 02:25
MrVenom
Специально для тебя))
var
Res, Eps: Real;
i:integer;
const e=0.0001;
Function Power(A,B: Real): Real;
Var
T:Real;
Begin
T := Abs(A);
If A < 0 Then Power := (-1) * Exp(B * Ln(T)) Else Power := Exp(B * Ln(T));
End;
begin
Res := 1;
i := 1;
Eps := 1;
repeat
Eps := Power(-1, i)/Power((i+1)*(i+2), i);
Res := Res + Eps;
inc(i);
until abs(Eps) < e;
write(Res);
end.

Re: [Pascal] Вычислить приближенное значение

Добавлено: 06 окт 2008, 09:06
somewhere
Решено "в лоб" - ответ математика, не программиста )))

Re: [Pascal] Вычислить приближенное значение

Добавлено: 06 окт 2008, 12:50
MrVenom
Решено "в лоб" - ответ математика, не программиста )))
дык я математик-программист)) по крайней мере так написано в дипломе будет. А задачка проще простого