Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Формирование таблицы идентификаторов



В задании упоминаются: двумерный массив вещественного типа, количество строк ( М < =7), количество столбцов ( N < =7), входной текстовый файл, номер столбца с минимальным элементом, одномерный массив вещественного типа. Кроме того, так как придется перебирать элементы двумерного массива, потребуется использовать текущий номер строки ( i ) и текущий номер столбца ( j ) элемента массива, а при поиске минимального элемента – использовать переменную для найденного минимума.

Сортировка пересчетом потребует заводить счетчик ( ki ) числа элементов, меньше рассматриваемого " i -го" элемента сортируемого столбца, признак незанятого места в выходном массиве ( Pr ), дополнительные счетчики в циклах перебора элементов при подсчете и записи ( i1, i2 ). Еще можно упомянуть имя программы и выходного файла для результатов.

На основании перечисленных объектов таблица будет содержать:

 

Таблица 19. Идентификаторы программы 31 варианта

Имя Тип Р-р, байт Назначение
SortNum Имя программы - Сортировка столбца пересчетом
A Веществ.массив Исходный массив
B Веществ.массив Упорядоченный (выходной) массив
M Целое Количество строк (длина столбца)
N Целое Количество столбцов (длина строки)
Jmin Целое Номер строки с минимальным элементом
Fin Текстовый файл Файл с исходными числами
Fout Текстовый файл Файл с результатами работы
i Целое Текущий номер строки
j Целое Текущий номер столбца
Amin Вещественное Копия минимального элемента массива
ki Целое Число элементов массива < текущего
Pr Вещественное Признак незаполненного элемента
i1 Целое Вспомогательный счетчик перебора
i2 Целое Вспомогательный счетчик перебора
Vvod_M Метка - Блок ввода числа строк
Vvod_N Метка - Блок ввода числа столбцов

 

Алгоритм

Должен содержать следующие шаги:

  1. Открытие входного и выходного файлов. Текстовый входной файл связывается с набором данных с вещественными числами 'D: \LAB1\DATF.TXT' и открывается для чтения. Выходной файл связывается с новым набором данных 'UMNIК5.RES' (т.к. без указания пути – значит в текущем каталоге) и открывается для записи.
  2. Ввод количества строк массива. Контроль на попадание M в диапазон 2..7. Потребуется метка возврата ( Vvod_M ).
  3. Ввод количества столбцов массива. Контроль на попадание N в диапазон 2..7. Потребуется метка возврата ( Vvod_N ).
  4. Двойной цикл заполнения массива числами из файла. Запрос на ввод не требуется, так как ввод из файла. Контроль не требуется.
  5. Распечатка исходного массива. Сначала печать заголовка (" Исходный массив" ), затем печать по строкам с форматом, выделяя на число 10 позиций. После печати каждой строки массива – переход на новую запись в выходном файле.
  6. Поиск столбца с минимальным элементом, запоминание его номера. Двойной цикл (по всем элементам массива), перед которым первый элемент запоминается в переменной Amin, а в переменной для номера Jmin запоминается 1.
  7. Определение признака незанятого элемента выходного массива. В качестве признака незанятого элемента выходного массива следует использовать число, которое наверняка не встречается в исходном массиве. Таким числом будет любое, меньшее чем минимальное в массиве, в частности Amin –1.
  8. Цикл заполнения выходного массива признаком незанятого места. Простой цикл присваивания M элементам массива A значения Pr.
  9. Цикл работы с " i -м" элементом сортируемого столбца:

a) Цикл расчета числа элементов, меньших " i -го". Перед циклом ki делаем равным не нулю, а единице, т.к. после подсчета числа элементов, меньших данного, его выходной номер должен стать на единицу больше этого числа.

