Решение задач. День двадцатый. For25-30


for25-30

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

For25-30

For25. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
X − X2/2 + X3/3 − … + (−1)N−1·XN/N.
Полученное число является приближенным значением функции ln в точке 1 + X.

program for25;

var
  i, N: integer;
  Sum, a, x: real;
  
begin
  write('Введите N: ');
  readln(N);
  write('Введите x: ');
  readln(x);
  a := x; //первое слагаемое
  Sum := x; //начальная сумма
    for i := 2 to N do
    begin
      a := -a * x; // возводим слагаемое в следующую степеь и меняем знак на противоположный
      Sum := Sum + a / i // находим сумму
    end;
  writeln;
  writeln('Значение суммы: ', Sum:0:3)
end.

For26. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
X − X3/3 + X5/5 − … + (−1)N·X2·N+1/(2·N+1).
Полученное число является приближенным значением функции arctg в точке X.

program for26;

var
  i, N: integer;
  Sum, a, x, y: real;

begin
  write('Введите N: ');
  readln(N);
  write('Введите x: ');
  readln(x);
  y := Sqr(x); // запоминаем х в квадрате
  a := x; // начальное слагаемое
  Sum := x; // начальная сумма
  for i := 2 to N do 
  begin
    a := -a * y; // возводим слагаемое в послеследующую степень и меняем знак на противоположный
    Sum := Sum + a / (2 * i + 1) // находим сумму
  end;
  writeln;
  writeln('Значение суммы: ', Sum:0:3);
end.

For27. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
X + 1·X3/(2·3) + 1·3·X5/(2·4·5) + … +
+ 1·3·…·(2·N−1)·X2·N+1/(2·4·…·(2·N)·(2·N+1)).
Полученное число является приближенным значением функции arcsin в точке X.

Для того чтобы решить эту задачу, нам нужно всего лишь внимательно посмотреть на формулу в условии задачи. Просто занесем значения 2 * i — 1, 2 * N, 2 * N + 1 в переменные. И не забывайте накапливать их результат!

program for27;

var
  x, Sum, a, b, c, y: real;
  N, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите x: ');
  readln(x);
  Sum := x;
  a := x; //в этой переменной будет изменяться х
  b := 1; //часть выражения, которая стоит перед х(умножение) 
  c := 1; //часть выражения, которая стоит после х(деление)
  y := Sqr(x); //запоминаем х в квадрате
  for i := 1  to N do
  begin
    b := b * (2 * i - 1); 
    c := c * (2 * i);
    a := a * y;
    Sum := Sum + b * a / (c * (2 * i + 1));
  end;
  writeln('Значение суммы: ', Sum:0:3);
end.

For28. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
1 + X/2 − 1·X2/(2·4) + 1·3·X3/(2·4·6) − … +
+ (−1)N−1·1·3·…·(2·N−3)·XN/(2·4·…·(2·N)).
Полученное число является приближенным значением функции (1+X)1/2.

Данная задача очень похожа на предыдущую.

program for28;

var
  x, Sum, a, b, c, y: real;
  N, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите x: ');
  readln(x);
  Sum := 1;
  a := 1; //в этой перемнной будет изменяться х
  b := 1; //часть выражения, которая стоит перед х(умножение) 
  c := 1; //часть выражения, которая стоит после х(деление)
  for i := 1 to N do
  begin
    b := b * (2 * i - 3); 
    c := c * (2 * i);
    a := -a * x; // возводим слагаемое в следующую степень и меняем знак на противоположный
    Sum := Sum + b * a / c;
  end;
  writeln('Значение суммы: ', Sum:0:3);
end.

For29. Дано целое число N (> 1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также набор точек
A, A + H, A + 2·H, A + 3·H, …, B,
образующий разбиение отрезка [A, B].

program for29;

var
  i, N: integer;
  A, B, H, C: real;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  write('N = ');
  readln(N);
  H := (B - A) / N; 
  writeln('Длина отрезков: ', H:0:2);
  writeln('Набор точек при делении:');
  writeln;
  { Вычисляем набор точек: } 
  for i := 0 to N do
  begin
    C := A + i * H; //вычисляем i-ую точку
    writeln('A + ', i, ' * H = ', C:0:2)
  end;
end.

For30. Дано целое число N (> 1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также значения функции F(X) = 1 − sin(X) в точках, разбивающих отрезок [A, B]:
F(A), F(A + H), F(A + 2·H), …, F(B).

program for30;

var
  i, N: integer;
  A, B, H, C: real;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  write('N = ');
  readln(N);
  H := (B - A) / N; 
  writeln('Длина отрезков: ', H:0:2);
  writeln('Набор точек при делении:');
  writeln;
  { Вычисляем набор точек: } 
  for i := 0 to N do
  begin
    C := A + i * H; //вычисляем i-ую точку
    writeln('A + ', i, ' * H = ', C:0:2);
    writeln('F(', C,') = ', 1 - Sin(C):0:3)
  end
end.

На сегодня всё! Если у вас возникли какие-либо вопросы, не стесняйтесь, задавайте их в комментариях. Я постараюсь ответить на все!

  1. можно вопрос по For25? я ввожу число N=3; X=0.5 и у меня выводит 0.39 а у вас 0.412 что у меня не так в коде??
    program abc;

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

    BEGIN
    read(x,n);
    a:=-1;
    for i:=2 to n do
    begin

    x:=x-power(a,i)*(power(x,i)/i);
    end;
    write(x:0:3);
    END.

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

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