
Системное администрирование
Помогите решить задачи на паскале !

Это ряды для экспоненты, гиперболического косинуса, косинуса, гиперболического синуса и синуса. Есть много нюансов в вычислении этих сумм для всех из этих пяти рядов. Пример для экспоненты:
1. Здесь главный нюанс состоит в том, что при больших отрицательных х экспоненту правильно вычислить не удастся, поэтому её надо свести к экспоненте с положительным аргументом, вычисляемую достаточно быстро для всех х>0 (вплоть до х где-то до 700 с чем-то). Второй нюанс заключается в том, что счёт продолжается до тех пор, пока отношение очередного слагаемого и рабочей суммы не станет меньше требуемой точности:
Для гиперболических косинуса и синуса тоже есть свои нюансы.
А Вам какую программу надо - со всеми пятью рядами или же для каждого из них свою?
1. Здесь главный нюанс состоит в том, что при больших отрицательных х экспоненту правильно вычислить не удастся, поэтому её надо свести к экспоненте с положительным аргументом, вычисляемую достаточно быстро для всех х>0 (вплоть до х где-то до 700 с чем-то). Второй нюанс заключается в том, что счёт продолжается до тех пор, пока отношение очередного слагаемого и рабочей суммы не станет меньше требуемой точности:
var x, y, eps: real;
function exponenta(x, eps: real): real;
var p, s: real; q: longint;
begin
if x < 0 then exponenta := 1 / exponenta(-x, eps)
else
begin
s := 1;
p := 1;
q := 0;
repeat
q := q + 1;
p := p * x / q;
s := s + p;
until p / s < eps;
exponenta := s
end
end;
begin
while true do
begin
write('x ε: ');
readln(x, eps);
y := exponenta(x, eps);
writeln('exp(x) = ', y, ', err=', y - exp(x))
end
end.
Для синуса и косинуса главный нюанс такой: для слишком больших х синус с косинусом при помощи соответствующих им рядов правильно вычислить не удастся, поэтому аргументы надо сразу уменьшать до возможно меньших по модулю значений по обычным школьным формулам. Второй же нюанс состоит в том, что сумму надо считать до тех пор, пока модуль очередного слагаемого не окажется меньше требуемой точности.Для гиперболических косинуса и синуса тоже есть свои нюансы.
А Вам какую программу надо - со всеми пятью рядами или же для каждого из них свою?
1.
Единая обвязка для вариантов 2-5:
var
n: integer;
e, x, s, t: real;
begin
read(e, x);
s := 1.0;
t := 1.0;
n := 0;
repeat
inc(n);
t := t * x / n;
s := s + t
until abs(t) < e;
write(s)
end.
Единая обвязка для вариантов 2-5:
var
n: integer;
e, x, s, t, q: real;
begin
read(e, x);
{сюда вставляется нужный блок кода из нижеприведённых вариантов 2-5}
repeat
inc(n, 2);
t := t * q / (n * (n - 1));
s := s + t
until abs(t) < e;
write(s)
end.
2. s := 1.0;
t := 1.0;
q := sqr(x);
n := 0;
3. s := 1.0;
t := 1.0;
q := -sqr(x);
n := 0;
4. s := x;
t := x;
q := sqr(x);
n := 1;
5. s := x;
t := x;
q := -sqr(x);
n := 1;
Похожие вопросы
- Помогите решить задачу на Python.
- Задача на паскаль
- Задача на Паскаль
- Задача на Паскале
- Помогите с задачей python
- Решите задачу про прогрессивный налог python
- Помогите с задачей на питоне
- Помогите! Информатик 8 класс Программирование на Паскале
- Задача есть, ищем решение. Как же решить? Память на хостинге заканчивается, что делать?
- Сложная задача по с++. решить