
Другие языки программирования и технологии
Вычисления с некоторой точностью
Вычислить бесконечную сумму с заданной точностью E (E >0 и может быть 0.1; 0.01; 0.001 и т.д.). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем E, - это и все последующие слагаемые можно не учитывать. Даны действительные числа х, и целые числа k, n. Вычислить с точностью E (эпсилон) 

Сначала нужно на бумаге произвести некоторые манипуляции:
для k=1 : S1 = (-1)^2 / (2*1)! * (x/9)^(2*2) = +1 / (1*2) * (x/9)^4
для k=2 : S2 = S1 + (-1)^3 / (2*2)! * (x/9)^(2*3) = S1 + (-1) / (1*2*3*4) * (x/9)^6 = S1 + S1 * (-1) / (3*4) * (x/9)^2
для k=3 : S3 = S2 + (-1)^4 / (2*3)! * (x/9)^(2*4) = S2 + (-1) / (1*2*3*4*5*6) * (x/9)^8 = S2 + S2 * (-1) / (5*6) * (x/9)^2
Ну вот. Выявили закономерности.
Ну и теперь, если не ошибаюсь, можно легко составить программу:
var
E, X, X9, S, Sn, F : Double; Z : Byte; Fi : Integer;
begin
Write('Сколько знаков после запятой для E : '); ReadLn(Z);
E := 1; Fi := Z; while Fi > 0 do begin E := E / 10; Dec(Fi); end;
Write('Введите X = '); ReadLn(X);
X9 := X / 9; X9 := X9 * X9; F := 1; Fi := 0; Sn := -1 / F * X9; S := 0;
repeat Inc(Fi, 2); F := F * (Fi - 1) * Fi; Sn := -1 * Sn / F * X9; S := S + Sn; until Abs(Sn) < E;
WriteLn('S = ', S:0:Z);
end.
для k=1 : S1 = (-1)^2 / (2*1)! * (x/9)^(2*2) = +1 / (1*2) * (x/9)^4
для k=2 : S2 = S1 + (-1)^3 / (2*2)! * (x/9)^(2*3) = S1 + (-1) / (1*2*3*4) * (x/9)^6 = S1 + S1 * (-1) / (3*4) * (x/9)^2
для k=3 : S3 = S2 + (-1)^4 / (2*3)! * (x/9)^(2*4) = S2 + (-1) / (1*2*3*4*5*6) * (x/9)^8 = S2 + S2 * (-1) / (5*6) * (x/9)^2
Ну вот. Выявили закономерности.
Ну и теперь, если не ошибаюсь, можно легко составить программу:
var
E, X, X9, S, Sn, F : Double; Z : Byte; Fi : Integer;
begin
Write('Сколько знаков после запятой для E : '); ReadLn(Z);
E := 1; Fi := Z; while Fi > 0 do begin E := E / 10; Dec(Fi); end;
Write('Введите X = '); ReadLn(X);
X9 := X / 9; X9 := X9 * X9; F := 1; Fi := 0; Sn := -1 / F * X9; S := 0;
repeat Inc(Fi, 2); F := F * (Fi - 1) * Fi; Sn := -1 * Sn / F * X9; S := S + Sn; until Abs(Sn) < E;
WriteLn('S = ', S:0:Z);
end.
паскаль? за небольшое вознаграждение помощь гарантирована
Вы хоть бы попытались выложили бы код, вам бы подправили! А за так - никто не возьмется!
Похожие вопросы
- Вопрос по информатике. Почему точность вычислений в С определяется только 16 знаком после запятой и почему именно 16?
- С++ вычисление с точностью
- Вычисление суммы с факториалом в С++?
- Как программировать задачи такого типа: вычисление неопределенного интеграла, нахождение собственных чисел матрицы....
- Текущая разница между Асинхронностью и параллельными вычислениями?
- Вычислить arth Есть ли формула для проверки правильности вычисления .и правильный ли код?
- Откуда точность?
- Вычисление суммы ряда на c++
- вычисление по IP адресу, вопрос
- составить программу вычисление 2**64(два в шестьдесят четвёртой степени), на паскале, с помощтью циклов