b) Поиск места в выходном массиве, для рассматриваемого элемента. Если найденное место уже занято, следует двигаться дальше по массиву, пока не встретится незанятое место. Этот процесс необходим, если в сортируемом ряду несколько одинаковых чисел, претендующих, на одно и тоже место.

  1. Печать номера сортированного столбца.
  2. Печать отсортированного массива (начинается с печати заголовка " Упорядоченный массив" ), и печать одномерного выходного массива с тем же форматом, что и для входного массива.
  3. Закрытие файлов.

При оформлении лабораторной работы, алгоритм следует изобразить в форме блок-схемы.

 

Текст программы.

PROGRAM SortNum;

{ Программа Лабораторной работы N 5

Вариант N 31.

А.Я.Умненькая, ст. гр. Я-007 }

VAR

M, N, Jmin, i, j, i1, ki: integer;

Amin, Pr: real;

A: array [1..7, 1..7] of real;

B: array [1..7] of real;

Fin, Fout: text;

LABEL

Vvod_M, Vvod_N;

BEGIN

{ Открытие входного и выходного файлов }

assign(Fout, 'UMNIK5.RES');

rewrite(Fout);

assign(Fin, 'D: \LAB1\DATF.TXT');

reset(Fin);

{ Ввод количества строк массива }

Vvod_M:

writeln ('Введите число строк массива');

readln(M);

if (M < 2) or (M > 7) then

begin

writeln('Недопустимое значение! ');

goto Vvod_M;

end;

{ Ввод количества столбцов массива }

Vvod_N:

writeln ('Введите число столбцов массива');

readln(N);

if (N < 2) or (N > 7) then

begin

writeln('Недопустимое значение! ');

goto Vvod_N;

end;

{ заполнение массива числами из файла }

for i: =1 to M do

for j: =1 to N do

read(Fin, A[i, j]);

{ Закрытие входного файла }

close(Fin);

{ Распечатка исходного массива }

Writeln(Fout, ' Исходный массив из ', M, 'x', N,

' элементов');

for i: =1 to M do

begin

for j: =1 to N do

Write(Fout, A[i, j]: 8: 2); {печать текущей строки }

Writeln(Fout);

end;

Writeln(Fout);

{ Поиск столбца с минимальным элементом }

Amin: = A[1, 1];

Jmin: = 1;

for i: =1 to M do

for j: =1 to N do

if A[i, j] < Amin then

begin

Amin: = A[i, j];

Jmin: = j;

end;

{ Определение признака незанятого места }

Pr: = Amin - 1.0;

{ Очистка выходного массива }

for i: =1 to M do B[i]: = Pr;

{ сортировка " Jmin-го" столбца в выходной файл пересчетом }

for i: = 1 to M do

begin

ki: = 1;

for i1: =1 to M do

if A[i1, Jmin] < A[i, Jmin] then ki: = ki+1;

{ сдвиг дальше, если элемент уже занят }

while B[ki] < > Pr do ki: = ki+1;

B[ki]: = A[i, Jmin];

end;

{ Печать номера столбца c минимальным элементом }

Writeln(Fout, 'Результаты работы': 30);

Writeln(Fout);

Writeln(Fout, ' Минимальный элемент находится в ',

Jmin, ' столбце');

{ Печать отсортированного массива }

Writeln(Fout, 'Сортированный массив': 30);

for i: =1 to M do

Write(Fout, B[i]: 8: 2);

Writeln(Fout);

{ Закрытие выходного файла }

close(Fout);

END.

 

Содержимое файла результатов UMNIK5.RES

 

Исходный массив из 7x7 элементов

-2.20 -6.93 0.20 8.97 8.09 5.38 7.82

5.43 15.33 13.60 9.32 17.38 17.70 16.26

13.13 13.78 20.59 17.91 15.16 19.02 21.66

18.71 17.73 20.59 21.77 22.49 21.99 19.42

15.68 17.73 21.90 13.50 17.68 18.50 15.51

11.54 19.04 17.86 13.20 10.25 10.44 8.46

