Решение задач. Proc41-45


proc41-45

Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачи Proc41-45.

Proc41-45

Proc41. Описать функцию Sin1(x, ε) вещественного типа (параметры x, ε — вещественные, ε > 0), находящую приближенное значение функции sin(x): sin(x) = x – x3/(3!) + x5/(5!) – … + (–1)n·x2·n+1/((2·n+1)!) + ….

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Sin1 найти приближенное значение синуса для данного x при шести данных ε.

program proc41(for_23);

function Sin1(x, e: real): real;

var
  a, y: real;
  i: integer;

begin;
  a := x;
  y := Sqr(x);
  Result := x;
  i := 1;
  while Abs(a) > e do
  begin
    a := -a * y / (i + 1) / (i + 2); //накапливаем значение слагаемого
    Result := Result + a;
    Inc(i, 2)
  end
end;

var
  x, e: real;
  i: integer;

begin
  write('Введите x: ');
  readln(x);
  for i := 1 to 6 do
  begin
    write('Введите е: ');
    readln(e);
    writeln('Sin(', x, ') = ', Sin1(x, e));
  end
end.

Proc42. Описать функцию Cos1(x, ε) вещественного типа (параметры x, ε — вещественные, ε > 0), находящую приближенное значение функции cos(x):

cos(x) = 1 – x2/(2!) + x4/(4!) – … + (–1)n·x2·n/((2·n)!) + ….

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Cos1 найти приближенное значение косинуса для данного x при шести данных ε.

program proc42;

function Cos1(x, e: real): real;

var
  a, y: real;
  i: integer;

begin;
  a := 1;
  y := Sqr(x);
  Result := 1;
  i := 1;
  while Abs(a) > e do
  begin
    a := -a * y / (i) / (i + 1); //накапливаем значение слагаемого
    Result := Result + a;
    Inc(i, 2)
  end
end;

var
  x, e: real;
  i: integer;

begin
  write('Введите x: ');
  readln(x);
  for i := 1 to 6 do
  begin
    write('Введите е: ');
    readln(e);
    writeln('Cos(', x, ') = ', cos1(x, e));
  end
end.

Proc43. Описать функцию Ln1(x, ε) вещественного типа (параметры x, ε — вещественные, |x| < 1, ε > 0), находящую приближенное значение функции ln(1 + x):

ln(1 + x) = x – x2/2 + x3/3 – … + (–1)n·xn+1/(n+1) + ….

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Ln1 найти приближенное значение ln(1 + x) для данного x при шести данных ε.

program proc43;

function Ln1(x, e: real): real;

var
  a, y: real;
  i: integer;

begin;
  a := x; //первое слагаемое
  Result := x; //начальная сумма
  i := 1;
  repeat
      inc(i);
      a := -a * x; // возводим слагаемое в следующую степеь и меняем знак на противоположный
      Result := Result + a / i // находим сумму
  until Abs(-a * x/ (i + 1)) < e;
end;

var
  x, e: real;
  i: integer;

begin
  write('Введите x: ');
  readln(x);
  for i := 1 to 6 do
  begin
    write('Введите е: ');
    readln(e);
    writeln('Ln(', x + 1, ') = ', Ln1(x, e));
  end
end.

Proc44. Описать функцию Arctg1(x, ε) вещественного типа (параметры x, ε — вещественные, |x| < 1, ε > 0), находящую приближенное значение функции arctg(x):

arctg(x) = x – x3/3 + x5/5 – … + (–1)n·x2·n+1/(2·n+1) + ….

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Arctg1 найти приближенное значение arctg(x) для данного x при шести данных ε.

program proc43;

function Arctg1(x, e: real): real;

var
  a, y: real;
  i: integer;

begin;
  a := x; 
  y := sqr(x);
  Result := x; //начальная сумма
  i := 1;
  repeat
      inc(i, 2);
      a := -a * y; // накапливаем значение слагаемого
      Result := Result + a / i 
  until Abs(-a * y/ (i + 2)) < e;
end;

var
  x, e: real;
  i: integer;

begin
  write('Введите x: ');
  readln(x); 
  for i := 1 to 6 do
  begin
    write('Введите е: ');
    readln(e);
    writeln('Arctg(', x, ') = ', Arctg1(x, e));
  end
end.

Proc45. Описать функцию Power4(x, a, ε) вещественного типа (параметры x, a, ε — вещественные, |x| < 1; a, ε > 0), находящую приближенное значение функции (1 + x)a:

(1 + x)a = 1 + a·x + a·(a–1)·x2/(2!) + … + a·(a–1)·…·(a–n+1)·xn/(n!) + ….

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Power4 найти приближенное значение (1 + x)a для данных x и a при шести данных ε.

program proc43;

function Power4(x, a, e: real): real;

var
  b: real;
  i: integer;

begin;
  b := 1; 
  Result := 1; //начальная сумма
  i := 1;
  repeat
      b := b * x * a / i; // накапливаем значение слагаемого
      Result := Result + b;
      inc(i);
      a := a - 1;
  until Abs(b * x * a / i) < e;
end;

var
  x, e, a: real;
  i: integer;

begin
  write('Введите x: ');
  readln(x);
  write('Введите a: ');
  readln(a);
  for i := 1 to 6 do
  begin
    write('Введите е: ');
    readln(e);
    writeln('Power4(', x, ') = ', Power4(x, a, e));
  end
end.

На сегодня всё! Если у вас возникли вопросы, задавайте их в комментариях. И не забывайте рассказывать о нашем сайте своим друзьям, кликая по этим замечательным круглым (квадратным) кнопочкам!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *