Лабораторные работы по дисциплине "Численный методы (Программирование вычислений)" на факультете ПМИ, НГТУ
Написать программу, реализующую на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием текстового меню. Меню должно содержать следующие пункты:
- ввод нового треугольника;
- вычисление площади треугольника;
- вычисление минимального угла в градусах;
- вычисление косинуса минимального угла;
- окончание работы.
Программа должна соответствовать следующим требованиям:
- программа должна быть модульной, каждое действие пункта меню реализуется в виде отдельной подпрограммы;
- введенные пользователем параметры треугольника должны храниться в общих блоках (см. «оператор COMMON» в справке по языку ФОРТРАН), остальные данные могут как храниться в общих блоках, так и передаваться через параметры;
- вещественные числа хранятся с одинарной точностью, если в варианте не указано другое;
- вычисления производятся оптимальным образом (и в отчете это необходимо обосновать);
- все вводимые данные проверяются на корректность, при любых входных данных программа должна реагировать разумно, т.е. выдавать либо результат, либо сообщение об ошибке в данных;
- все углы измеряются в градусах (возможно, с дробной частью).
Треугольник задается координатами вершин, использовать формулу Герона.
Изучить операторы ввода-вывода и форматирования текста на языке FORTRAN. Познакомиться с такими понятиями вычислительной математики, как «конечная арифметика», «значащие цифры», «верные значащие цифры», «абсолютная и относительная погрешности», «накопление погрешности вычислений», «округление».
Написать программу, реализующую на языке FORTRAN, построение таблицы значений заданной функции двух переменных с учетом следующих требований:
- рограмма должна вводить для каждой из двух переменных значение минимума, максимума и шага изменения;
- все параметры вводить из файла с фиксированным именем, сообщения об ошибках выдавать на экран, в диалог не вступать;
- результатом работы программы должен быть текстовый файл, содержащий таблицу значений функции; выдача таблицы на экран не обязательна;
- формируемая таблица должна содержать n+1 строк и m+1 столбцов, первая строка, заголовки столбцов, должна содержать значения x, первый столбец, заголовки строк, – значения y;
- значения n и m программа должна определять из заданных значений минимума и максимума каждого аргумента, а также шагов их изменения; при этом независимо от того, делит шаг диапазон изменения нацело или нет, последним значением аргумента должен быть заданный пользователем максимум;
- строки и столбцы таблицы должны разделяться приемлемыми символами (например, | и –);
- каждое представленное в таблице значение должно содержать ровно 4 значащие цифры числа;
- все вводимые данные должны проверяться на корректность, для любых данных программа должна давать корректный результат (сообщение об ошибке на русском или английском языке – корректный результат, сообщение системы о делении на ноль – некорректный результат);
- в случае, когда не все значения аргументов попадают в область определения табулируемой функции, в соответствующих клетках таблицы должен содержаться какой-то замещающий текст (например, «не определено», «бесконечность» и т.п.);
- в случае, когда формирование таблицы по каким-то причинам невозможно (например, весь диапазон изменения аргументов не попал в область определения), программа должна выдать разумное сообщение о причинах отказа формирования таблицы и не формировать файл;
- все углы должны измеряться в градусах (возможно, с дробной частью).
- Написать программу, реализующую на языке ФОРТРАН требуемые действия над матрицами произвольной (задаваемой пользователем)
размерности с учетом следующих требований:
- для распределения памяти под необходимые массивы использовать идеи псевдодинамической памяти: память выделять в головной программе, описав 1 одномерный массив максимально возможной для данного компьютера размерности; вся оставшаяся после распределения память должна находиться в конце этого массива; при недостатке памяти выдавать соответствующее сообщение;
- каждое действие (ввод данных, вывод результата, перемножение и т.д.) должно быть реализовано в виде подпрограммы; для тех вариантов, в которых возможно реализовать перемножение строки на столбец с помощью перемножения одномерных векторов, обязательно наличие такой подпрограммы;
- вычисления должны производиться оптимальным образом;
- все входные данные должны вводиться из файлов (матрицы и векторы в разных файлах); размерности всех объектов (а также любая вспомогательная скалярная информация, например, ширина ленты) хранятся в отдельном текстовом файле, например, два целых числа для прямоугольной плотной матрицы, одно – для вектора); при этом матрица в файлах хранится уже в заданном формате, число файлов для хранения матрицы определяется форматом и обычно совпадает с числом массивов.
- Протестировать разработанную программу. Для тестирования использовать матрицы небольшой размерности.
- Реализовать задание лабораторной работы с использованием написанных ранее подпрограмм при условии, что матрицы и векторы хранятся в файлах прямого доступа (файл с размерностями оставить текстовым).
- Разработать программу генерации тестов большой размерности в заданном формате. Программа должна создавать все требуемые файлы прямого доступа.
- Для просмотра и создания тестов с файлами прямого доступа рекомендуется написать дополнительные программы, которые формируют файл прямого доступа по заданному текстовому файлу, и наоборот.
- Для просмотра матриц малой размерности, заданных в разреженном и профильном формате, рекомендуется разработать программу, выводящую матрицу в плотном формате в текстовый файл.
Умножение несимметричной матрицы на вектор. Матрица в памяти хранится в профильном строчно-столбцовом формате.