11.92 5.60 5.75 2.69 8.51 0.52 3.61

 

Результаты работы

Минимальный элемент находится в 2 столбце

Сортированный массив

-6.93 5.60 13.78 15.33 17.73 17.73 19.04


 

Варианты заданий

Таблица 20 Варианты заданий лабораторной работы №5

№ вар. Задание Предельные значения числа Тип обраб. данных
строк столбцов
Массив размером М, строк N столбцов заполнить числами из входного текстового файла. Исходный массив распечатать. Каждую строку массива упорядочить по убыванию обменом. Переделанный массив распечатать. Целые
Массив размером М строк Nстолбцов заполняется символами из входного текстового файла. Исходный массив распечатывается. Каждый столбец массива упорядочить по возрастанию методом выбора. Переделанный массив распечатать. Символьн.
Заполнить квадратный массив размерами NхN элементов числами из входного файла, распечатать, поменять местами столбец с номером " К" и строку с номером " M" (оба номера и длина массива вводятся с клавиатуры). Полученную матрицу распечатать.   Целые
Заполнить двумерный массив А(MхN) элементов символами из текстового файла. Первый столбец массива А упорядочить по возрастанию (по алфавиту) методом вставок, используя рабочий одномерный массив В(М). Массив А распечатать до и после сортировки. Символьн.
Массив размером М строк N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Столбец с максимальным последним элементом упорядочить по возрастанию методом обмена. Переделанный массив распечатать. Целые
Заполнить двумерный массив А(MхN) элементов символами из одномерного массива В (длиной не более 256 элементов) " змейкой" от конца к началу – сперва N-ю строку справа налево, затем N–1-ю слева направо и т.д. Массив В предварительно заполняется из входного текстового файла. Оба массива распечатать. Символьн.
Квадратный массив размером МхM заполняется числами из входного текстового файла. Исходный массив распечатывается. Главную диагональ массива упорядочить по убыванию методом выбора. Переделанный массив распечатать.   Целые
Массив размером М строк N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Столбец с минимальным 1-ым элементом упорядочить по убыванию методом обмена. Переделанный массив распечатать. Веществ.
Массив размером М строк N столбцов заполняется символами из входного текстового файла. Исходный массив распечатывается. Заказанную строку массива (номер которой вводится с клавиатуры) упорядочить по убыванию методом выбора. Переделанный массив распечатать. Символьн.
Массив размером М, строк N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Заказанный столбец массива (номер которого вводится с клавиатуры) упорядочить по возрастанию методом обмена. Переделанный массив распечатать. Веществ.
Квадратный массив размером МхМ заполняется числами из входного текстового файла. Исходный массив распечатывается. Обратную диагональ массива упорядочить по возрастанию методом выбора. Переделанный массив распечатать.   Веществ.
Массив размером М строк, N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Столбец с минимальным вторым элементом упорядочить по возрастанию методом выбора. Переделанный массив распечатать. Целые
Заполнить квадратный массив А (NхN) элементов (N не более 8) числами из входного файла, распечатать, построить новую матрицу В (NхN), в которой каждый элемент B (i, j) равен минимальному из всех элементов массива А, у которых номер строки < =i, а номер столбца > =j. Полученную матрицу распечатать.   Веществ.
Массив размером М строк, N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Строку, где расположен максимальный элемент массива, упорядочить по убыванию методом обмена. Переделанный массив распечатать. Целые
Массив размером М строк, N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Строку с минимальным первым элементом упорядочить по убыванию методом выбора. Переделанный массив распечатать. Веществ.
Массив размером М строк, N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Строку, где расположен минимальный элемент массива, упорядочить по убыванию методом пересчета в одномерный массив, который распечатать. Целые
Массив размером М строк, N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Заказанный столбец массива (номер которого вводится с клавиатуры) упорядочить по убыванию методом вставок, используя рабочий одномерный массив, который затем переписать на место сортируемого столбца. Переделанный двумерный массив распечатать. Целые
Заполнить двумерный массив логическими значениями из входного текстового файла, распечатать, перестроить матрицу: первый столбец поменять местами с последним, второй с предпоследним, и т.д. Затем так же переставить строки. Переделанный массив распечатать. Логич.
Массив размером М строк N, столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Второй столбец массива упорядочить по возрастанию методом пересчета в одномерный массив. Созданный массив распечатать. Целые
Заполнить двумерный массив размерами 20х20 элементов символами из входного текстового файла, распечатать, перестроить матрицу: исключить из нее столбец с номером " k" и строку с номером " m" (оба номера вводятся с клавиатуры). Полученную матрицу размерами 19х19 распечатать.     Символьн.
Массив размером М строк N, столбцов заполняется символами из входного текстового файла. Исходный массив распечатывается. Столбец, где расположен максимальный элемент массива, упорядочить по возрастанию методом обмена. Переделанный массив распечатать. Символьн.
Заполнить квадратный массив А (NхN) элементов (N вводится с клавиатуры) числами из одномерного массива В (длиной не более 64 элементов) " змейкой" – сперва первую колонку сверху вниз, затем вторую снизу вверх и т.д. Массив В предварительно заполняется из входного текстового файла. Оба массива распечатать.   Веществ.
Заполнить двумерный массив А (MхN) элементов числами из текстового файла. Каждую строку массива А упорядочить по убыванию пересчетом в соответствующую строку массива В (MxN). Оба массива распечатать. Целые
Заполнить квадратный массив А (NхN) элементов числами из входного файла, распечатать, построить новую матрицу в В (NхN), в которой каждый элемент B (i, j) равен сумме всех элементов, у которых номер строки > =i, а номер столбца < =j. Полученную матрицу распечатать. Веществ.
Прочитать из текстового файла с данными первые десять чисел в одномерный массив а последующие числа – в двумерный массив (матрицу) 7х6 элементов. Распечатать оба массива. Заменить нулями в матрице те элементы с четной суммой индексов, для которых имеются равные значения в одномерном массиве. Измененную матрицу распечатать.     Целые
Заполнить квадратный массив А (NхN) элементов числами из текстового файла. Каждый столбец массива А упорядочить по возрастанию вставками в соответствующий столбец массива В (NxN). Оба массива распечатать.   Целые
Заполнить квадратный массив А(NхN) элементов логическими из одномерного массива В (длиной не более 81 элементов) " по спирали" – сперва первую строку слева направо, затем последнюю колонку сверху вниз, затем последнюю строку справа налево, первую колонку снизу вверх и т.д. Массив В предварительно заполняется из входного файла. Оба массива распечатать.   Логич.
Заполнить двумерный массив А (2хN) элементов символами из текстового файла. Распечатать массив А. Далее каждую строку массива Аупорядочить по алфавиту обменом, затем заполнить по алфавиту одномерный массив В (длиной 2N элементов) методом слияния из обеих строк массива А. Оба массива распечатать после сортировок.   Символьн.
Заполнить двумерный массив А (Mх2) элементов числами из текстового файла. Распечатать массив А. Далее каждый столбец массива А упорядочить по возрастанию обменом, затем заполнить по возрастанию одномерный массив В (длиной 2M элементов) методом слияния из обоих столбцов массива А. Оба массива распечатать после сортировок.   Целые
Заполнить квадратный массив размерами МхМ, где М – четное и равно 8, 10 или 12, логическими значениями из входного файла, распечатать. Поменять местами первый октант с третьим, а второй с четвертым. Октантом будем называть четверть массива, причем левая верхняя четверть – это 1-й октант, правая верхняя четверть – 2-ой и т.д. по часовой стрелке. Полученный массив распечатать.     Логич.
Массив размером М строк N столбцов заполняется числами из входного текстового файла. Исходный массив распечатывается. Столбец, где расположен минимальный элемент массива, упорядочить по возрастанию методом пересчета в одномерный массив. Созданный массив распечатать. Веществ.

 

