Вычислить значение выражения - Free Pascal (190)

Узнай цену своей работы

Формулировка задачи:

program test;
var u, s :real;
n :integer;
const e=1e-3; x=0.58;
begin
s:=0;
n:=1;
u:=-exp(ln(x)*((2*n)+1))/((4*sqr(n))-1);
while abs(u)>e do
begin
u:=-u;
s:=s+u;
n:=n+1;
u:=-u*(exp(ln(x)*((2*n)+1))/((4*sqr(n))-1));
end;
writeln('s=', s:7:2);
end.
Где-то накосячил, и теперь выводит неправильный ответ. Как правильно написать эту формулу?

Решение задачи: «Вычислить значение выражения»

textual
Листинг программы
program test;
var u1,u2, s,t :real;
n :integer;
const e=1e-3; x=0.58;
begin
n:=1;
t:=1;
u1:=exp(ln(x)*((2*n)+1))/((4*sqr(n))-1);
u2:=0;
s:=u1;
while abs(u1-u2)>e do begin
  u2:=u1;
  n:=n+1;
  t:=-t;
  u1:=t*exp(ln(x)*(2*n+1))/(4*n*n-1);
  s:=s+u1;
end;
writeln('s=', s:7:3);
end.

Объяснение кода листинга программы

В данном коде происходит вычисление значения выражения с помощью метода Ньютона для нахождения корня квадратного уравнения.

  1. Объявлены переменные: u1, u2, s, t — вещественные числа; n — целое число; const e=1e-3; x=0.58; — константы.
  2. Задаются начальные значения переменных: n := 1; t := 1;
  3. Вычисляется первое приближение корня u1 с помощью формулы: u1 := exp(ln(x) ((2 n) + 1)) / ((4 * sqr(n)) — 1).
  4. Задается начальное значение корня u2 равное нулю.
  5. Вычисляется значение переменной s равное u1.
  6. Запускается цикл while, который выполняется до тех пор, пока разница между текущим значением корня u1 и предыдущим значением u2 не станет меньше заданной точности e.
  7. Внутри цикла изменяются значения переменных: n увеличивается на единицу; t меняется на противоположное; u2 принимается равным текущему значению u1; s принимает значение суммы u1 и u2.
  8. Вычисляется новое значение корня u1 с помощью формулы: u1 := -t exp(ln(x) (2 n) + 1) / (4 n * n — 1).
  9. Цикл while выполняется до тех пор, пока не будет выполнено условие остановки.
  10. Выводится значение переменной s с точностью до 7 знаков после запятой.

Оцени полезность:

10   голосов , оценка 3.8 из 5