Как сделать на языке паскаль y=lg|arctg(x)-sin(ax)| где x=10^a+cos(a+1) Очень важно помогите
Как сделать на языке паскаль
y=lg|arctg(x)-sin(ax)| где x=10^a+cos(a+1)
Очень важно помогите
Ответ(ы) на вопрос:
Гость
1. Современный паскаль
// PascalABC.NET 3.2, сборка 1370 от 24.12.2016
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadReal('a=');
var x:=power(10,a)+cos(a+1);
var y:=log10(abs(arctan(x)-sin(a*x)));
Writeln('x=',x,', y=',y)
end.
Пример
a= 2.105
x=126.35097753811, y=-0.162831822729058
2. Типовой "школьный" паскаль (как не надо учить)
program Vasya;
var
a,x,y:real;
begin
Write('a=');
Read(a);
x:=exp(a*ln(10))+cos(a+1);
y:=ln(abs(arctan(x)-sin(a*x)))/ln(10);
Writeln('x=',x,', y=',y)
end.
Пример
a=2.105
x=126.35097753811, y=-0.162831822729023
3. Сравнение решений
- "школьный" вариант длиннее. Больше текста - дольше писать, больше шансов сделать ошибку.
- результат вычисления y различный. Разница составляет вроде немного - всего 0.000000000000035 (это 0.35×10⁻¹³), но если делать много вычислений, ошибки могут накапливаться.
Вычисленное с более высокой точностью (и округленное до такой же, как в паскале разрядности) значение y равно -0.162831822729052, т.е. "современное" решение оказывается еще и на один порядок точнее. За счет чего? За счет уменьшения ошибок при меньшем количестве вычислений - их сократили функции power и log10.
Не нашли ответ?
Похожие вопросы