Root /ArchiveAbout
()

Разбиение отрезка на равные части

Разбиение отрезка на равные части

На этой странице дано решение однотипных примеров For29 - For30 из задачника Абрамяна. Здесь рассматривается деление отрезка [A, B] числовой оси на равные части. В задаче For29 надо вывести точки деления и длину равных отрезков, на которые делится данный отрезок. В задаче For30 надо ещё и вычислить значения определенной функции в точках деления.

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

A, A + H, A + 2·H, A + 3·H, ..., B,

образующий разбиение отрезка [A, B].

var
  i, N: byte;
  A, B, H: real;

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

**type** byte;: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255 **type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 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).

var
  i, N: word;
  A, B, H, F, x: real;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  write('N = ');
  readln(N);
  H := (B - A) / N; { <== Вычисляем длину отрезков }
  writeln;
  writeln('Длина отрезков: ', H:0:3);
  writeln('Значения функции F(x) = 1 - sin(x) в точках деления ',
        'отрезка [', A, ', ',  B, '] на ', N, ' равных частей:');
  writeln;
  { Вычисляем набор точек и находим значение 
  функции в данных точках: }
  for i := 0 to N do
  begin
    x := A + i * H; { <== Вычисляем i-ю точку }
    F := 1 - sin(x); { <== Значение функции в i-ой точе }
    { Выводим на экран таблицу значений: } 
    writeln(' F(', x:0:2, ') = ', F:0:3);
  end;
  readln
end.

**type** word;: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535 **type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 **function** Sin(x: real): real;: Возвращает синус числа x. * * *

Второе решение задачи использует функцию:

{ ОПИСАНИЕ ФУНКЦИИ F(X): }
function F(x: real): real;
begin
  F := 1 - sin(x) { <== Функция }
end;

var
  i, N: word;
  A, B, H, x: real;

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

**type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 **type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 **function** Sin(x: real): real;: Возвращает синус числа x. **type** word;: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535 **type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308