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

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

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

Помогите пожалуйста! целую неделю ломаю голову(((( никак не получается сделать. заранее спасибо!!! весь этот ужас надо сделать на Паскале( Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xнач до xкон с шагом dx с точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

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

textual
Листинг программы
var n: integer;
    xnac, xkon, dx, x, a, s, eps: real;
begin
  write('    Начальное значение аргумента: ');
  readln(xnac);
  write('     Конечное значение аргумента: ');
  readln(xkon);
  if xnac > xkon
    then begin
      writeln('Начальное больше конечного, значения обменяны местами.');
      x := xnac;
      xnac := xkon;
      xkon := x
    end;
  repeat
    write('Шаг изменения аргумента (dx > 0): ');
    readln(dx)
  until dx > 0;
  if xkon - xnac < dx then writeln('Шаг слишком большой, будет выведено только одно значение функции.');
  repeat
    write('   Точность вычислений (eps > 0): ');
    readln(eps)
  until eps > 0;
  writeln;
  writeln('Таблица значений ряда Тейлора для функции f(x)=ln((x+1)/(x-1))');
  writeln('на интервале от ', xnac, ' до ', xkon);
  writeln('с шагом ', dx, ' с точностью ', eps);
  writeln;
  writeln('+------------------------+------------------------+------------------------+');
  writeln('|           x            |          S(x)          |  Просуммировано членов |');
  writeln('+------------------------+------------------------+------------------------+');
  x := xnac;
  xkon := xkon + dx / 2;
  eps := eps / 2;
  while x < xkon do
    begin
      write('| ', x:22, ' | ');
      if abs(x) <= 1
        then writeln('не определено':22, ' | ', 'не определено':22, ' |')
        else begin
          a := 1 / x;
          s := a;
          n := 1;
          while abs(a) >= eps do
            begin
              a := a * (n - 0.5) / (n + 0.5) / x / x;
              s := s + a;
              inc(n)
            end;
          writeln(2 * s:22, ' | ', n:22, ' |')
        end;
      x := x + dx
    end;
  writeln('+------------------------+------------------------+------------------------+');
  readln
end.

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

  1. Объявляется переменная n типа integer.
  2. Объявляются переменные xnac, xkon, dx, x, a, s, eps типа real.
  3. Вводится начальное значение аргумента и присваивается переменной xnac.
  4. Вводится конечное значение аргумента и присваивается переменной xkon.
  5. Проверяется условие, если xnac больше xkon, то значения переменных меняются местами.
  6. Вводится шаг изменения аргумента и присваивается переменной dx.
  7. Проверяется условие, если разность xkon - xnac меньше dx, выводится сообщение о том, что шаг слишком большой.
  8. Вводится точность вычислений и присваивается переменной eps.
  9. Выводится заголовок таблицы с информацией о функции и интервале значений аргумента.
  10. Идет цикл вывода значений функции для каждого x из заданного интервала.
  11. Расчет значений с использованием ряда Тейлора для функции f(x)=ln((x+1)/(x-1)).
  12. Выводится результат в виде таблицы с колонками для x, S(x) и Просуммировано членов.
  13. Цикл завершается, и таблица закрывается.
  14. Приложение ожидает ввода пользователя для закрытия.

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


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

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

5   голосов , оценка 4.6 из 5
Похожие ответы