Лабораторная работа N 6

Программирование итерационных циклов

(использование рекуррентных формул для расчета функций)

Задачи лабораторной работы

Вопросы, изучаемые в работе

· Изучение понятия рекуррентных соотношений.

· Применение алгоритмов вычисления элементарных функций как сумм бесконечного числа слагаемых.

· Продолжение изучения организации итеративных циклов с помощью операторов условных переходов, операторов с пост- и предусловием.

· Вывод результатов в табличной форме (с использованием форматов).

Задание (общее ко всем вариантам)

Для всех значений X, задаваемых параметрами из набора:

начальное значение A, конечное значение В, шаг Dx, количество шагов Nx, ограничение на число итераций Nmax, вычислить функцию F(x) как сумму S бесконечного числа слагаемых, заканчивая суммирование для каждого значения x при достижении заданной точности EPS.

Вывести в выводной текстовый файл исходные данные A, B, Dx, EPS и результаты расчета: значения x, F(x), S и количество слагаемых K, обеспечивающих требуемую точность. Результаты выводить в форме таблицы с рамками.

Оформить отчет по лабораторной работе.

Требования к программе

  • Программа должна содержать комментарий с указанием названия работы, № варианта, фамилии студента и № группы.
  • Значения, отмеченные в таблице вариантов символом " *" в программе вводятся с клавиатуры. Остальные исходные данные задаются типизированными константами.
  • Количество слагаемых при вычислении суммы – не более ста.

