Будем считать, что х может быть любым действительным числом var x, y: real BEGIN write ("Vvedite x: "); readln (x); if (x < 0) then y = x + 1/3*exp(3*ln(abs(x))) - 1/5*exp(5*ln(abs(x))) - 1/7*exp(7*ln(abs(x))); if (x = 0) then y = 0; if (x > 0) then y = x - 1/3*exp(3*ln(abs(x))) + 1/5*exp(5*ln(abs(x))) + 1/7*exp(7*ln(abs(x))); writeln (y); END. Тут дело вот в чем. В классическом Паскале почему-то нет операции возведения в степень, поэтому приходится извращаться по формуле a^b = e^( ln(a^b) ) = e^( b*ln |a| ) К сожалению, формула работает не всегда. С отрицательными x в нечетной степени она будет давать неверный знак. Поэтому я и добавил проверку if (x < 0). В Delphi и в некоторых реализациях Паскаля есть функция Power или Pow, но это редкость.
var x, y: real
BEGIN
write ("Vvedite x: "); readln (x);
if (x < 0) then
y = x + 1/3*exp(3*ln(abs(x))) - 1/5*exp(5*ln(abs(x))) - 1/7*exp(7*ln(abs(x)));
if (x = 0) then y = 0;
if (x > 0) then
y = x - 1/3*exp(3*ln(abs(x))) + 1/5*exp(5*ln(abs(x))) + 1/7*exp(7*ln(abs(x)));
writeln (y);
END.
Тут дело вот в чем. В классическом Паскале почему-то нет операции возведения в степень, поэтому приходится извращаться по формуле
a^b = e^( ln(a^b) ) = e^( b*ln |a| )
К сожалению, формула работает не всегда. С отрицательными x в нечетной степени она будет давать неверный знак. Поэтому я и добавил проверку if (x < 0).
В Delphi и в некоторых реализациях Паскаля есть функция Power или Pow, но это редкость.
Действие | x | y | z|
x:=5 | 5 | | |
y:=10 | 5 | 10 | |
z:=7.5 | 5 | 10 | 7.5 |
x:=z*2-x (подставляем значения вместо переменных x:=7.5*2-5) | 10 | 10 | 7.5 |
z:=x-z/3+1.5 (z:=10-7.5/3+1.5) | 10 | 10 | 9 |
y:=z+3*y (y:=9+3*10) | 10 | 39 | 9 |
y:=z-2+y (y:=9-2+39) | 10 | 46 | 9 |
x:=x+2*z (x:=10+2*9) | 28 | 46 | 9 |
z:=7-z*2 (z:=7-9*2) | 28 | 46 | -12 |
x=28; y=46; z=-12