Пример выполнения лабораторного задания на Fortran
Пусть задана функция на интервале , и .
Стартуем среду разработки MS Visual Studio (открываем файл NMM_PetrovIS.sln). Создаем новый проект LabTask_8f консольного приложения на языке программирования Fortran. Включаем в этот проект новый файл y(x).f90, в котором размещаем код функции, вычисляющей значения в соответствии с формулой :
Теперь приступим к созданию функции, выполняющей интерполирование по Лагранжу:
.
Очевидно, что входными параметрами данной программной единицы должны быть: массивы значений аргумента и интерполируемой функции, количество элементов в этих массивах, а также значение аргумента , для которого собственно и должно быть выполнено интерполирование.
Реализуем сказанное в следующем виде:
Теперь можно перейти к созданию основной программной единицы. Напомним, что ее основными задачами являются:
получение данных от пользователя (значения параметров и );
создание исходной таблицы функции;
вычисление шага субтабулирования для новой таблицы;
выполнение субтабулирования;
вычисление абсолютной и относительной ошибок субтабулирования;
сохранение результатов вычислений в виде текстового файла.
Текст основной программной единицы может быть, например, таким:
Интерфейсы функций, вызываемых в основной программной единице, разместим, как обычно, в соответствующем модуле:
После успешной компиляции и компоновки исполняемого файла запустим его на выполнение. Теперь в окне консольного приложения нам предстоит ввести значения параметров и :
Результаты вычислений данной программы сохраняются в последовательном форматном файле с именем SubTable.txt. Подключим этот файл к проекту и откроем его:
Данная таблица демонстрирует «качество» субтабулирования заданной функции по методу Лагранжа. Наблюдаемые отдельные большие значения относительной ошибки соответствуют тем значениям аргумента , для которых истинное значение заданной функции само по себе является величиной достаточно малой.
Для полноты исследования алгоритма интерполирования по Лагранжу Вы можете выполнить вычисления с различным числом – узлов исходной таблицы функции, т.е. для различных степеней полинома Лагранжа. Следует, однако, помнить, что чрезмерное увеличение влечет значительные ошибки округления и катастрофическую потерю верных значащих цифр в результатах вычислений.
Пример выполнения лабораторного задания на c#
Приступим к разработке нового проекта – LabTask_08с консольного приложения на языке C#.
Вспомогательные программные компоненты разместим в отдельном классе – Class_08:
При разработке кода основной программной единицы будем руководствоваться порядком действий, представленных в варианте на Fortran.
Напомним, что для работы с файлами потокового ввода-вывода необходимо подключить к проекту соответствующее пространство имен.
Обратите внимание на особенности реализации ввода–вывода в классе Console.
Тип Console определяет методы, обрабатывающие данные ввода и вывода, причем все его методы определены как статические и поэтому они вызываются на уровне класса.
Метод Write() вставляет текст в выходной поток без возврата каретки и перехода на новую строку консоли, см. строки 19 и 21 кода.
Метод ReadLine() позволяет получить информацию из входного потока (из консоли) вплоть до символа возврата каретки. Если считываемое данное есть некоторое число, то строку, прочитанную из входного потока необходимо конвертировать в число требуемого типа, см. строки 20 и 22 кода.
Особенности работы с текстовыми файлами результатов обсуждались в предыдущей лабораторной работе, поэтому мы здесь повторяться не будем. Отметим лишь, что для удобства сопоставления результатов мы внесли очевидное изменение в имя файла, см. строку 37.
Для того чтобы результаты выводились в виде упорядоченной таблицы заданного формата, мы воспользовались дополнительными методами, которыми обладают объекты типа string, в частности – .PadLeft(kk).
С мысл этого метода очевиден – выводимая строка (число) выравнивается по правому краю, а отсутствующие символы заменяются слева пробелами. При этом общее количество символов в выводимой строке – kk – задается в качестве параметра этого метода.
Так мы достигли практической идентичности таблиц результатов, полученных в рамках данной лабораторной работы, но в двух разных проектах.
Сопоставить эти файлы удобно непосредственно в окне среды разработки, если воспользоваться пунктом меню:
После запуска на выполнение текущего проекта:
выполним сопоставление файлов результатов (их одинаковых фрагментов):
Совпадение данных в файлах очевидно. Цель лабораторной работы достигнута.
Теперь Вам предстоит реализовать полученные знания для выполнения Вашего варианта задания.