· Если вариант задания содержит Nmax в качестве исходных данных, внешний цикл по X будет тоже итеративным и значение Nx в этом случае не рассчитывается. Цикл можно делать как с пред- так и с постусловием, с окончанием по выполнению условия (K > Nmax) or (i > 30) { второе условие – ограничение размера таблицы }.

· В варианте №3 Arcsin выразить через другие функции (см. в лаб. 1) Arcsin(x)=Arctan(x/sqrt(1-x*x)).

· В варианте №15 учесть, что sin(X)/X при Х=0 равен 1.

· В варианте №21 учесть, что cos(X)/X при Х=0 не существует, поэтому такое значение Х в таблице пропускать.

Содержание программы

  • Заголовок программы с комментарием;
  • Описание переменных;
  • Описание инициализированных переменных;
  • Ввод с клавиатуры исходных данных;
  • Вычисление (если необходимо) вспомогательных значений;
  • Вывод исходных данных в выводной файл;
  • Формирование шапки таблицы;
  • Задание начальных значений для величин, вычисляемых рекуррентными формулами;
  • Цикл расчета и вывода в текстовый файл строк таблицы;
  • Закрытие выводного файла.

Общие пояснения

Для приближенных вычислений значений некоторых функций используется метод представления этих функций в виде ряда бесконечного числа слагаемых.

Если неизвестная функция разложена в ряд

F(x) = C1x1 + C2x2 + C3x3 + … + Cnxn +…,

то приближенно можно положить

F(x) = Fn(x) = C1x1 + C2x2 + C3x3 + … + Cnxn,

и поправка на отбрасывание остальных членов ряда выразится остатком

Cnxn = Cn+1xn+1 + Cn+2xn+2 + …

При достаточно большом n эта погрешность станет сколь угодно малой, так что Fn(x) воспроизведет F(x) с любой наперед заданной точностью.

Вопрос оценки остатка Cnxn для получения требуемой точности вычисления требует особенного внимания.

Если рассматриваемый ряд оказывается знакопеременным, и притом с монотонно убывающими по абсолютной величине членами, то остаток имеет знак своего первого члена и по абсолютной величине меньше его.

