Вычислить и вывести на экран в виде таблицы значения функции - Pascal (80352)

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

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

Ребят, помогите решить задачку через рекуррентное уравнение, желательно с подробными объяснениями! Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда, на интервале от Хнач до Хкон с шагом dx и точностью. Таблицу снабдить заголовком и шапкой. Строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда: Написал программу, но она не рабочая.. В чем ошибка(-и)???
Листинг программы
  1. program lab2; {вычисление функции, заданной с помощью ряда}
  2. uses crt;
  3. var
  4. xn, xk, dx, eps, ch, y, x:real; {ch - член ряда, y - значение аргумента}
  5. n: integer; {n - число интераций}
  6. begin
  7. clrscr;
  8. writeln('Введите x начальное, x конечное, шаг и точность');
  9. readln(xn, xk, dx, eps);
  10. {xn - x начальное, xk - x конечное, dx - шаг, eps - точность}
  11. if(xn>xk) then
  12. begin
  13. writeln('Начальное значение аргумента больше конечного, программа сменит их местами');
  14. x:=xn;
  15. xn:=xk;
  16. xk:=x;
  17. end; {если xc>xn поменяем их местами}
  18. if(xn<xk) then
  19. begin
  20. writeln;
  21. writeln('Таблица значений функции');
  22. writeln('+-----+-------------------+-----+');
  23. writeln('| x | y | n |'); {шапка}
  24. writeln('+-----+-------------------+-----+');
  25. ch:=pi/2; {первый член ряда}
  26. y:=ch; {начальное значение аргумента}
  27. x:=xn;
  28. xk:=xk+dx/2;
  29. n:=0;
  30. while abs(ch)>eps do {цикл с предусловием}
  31. begin
  32. ch:=ch*((-1)*((((2*n+1)*(2*n+1)*(x*x))/((2*n+2)*(2*n+3))))); {рекурентная формула} {очередной член ряда}
  33. n:=n+1;
  34. y:=y+ch;
  35. if (abs(ch)<eps) and (x<=xk) then
  36. begin
  37. writeln('| ', x:3:2, '| ', y, ' | ', n:2, ' |'); {вывод данных}
  38. ch:=pi/2;
  39. y:=ch;
  40. x:=x+dx;
  41. n:=0;
  42. end;
  43. end;
  44. writeln;
  45. writeln('Нажмите Enter для выхода из программы');
  46. readln;
  47. end;
  48. end.
Буду благодарен любой помощи

Решение задачи: «Вычислить и вывести на экран в виде таблицы значения функции»

textual
Листинг программы
  1. uses math;
  2. function readln_check(s: string; a, b: extended): extended;
  3. var t: extended;
  4. begin
  5.   repeat
  6.     write(s, ': (', a:0:15, '..', b:0:15, '];  ', s, ' = ');
  7.     readln(t)
  8.   until (t > a) and (t < b);
  9.   readln_check := t
  10. end;
  11. function arccos_Taylor(x, eps: extended; var n: integer): extended;
  12. var a, t: extended;
  13. begin
  14.   a := x;
  15.   t := a;
  16.   n := 0;
  17.   while abs(a) >= eps do
  18.     begin
  19.       inc(n);
  20.       a := (n - 0.5) / n * (n - 0.5) / (n + 0.5) * x * x * a;
  21.       t := t + a
  22.     end;
  23.   arccos_Taylor := pi / 2 - t;
  24.   inc(n)
  25. end;
  26.  
  27. const lin = '+--------------------+-------------------+------------+-------------------+';
  28. var x, xn, xk, dx, eps: extended;
  29.     n: integer;
  30. begin
  31.   writeln('Введите границы интервала табуляции:');
  32.   xn := readln_check('Граница 1', -1, 1);
  33.   xk := readln_check('Граница 2', -1, 1);
  34.   if xn > xk
  35.     then begin
  36.       x := xn;
  37.       xn := xk;
  38.       xk := x
  39.     end;
  40.   dx := readln_check('Шаг', 0, 1);
  41.   xk := xk + dx / 2;
  42.   eps := readln_check('Точность', 0, 1);
  43.   writeln('Таблица:');
  44.   writeln(lin);
  45.   writeln('|          x         |        y(x)       |      n     |      arccos(x)    |');
  46.   writeln(lin);
  47.   x := xn;
  48.   while x < xk do
  49.     begin
  50.       writeln('| ', x:18:15, ' | ', arccos_Taylor(x, eps, n):0:15, ' | ', n:10, ' | ', arccos(x):0:15, ' |');
  51.       x := x + dx
  52.     end;
  53.   write(lin);
  54.   readln
  55. end.

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

  1. Объявляется функция readln_check с параметрами s (строка), a и b (дробные числа).
  2. Внутри функции readln_check происходит ввод значения переменной t и проверка, пока оно не удовлетворяет условиям (t > a) и (t < b).
  3. Затем программа возвращает значение t.
  4. Объявляется функция arccos_Taylor с параметрами x (дробное число), eps (дробное число) и n (целое число).
  5. Внутри функции arccos_Taylor происходит вычисление аппроксимации арккосинуса при помощи разложения в ряд Тейлора с точностью eps.
  6. Вычисленное значение возвращается функцией, а также увеличивается счетчик n.
  7. Затем объявляются переменные x, xn, xk, dx, eps и n, а также константа lin.
  8. Программа запрашивает у пользователя ввод границ интервала табуляции, шага и точности.
  9. Далее происходит вывод таблицы со значениями x, y(x), n и arccos(x) для каждого шага x в интервале от xn до xk.
  10. Программа останавливается в ожидании ввода пользователя.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы