. Задание на курсовую работу по дисциплине «Информатика» ( далее ссылки на литературу приведены по литературе, указанной в Приложении 2)
Задание на курсовую работу по дисциплине «Информатика» ( далее ссылки на литературу приведены по литературе, указанной в Приложении 2)

Задание на курсовую работу по дисциплине «Информатика» ( далее ссылки на литературу приведены по литературе, указанной в Приложении 2)

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

Задание на курсовую работу

Разработать алгоритм и программную реализацию заданного математического метода в виде функции на языке программирования MATLABв средеMatLab,FreeMat,OctaveилиSciLab. Разработанная функция должна быть снабжена пользовательским интерфейсом. Для недопустимых значений входных данных, при которых невозможно провести вычисления, должно отображаться сообщение об ошибке. Также необходимо провести сравнение разработанной функции со встроенными функциями используемого математического пакета (MatLab,FreeMat,Octave), решающими те же задачи.

Реализуемый математический метод определяется в соответствии вариантом. Варианты назначаются преподавателем.

Порядок выполнения курсовой работы

построить алгоритм для указанного в задании математического метода и реализовать его в виде пользовательской функции (см. примечание 1ниже);

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

реализовать пользовательский интерфейс для упрощения взаимодействия конечного пользователя с разработанной функцией;

сравнить работу пользовательских функций, полученных в результате выполнения пунктов 1 и 2.

Примечание 1: при выполнении пункта 1 задания запрещается использовать все математические и другие функции используемого математического пакета. Алгоритм необходимо реализовать с помощью базовых языковых конструкций, таких какfor,while,if-elseи т.п.

Примечание 2: при выполнении пункта 2 задания, в случае, если в используемом математическом пакете нет встроенной функции, реализующей указанный в задании математический метод, необходимо подобрать имеющуюся в математическом пакете функцию, наиболее близкую по смыслу решаемой ею задачи. Например, в пакетеFreeMatне реализована интерполяция многочленами Лагранжа или по формуле Ньютона, однако связка функцийpolyfitиpolyvalрешает задачу интерполяции многочленами методом наименьших квадратов. Следовательно, вместо интерполяции многочленами по Лагранжу или по Ньютону, при выполнении пункта 2 задания можно использовать функцииpolyfitиpolyval.

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

Блок «интерполяция и экстраполяция»

Интерполяция функции по формулам Лагранжа при равномерном расположении узлов ([1], с. 79).

Интерполяция функции по методу Эйткена ([1], с. 80).

Интерполяция функции полиномом Лагранжа при произвольном расположении узлов ([1], с. 80).

Интерполяция функции методом Ньютона при произвольном расположении узлов ([1], с. 82).

Интерполяция функции на множестве интервалов при равномерном расположении узлов с помощью кусочно-линейной функции ([1], с. 82).

Интерполяция функции на множестве интервалов с помощью квадратичной функции ([1], с. 82).

Интерполяция функции сплайнами (сплайн-интерполяция) ([1], с. 83).

Интерполяция функции двух переменных ([1], с. 84).

Многоинтервальная квадратичная интерполяция-аппроксимация функции двух переменных ([1], с. 85).

Метод обратной интерполяции-экстраполяции ([1], с. 82, 90).

Методом обратной квадратичной интерполяции-экстраполяции ([1], с. 90).

Блок «нелинейные и трансцендентные уравнения»

Решение нелинейных и трансцендентных уравнений методом Ньютона ([1], с. 86).

Решение нелинейных и трансцендентных уравнений методом простых итераций ([1], с. 86, 87).

Решение нелинейных и трансцендентных уравнений методом Рыбакова ([1], с. 88).

Решение нелинейных и трансцендентных уравнений методом поразрядного приближения ([1], с. 88).

Решение нелинейных и трансцендентных уравнений методом подекадного приближения ([1], с. 89).

Решение нелинейных и трансцендентных уравнений методом хорд ([1], с. 89).

Решение нелинейных и трансцендентных уравнений методом секущих ([1], с. 89).

Решение нелинейных и трансцендентных уравнений комбинированным методом секущих-хорд ([1], с. 89).

Решение нелинейных и трансцендентных уравнений методом Эйтекена-Стеффенсона ([1], с. 90).

Решение нелинейных и трансцендентных уравнений модифицированным методом Ньютона ([1], с. 87).