В случае положительного ряда необходимо выполнить такую оценку при помощи методов математического анализа, кроме того, следует отметить, что далеко не всякий ряд, имеющий суммой интересующую нас функцию F(x), пригоден для фактического вычисления этой функции (даже если его члены просты и оценка остатка производится легко). Вопрос – в быстроте сходимости, т.е. в быстроте приближения частичной суммы к функции F(x). Для исследования сходимости ряда также рекомендуется применять методы математического анализа.

В вариантах задания к лабораторной работе диапазоны вычислений приближенных значений и задаваемая точность оценок выбраны из вышеприведенных соображений.

Разбор контрольного варианта

Задание

Рассчитать и построить таблицу точных и приближенных значений функции

начальное значение X: A=-0.05, конечное – B=0.04, шаг X Dx=0.01 (вводится с клавиатуры), требуемая точность EPS = 1e-6 (вводится с клавиатуры), тип циклического оператора – repeat (постусловие).

Рассмотрение метода решения

Расчет суммы будем проводить по рекуррентной формуле: S=S+C, т.е. новое значение суммы S есть старое значение суммы S + очередное слагаемое C.

Чтобы получить рекуррентное соотношение для расчета слагаемых, поделим последующее слагаемое на предыдущее. Получим:

и т.д.

Отсюда можно получить для расчета очередного слагаемого по предыдущему формулу:

C = - C*X*J/(J+1),

в которой J каждый раз увеличивается на два. Последняя рекуррентная формула (для J ): J=J+2.

Очевидно, что все эти операторы должны выполняться в цикле с заранее неизвестным числом шагов. Для начала расчета необходимо задать исходные значения для J, C и S. Вполне естественно начальными значениями C и S взять первое слагаемое, т.е. единицу, а величину J подобрать такой, чтобы на первом шаге вычислить второе слагаемое по первому, т.е. J перед входом в цикл тоже сделать равным единице.

Окончание цикла осуществим, когда очередное слагаемое станет по модулю меньше EPS, но не более чем после сотого слагаемого. Последнее ограничение вводим для предотвращения возможности бесконечного цикла в случае возможных ошибок программирования.

В задании для организации итеративного цикла предложено использовать оператор repeat, поэтому условие выхода запишется:

...

until (abs(C) < EPS) or (K > 100);

Полученные значения S, K , а также вычисленное выражение F(X) и величину аргумента X будем печатать с учетом размеров возможных значений в следующем порядке: X, F(x), S, K, разделяя их вертикальной чертой:

writeln('|', X: 6: 2, '|', 1.0/Sqr(1.0+X): 10: 7, '|',

S: 10: 7, '|', K: 3, '|');

Значения не подписываем, так как расчет придется повторить несколько раз и насчитанные значения образуют таблицу, которую и озаглавим один раз до начала расчета по всем значениям X, например:

writeln('| X | F(x) | S | K |');

Так как в данном варианте нам даны начальное и конечное значения X и шаг его изменения, необходимо сначала вычислить, сколько будет значений X (и строк в таблице):

Nx: = Trunc((B - A)/Dx) +1; {функция Trunc отбрасывает

дробную часть аргумента }

Добавляется единица, так как число точек всегда на один больше числа интервалов между ними. Это, кстати, следует помнить при вычислении Dx по Nx:

Dx: = (B - A)/(Nx - 1);

Таблица идентификаторов

Таблица 21. Идентификаторы программы 31 варианта

Имя Тип Р-р (байт) Назначение
Tabl_Of_Fx Имя программы - Расчет таблицы значений функции
A Веществ.константа Начальное значение 0.05
B " Конечное значение 0.04
X Вещественное Значение аргумента на j-том шаге
Dx " " Шаг аргумента
S " " Сумма
C " " Очередное слагаемое
EPS " " Заданная точность
Nx Целое Количество шагов
J " " Номер строки таблицы
K " " Количество слагаемых
i " " Счетчик цикла по X
fout Послед. симв. файл Для выходного файла
Vvod_Dx Метка Начало блока ввода шага
Vvod_EPS Метка Начало блока ввода точности

