Решить в Паскале .С подробным решением. Дано действительное число х≠0. Вычислить значение...

0 голосов
76 просмотров

Решить в Паскале .С подробным решением. Дано действительное число х≠0. Вычислить значение выражения с точностью 10-3.


image

Информатика (12.2k баллов) | 76 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Примем, что требуемая точность ε достигнута, если очередное слагаемое по модулю не превышает этого ε.
Обратим внимание что в выражении имеется операция возведения в степень, которая в Паскале выполняется с использованием тождества
\displaystyle x^k=e^{k\cdot\ln(x)}, вносящего существенную погрешность. В то же время, запрошенная точность ε=10⁻³ невысока, что позволяет не озадачиваться более точными методами вычисления степени, такими, как многократное умножение.
Итог: алгоритм вычисления - цикл с накоплением суммы и выходом по выполнению условия достижения заданной точности.

// PascalABC.NET 3.3, сборка 1590 от 03.12.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var x:=readReal('Введите x:');
  var (s,eps,k):=(0.0,1e-3,1);
  while true do begin
    var xk:=Power(x,k);
    var xs:=xk*xk*Sin(xk)/(k*k);
    s+=xs; k+=1;
    if (Abs(xs)<=eps) or (Abs(xs)>=MaxReal) then break
    end;
  Writeln('S=',s)
end.

Примеры
Введите x: -2.5
S=-бесконечность

Введите x: -1
S=-0.69163022624612

Введите x: 0.173
S=0.00515862949420988

Введите x: 2
S=бесконечность

(150k баллов)