Класс для интерполяции данных сплайнами



 

1. Создать функциональный класс, позволяющий выполнять интерполяцию данных для зависимости y(x) с помощью кубических сплайнов. Исходные данные для интерполяции представляют собой таблицу зависимости величины y от величины x.

2. При построении класса использовать возможности перегрузки операции вызова функции и построения функциональных классов и функциональных объектов.

3. Выполнить тестирование созданных программных средств. Исследовать возможности использования интерполяции сплайнами, изучить устойчивость такой интерполяции.

 

   Методические указания

Методы и алгоритмы интерполяции сплайнами см. в Приложении 4.

 

 

Тема 22

   Процедура вычисления кратного интеграла методом Монте-Карло

 

1. Создать функцию для вычисления кратных интегралов следующего вида:

            ,

где f(x1, x2, ... , xr)  - заданная подынтегральная функция с r аргументами;

   D - область интегрирования в r-мерном пространстве, которая задана предикатом

                                       P(x1,x2, … ,xr).

Функция-предикат P(x1,x2, … ,xr) представляет собой функцию, которая может принимать одно из двух значений: "Ложь" или "Истина". Функция принимает значение "Истина" в том случае, если точка, координаты которой представлены аргументами функции P, принадлежит области интегрирования D.

2. Выполнить тестирование разработанной функции. Оценить погрешность вычисления интеграла, изучить зависимость погрешности от количества испытаний.

 

   Методические указания

Алгоритмы вычисления кратных интегралов см. в Приложении 5.

 

 

Тема 23

   Программа построения оптимального геометрического образа
   графа

 

1. Создать программу построения оптимального геометрического образа графа. Использовать критерий оптимальности, предложенный в работе [..]. Исходное представление графа - матрица смежности. Вид графа: неориентированный, без петель и кратных ребер.

2. Выполнить расчеты и получить оптимальные образы регулярных и нерегулярных графов.

3. Предусмотреть возможность получения оптимального образа графа на экране компьютера.

4. Изучить возможности метода и созданных программных средств.

 

 

Тема 24

Нелинейная оптимизация методом вложенных алгоритмов.  Программная реализация и исследование

 

 

Тема 25

Программные средства многомерной интерполяции

 

 

Общие методические указания

 

1. При перегрузке операции присваивания необходимо учесть, что динамическое присваивание включает следующие 4 этапа.

Этап 1. Проверить, не присваивается ли объект самому себе, если это так, то необходимо завершить выполнение функции с возвратом ссылки на объект. Это позволяет предотвратить эффект "схлопывания" объекта.

Этап 2. Свернуть левый операнд (т.е. уничтожить его динамичес-кие компоненты).

Этап 3. Развернуть левый операнд в соответствии со структурой и размерами правого.

Этап 4. Выполнить копирование простых и динамических компо-нент из B в A .

 

2. При программировании вычислений необходимо учитывать, что в общематематических записях нумерация элементов векторов, матриц и массивов обычно принимается с единицы, а в С++ элементы массивов нумеруются, начиная с нуля.

 

3. При записи текстов программ следует руководствоваться правилами, определяемыми стилем ЗНТУ. Описание этих правил приводится в следующей главе.

 

Стиль записи программ

 

   При записи текстов программ в отчетах, публикациях, книгах и других материалах важную роль играет стиль записи текстов программ. Особенно большое значение это имеет для языка С/С++. Если используется хороший стиль, программа выглядит лучше, проще и понятнее и, кроме того, текст программы в этом случае будет короче. Выполнить анализ программы, найти в ней ошибку или какую-нибудь проблемную точку оказывается намного легче, если текст программы записан в хорошем стиле. К сожалению, в настоящее время правила записи текстов программ не регламентируется никакими действующими стандартами или хотя бы рекомендациями или какими-либо общепринятыми правилами. В книгах и публикациях, которые мы читаем, каждый из авторов использует свой собственный стиль и, как свидетельствуют результаты систематического опыта, в большинстве случаев предлагаемый стиль на поверку оказывается или плохим, или вообще никуда не годным. Это относится как к отечественным, так и к зарубежным авторам книг и публикаций по соответствующей тематике. И, конечно же, это в полной мере относится к студентам, которые пишут свои тексты программ в отчетах по выполненным учебным заданиям и в пояснительных записках к разрабатываемым проектам.

   Хорошим решением проблемы является использование так называемого стиля ЗНТУ. Он определяет правила записи программ на языке С/С++ и носит рекомендательный характер. Попробуйте писать свои программы в соответствии с этим стандартом и вы убедитесь, что это действительно хорошо. Накопленный опыт использования этого стандарта в учебном процессе, а также в научных отчетах и публикациях подтверждает его эффективность. Правила стандарта достаточно просты, они легко запоминаются и осваиваются.

Ниже приводятся некоторые основные положения стандарта - стиля ЗНТУ.

 

   1. Любой язык программирования выполняет две (в одинаковой мере важные) функции. Первой является описание алгоритмов и структур данных, которые составляются для того, чтобы заставить компьютер выполнить (или выполнять) некоторую работу. Второй и не менее важной функцией языка программирования является представление создаваемых алгоритмов и структур данных в виде текстов с целью их анализа и публикации.

 

   2. Текст любой программы на языке С/С++ представляет собой некоторую последовательность программных компонентов одного из следующих видов: директив, объявлений, комментариев и функций. Директивы представляют собой команды, которые управляют процессом компиляции программы. Комментарии используются для того, чтобы сделать программу более удобочитаемой. Они как раз и являются именно теми элементами, которые позволяют лучше выполнять именно вторую функцию языка программирования.

Все объявления, которые допускаются языком, удобно разделить на две категории: простые объявления и объявления, которые создают свое собственное пространство имен. К последней категории объявлений принадлежат объявления функций и классовых типов (классов, структур, объединений).

 

   3. Все директивы, которые начинаются символом " # " записываем с первой позиции строки. Например:

 

#define M_PI pi

#ifndef _SYST_

#define _SYST_

#include <dos.h>

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#endif

 

   Параметры директивы отделяются от самой директивы и разделяются между собой пробелами. Количество пробелов не регламентируется.

 

   4. Глобальные простые объявления также записываются с первой позиции строки. Примеры:

   - расширение пространства имен:

using namespace std;

   - объявление глобальной константы:

const double CPU_Frequency = 2600.0;

   - объявление глобальных переменных:

unsigned long STIME_1,STIME_2;

 

   5. Фигурные скобки, которые имеют глобальный статус (например, скобки, которые определяют тело функции или класса), записываются с первой позиции строки. И, наоборот, в первой позиции строки записываются только те фигурные скобки, которые имеют глобальный статус. Фигурная скобка, которая открывает локально определенный блок, сдвигается вправо на количество позиций, кратное двум. При этом величина сдвига определяется уровнем вложенности соответствующего блока. Скобка, которая закрывает блок, записывается точно под соответствующей открывающей скобкой. Если блок целиком помещается в одной строке, то обе скобки можно расположить в той строке.

   Все строки, которые составляют тело блока, сдвигаются на 2 позиции вправо относительно положения фигурных скобок, которые определяют блок.

   Заголовок класса или классового типа, объявление которого имеет глобальный статус (то есть обычное объявление класса), записывается с 3 позиции строки. С этой же позиции записывается и заголовок любой функции.

   Пример правильной записи текста программы.

 


Дата добавления: 2018-04-15; просмотров: 356; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!