Алгоритм

Должен содержать следующие шаги:

1. Задание исходных данных в разделе констант (для A и B );

2. Ввод исходных данных ( Dx и EPS );

3. Определение длины внешнего (по X ) цикла;

4. Печать заголовка таблицы;

5. Внешний цикл ( for ) по X;

1) вычисление X;

2) задание начальных значений J, С и S;

3) внутренний цикл вычисления S;

a) расчет С;

б) расчет S;

в) расчет J;

г) проверка условия окончания цикла;

4) печать строки таблицы с результатами;

6. Завершение программы (печать нижней рамки таблицы, задержка).

Текст программы.

 

program Tabl_Of_Fx;

{

Программа Лабораторной работы N 6 Вариант N 31.

Использование рекуррентных формул в итеративных циклах.

А.Я.Умненькая, ст. гр. Я-007

}

CONST {при описании переменным зададим исходные значения }

A: real = -0.05;

B: real = 0.04;

VAR

X, Dx, S, C, EPS: real;

Nx, J, K, i: integer; {I – для счетчика цикла по X }

fout: text; { для выходного файла }

LABEL

Vvod_Dx, Vvod_EPS;

BEGIN

assign(fout, 'Umnik6.res');

rewrite(fout);

{ Ввод исходных данных (Dx и EPS) }

Vvod_Dx:

writeln ('Для X на отрезке[-0.05, 0.04]введите шаг счета');

readln(Dx);

if (Dx < 0.002) or (Dx > 0.04) then

begin

writeln('Недопустимое значение! ');

goto Vvod_Dx;

end;