Блок «многомерная оптимизация»

Минимизация функции Nпеременных методом координатного спуска ([1], с. 99).

Минимизация функции Nпеременных методом спирального координатного спуска ([1], с. 99, 100).

Минимизация функции Nпеременных методом квадратичной интерполяции-экстраполяции ([1], с. 99, 100).

Блок «поиск экстремальных значений»

Поиск экстремумов функции методом равномерного поиска ([1], с. 96). Модифицировать алгоритм для поиска всех экстремумов на интервале с заданной погрешностью (шириной шага приращения) .

Поиск экстремумов функции методом поразрядного приближения ([1], с. 96, 97).

Поиск экстремумов функции методом дихотомии (деления пополам) ([1], с. 97).

Поиск экстремумов функции методом "золотого сечения" ([1], с. 97).

Поиск экстремумов функции методом квадратичной интерполяции-экстраполяции ([1], с. 97, 98).

Блок «численное интегрирование»

Численное интегрирование функций методом Уэдля ([1], с. 106, 107).

Численное интегрирование функций методом Ньютона-Котеса ([1], с. 105‑107).

Численное интегрирование функций методом Чебышева ([1], с. 106, 107).

Численное интегрирование функций методом Гаусса ([1], с. 106, 107).

Численное интегрирование функций методом Гаусса с заданной точностью ([1], с. 106, 108).

Численное интегрирование функций методом парабол (Симпсона) ([1], с. 108, 109).

Вычисление несобственного интеграла методом Гаусса ([1], с. 108, 109)

Численное интегрирование функций методом Монте-Карло ([2], раздел «Методы Монте-Карло»).

Численное интегрирование функций методом прямоугольников (правых) ([2], раздел «Метод прямоугольников»; [3]).

Численное интегрирование функций методом прямоугольников (левых) ([2], раздел «Метод прямоугольников» ; [3]).

Вычисление двойного интеграла по простой формуле Симпсона ([1], с. 108, 109).

Вычисление двойного интеграла по простой формуле Гаусса ([1], с. 110).

Вычисление двойного интеграла по сложной формуле Гаусса ([1], с. 110).

Справка по функциям языка MatLab

Функции, реализующие различные алгоритмы интерполяции: polyfit,polyval,interp1,interp2,spline,pchip,ppval. СредыMatLabиGNUOctaveподдерживают все эти функции.

Функции для решения нелинейных уравнений: fzero,fsolve.

Функции для оптимизации (поиска экстремумов) функций одной и нескольких переменных: fminbnd,fminsearch.

Функции численного интегрирования: trapz,quad,quadgk,quad2d,dblquad.

Из вышеперечисленного списка среда FreeMatверсии 4.1 поддерживает только функцииpolyfit,polyval,interp2иtrapz. СредыMatLabиGNUOctaveподдерживают все функции.

Требования к входным и выходным данным разрабатываемой функции

Для блока заданий посвященных интерполяции на вход разрабатываемой функции должен поступать вектор значений независимой переменной X(или несколько векторовX1, . Xnдля функции нескольких переменных), вектор значений зависимой переменнойYи векторX0 (илиnвекторовX01, …,X0nдля функцииnпеременных) значений независимой переменной, для которых необходимо найти интерполированное значение функции. Ввод векторов должен осуществляться через интерфейс пользователя, с последующим преобразованием из строки в массив чисел. На выходе функция должна выдавать вектор интерполированных значений зависимой переменнойY0 в точках, указанных во входном вектореX0.

Для блока заданий по решению нелинейных и трансцендентных уравнений на вход разрабатываемой функции должно подаваться имя функции (указатель на функцию, т.н. FunctionHandleвMatLab), осуществляющей вычисление левой части уравнения при заданном значении переменной , а также интервал , на котором ищется корень, и погрешность . Сама функция вводится через интерфейс пользователя в виде строки, например такой:'x – x^2'. Преобразование из строки в функциюMatLabможет осуществляться с помощью функцииinline, например, так:f=inline('x – x^2'). Вызовf(2)теперь вернет-2, аf(5)будет равно-20. Именно функцияfи передается в качестве входных данных разрабатываемой функции. Выходным значением разрабатываемой функции должно быть найденное значение корня. Выходное значение должно выводиться пользователю.

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

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

Пример использования inline-функции

📎📎📎📎📎📎📎📎📎📎