Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NMM_Manual_N08.doc
Скачиваний:
7
Добавлен:
07.07.2019
Размер:
636.93 Кб
Скачать

Пример выполнения лабораторного задания на Fortran

Пусть задана функция на интервале , и .

Стартуем среду разработки MS Visual Studio (открываем файл NMM_PetrovIS.sln). Создаем новый проект LabTask_8f консольного приложения на языке программирования Fortran. Включаем в этот проект новый файл y(x).f90, в котором размещаем код функции, вычисляющей значения в соответствии с формулой :

Теперь приступим к созданию функции, выполняющей интерполирование по Лагранжу:

.

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

Реализуем сказанное в следующем виде:

Теперь можно перейти к созданию основной программной единицы. Напомним, что ее основными задачами являются:

  1. получение данных от пользователя (значения параметров и );

  2. создание исходной таблицы функции;

  3. вычисление шага субтабулирования для новой таблицы;

  4. выполнение субтабулирования;

  5. вычисление абсолютной и относительной ошибок субтабулирования;

  6. сохранение результатов вычислений в виде текстового файла.

Текст основной программной единицы может быть, например, таким:

Интерфейсы функций, вызываемых в основной программной единице, разместим, как обычно, в соответствующем модуле:

После успешной компиляции и компоновки исполняемого файла запустим его на выполнение. Теперь в окне консольного приложения нам предстоит ввести значения параметров и :

Результаты вычислений данной программы сохраняются в последовательном форматном файле с именем SubTable.txt. Подключим этот файл к проекту и откроем его:

Данная таблица демонстрирует «качество» субтабулирования заданной функции по методу Лагранжа. Наблюдаемые отдельные большие значения относительной ошибки соответствуют тем значениям аргумента , для которых истинное значение заданной функции само по себе является величиной достаточно малой.

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

Пример выполнения лабораторного задания на c#

Приступим к разработке нового проекта – LabTask_08с консольного приложения на языке C#.

Вспомогательные программные компоненты разместим в отдельном классе – Class_08:

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

Напомним, что для работы с файлами потокового ввода-вывода необходимо подключить к проекту соответствующее пространство имен.

Обратите внимание на особенности реализации ввода–вывода в классе Console.

Тип Console определяет методы, обрабатывающие данные ввода и вывода, причем все его методы определены как статические и поэтому они вызываются на уровне класса.

Метод Write() вставляет текст в выходной поток без возврата каретки и перехода на новую строку консоли, см. строки 19 и 21 кода.

Метод ReadLine() позволяет получить информацию из входного потока (из консоли) вплоть до символа возврата каретки. Если считываемое данное есть некоторое число, то строку, прочитанную из входного потока необходимо конвертировать в число требуемого типа, см. строки 20 и 22 кода.

Особенности работы с текстовыми файлами результатов обсуждались в предыдущей лабораторной работе, поэтому мы здесь повторяться не будем. Отметим лишь, что для удобства сопоставления результатов мы внесли очевидное изменение в имя файла, см. строку 37.

Для того чтобы результаты выводились в виде упорядоченной таблицы заданного формата, мы воспользовались дополнительными методами, которыми обладают объекты типа string, в частности – .PadLeft(kk).

С мысл этого метода очевиден – выводимая строка (число) выравнивается по правому краю, а отсутствующие символы заменяются слева пробелами. При этом общее количество символов в выводимой строке – kk – задается в качестве параметра этого метода.

Так мы достигли практической идентичности таблиц результатов, полученных в рамках данной лабораторной работы, но в двух разных проектах.

Сопоставить эти файлы удобно непосредственно в окне среды разработки, если воспользоваться пунктом меню:

После запуска на выполнение текущего проекта:

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

Совпадение данных в файлах очевидно. Цель лабораторной работы достигнута.

Теперь Вам предстоит реализовать полученные знания для выполнения Вашего варианта задания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]