Vvod_EPS: writeln('введите минимальный размер слагаемого);

readln(EPS);

if (EPS < 1e-9) or (EPS > 1e-2) then

begin

writeln('Недопустимое значение! ');

goto Vvod_EPS;

end;

{ Определение длины внешнего (по X) цикла }

Nx: = Trunc((B-A)/Dx) + 1;

{ печать исходных данных }

writeln(fout, ' Исходные данные');

writeln(fout, ' Интервал X: [', A: 5: 2, B: 5: 2, ']);

writeln(fout, Шаг X: ', Dx: 5: 3, ', шагов: ', Nx: 3, ',

точность: ', EPS: 1);

{ Печать заголовка таблицы }

writeln(fout, ' Результаты расчетов': 30);

writeln(fout, '| X | F(x) | S ',

' |Слагаемых|');

writeln(fout, '|-------|-----------|-----------|',

'---------|');

{ Внешний цикл (for) по X }

for i: =1 to Nx do

begin

{ вычисление X }

X: = A + Dx*(i-1);

if X > B then X: = B; { уточнение на конце интервала}

{ задание начальных значений J, C, S и числа слагаемых K}

J: = 1;

C: = 1;

S: = C;

K: = 1;

Repeat { внутренний цикл вычисления S }

C: = -C * X*J/(J+1);

S: = S + C;

K: = K + 1;

J: = J + 2;

until (abs(C) < EPS) or (K > 100);

{ печать строки таблицы с результатами }

write(fout, '| ', X: 5: 2, ' |', 1.0/Sqr(1.0+X): 10: 7,

' |');

writeln(fout, S: 10: 7, ' |', K: 6, ' |');

end;

{ Завершение программы (печать нижней рамки таблицы,

закрытие файлов, задержка) }

writeln(fout, '|---------------------------------',

'--------|');

close(fout);

readln;

END.

Результаты расчета

Файл UMNIK6.RES будет в этом случае содержать:

Исходные данные

Интервал X: [-0.05 0.04],

Шаг X: 0.010, шагов: 9, точность: 1.0E-0006

Результаты расчетов

| X | F(x) | S |Слагаемых|

|-------|-----------|-----------|---------|

| -0.05 | 1.1080332 | 1.0259783 | 6 |

| -0.04 | 1.0850694 | 1.0206207 | 5 |

| -0.03 | 1.0628122 | 1.0153462 | 5 |

| -0.02 | 1.0412328 | 1.0101525 | 5 |

| -0.01 | 1.0203041 | 1.0050378 | 4 |

| 0.00 | 1.0000000 | 1.0000000 | 2 |

| 0.01 | 0.9802960 | 0.9950372 | 4 |

| 0.02 | 0.9611688 | 0.9901475 | 5 |

| 0.03 | 0.9425959 | 0.9853293 | 5 |

|-----------------------------------------|


Варианты заданий

Таблица 22. Варианты заданий лабораторной работы N6

№ вар. F(x) (вид разложения в сумму см.табл.23) начальное значение A конечное значение В шаг Dx число точность вычисления EPS * Тип цикла
шагов Nx итераций Nmax
-0.05 0.05 0.01*   - 1e-4 if
-0.09 0.09   10*   1e-6 repeat
  0.05*   1e-4 while
  0.08 0.01*   1e-5 if
-1   0.5 12*   1e-6 repeat
-2 0.5   9*   1e-5 while
-0.5   0.1*   1e-5 if
0.08 0.01*     1e-4 repeat
-0.2 0.1 0.01*     1e-5 while
-0.5   0.1 10*   1e-6 if
-0.5 0.5   21*   1e-6 repeat
-0.1 0.2 0.03*     1e-4 while
-0.5 0.5   21*   1e-5 if
  0.02 11*   1e-3 repeat
-5 1*     1e-4 while
-0.1 -0.2   13*   1e-5 if
0.1 0.3 0.02*     1e-5 repeat
10* 1*     1e-6 while
0.5   11*   1e-4 if
-0.3 0.1 0.02*     1e-5 repeat
-3   1* 10*   1e-5 while
-0.4   0.04 17*   1e-6 if
-0.1 0.2 0.02*     1e-5 repeat
0.1 0.55 0.05*     1e-5 while
0.2 0.4   11*   1e-6 if
  0.5   20* 1e-5 repeat
0.5   0.1   20* 1e-5 while
  1*   25* 1e-4 if
  0.3   15* 1e-4 repeat
  0.4*   20* 1e-5 while
-0.05 0.04 0.1*     1e-6 repeat

 

Таблица 23. Виды представления функций


Поделиться:



Популярное:

  1. I.3. Формирование сербского этноса на территории Османской и Габсбургской империй.
  2. I.3. Формирование сербского этноса на территории Османской империи и Австро-Венгерской(Габсбургской) империи.
  3. XII. Формирование и обнародование списка абитуриентов, рекомендованных к зачислению
  4. Анализ влияния ошибочных действий на формирование самоконтроля над двигательными действиями
  5. Ведомость разложения составов поездов, прибывающих в расформирование
  6. Влияние детской литературы на формирование нравственных ценностей у детей дошкольного возраста
  7. Влияние Интернета на формирование и распространение общественного мнения
  8. ВЛИЯНИЕ КЛИМАТО-ЭКОЛОГИЧЕСКИХ ФАКТОРОВ НА ФОРМИРОВАНИЕ ФИЗКУЛЬТУРНО-ОЗДОРОВИТЕЛЬНЫХ СООРУЖЕНИЙ
  9. Влияние твердых границ потока на его формирование. Шероховатость стенок.
  10. Глава 17. Реформирование государственного управления в СССР (1953 - первая половина 1970-х гг.)
  11. Глава 22: формирование моря Ци.
  12. ГЛАВА 6 Формирование случайности. Порождение ее одной или несколькими формами


Последнее изменение этой страницы: 2016-05-30; Просмотров: 1114; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.219 с.)
Главная | Случайная страница | Обратная связь