Интерполяция сплайнами
ПРОГРАММИРОВАНИЕ В MATLAB
Операторы MATLAB · Операторы цикла
Цикл for
Синтаксис for count=start:step:final команды MATLAB end
Описание count – переменная цикла, start – ее начальное значение, final – ее конечное значение, step – шаг, на который увеличивается count при каждом следующем заходе в цикл цикл заканчивается, как только значение count становится больше final.
Пример Пусть требуется вывести семейство кривых для x? [0, 2π], которое задано функцией, зависящей от параметра y (x, a) = e-ax sin x, для значений параметра а от -0.1 до 0.1. Ниже приведен листинг файл-программы для вывода семейства кривых.
Листинг программы Figure x = [0:pi/30:2*pi]; for a = -0.1:0.02:0.1 y = exp (-a*x).*sin(x); hold on plot (x, y) end
В результате выполнения программы появится графическое окно, которое содержит требуемое семейство кривых. Цикл while
Синтаксис while условие цикла команды MATLAB end
Описание Цикл работает, пока выполняется (истинно) условие цикла. Для задания условия выполнения цикла допустимы следующие операции отношения:
Задание более сложных условий производится с применением логических операторов. Логические операторы приведены в следующей таблице
Пример
Операторы ветвления
Условный оператор if Синтаксис if условие команды MATLAB end
Описание
Если условие верно, то выполняются команды MATLAB, размещенные между if и end, а если условие не верно, то происходит переход к командам, расположенных после end.
Пример
Условный оператор elseif Синтаксис if условие1 команды1 elseif условие2 команды2 ……………………… elseif условиеn командыn else команды end
Описание В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else.
Пример
Оператор switch Синтаксис
switch переменная case значение1 команды1 case значение2 команды2 …………………… case значениеn командыn otherwise команды end Каждая ветвь определяется оператором case, переход в нее выполняется тогда, когда переменная оператора switch принимает значение, указанное после case, или одно из значение из списка case. После выполнения какой-либо из ветвей происходит выход из switch, при этом значения, заданные в других case, уже не проверяются. Если подходящих значений для переменной не нашлось, то выполняется ветвь программы, соответствующая otherwise.
Пример
Прерывания цикла. Исключительные ситуации. Оператор break Синтаксис
break
Оператор break используется при организации циклических вычислений: for…end, while…end. При выполнении условия if условие break end оператор break заканчивает цикл (for или while) и происходит выполнение операторов, которые расположены в строках, следующих за end. В случае вложенных циклов break осуществляет выход из внутреннего цикла.
Обработка исключительных ситуаций, оператор try … catch
Синтаксис try операторы, выполнение которых может привести к ошибке catch операторы, которые следует выполнить при возникновении ошибки в блоке между try и catch end
Описание Конструкция try…catch позволяет обойти исключительные ситуации (ошибки, приводящие к окончанию работы программы, например, обращение к несуществующему файлу) и предпринять некоторые действия в случае их возникновения.
Пример
Сервисные функции
disp – осуществляет вывод текста или значения переменной в командное окно input – осуществляет запрос на ввод с клавиатуры. Используется при создании приложений с интерфейсом из командной строки. eval – выполняет содержимое строки или строковой переменной, как команды MATLAB clear – удаляет переменные рабочей среды. с lc – производит очистку командного окна
Более подробную информацию об этих и других функциях можно узнать, выполнив в командной строке Help имя_функции Задания на выполнение лабораторной работы Номер конкретного варианта задания определяется преподавателем. Задание №1 Данное задание подразумевает нахождение для некоторой совокупности данных алгебраического интерполяционного многочлена степени n: Pn ( x ). Цель работы: Необходимо составить программу вычисления коэффициентов алгебраического интерполяционного многочлена Pn ( x )= a 0 + a 1 x + … + anxn. Методические указания: Пусть, например, имеется следующая совокупность данных:
Коэффициенты a 0 , a 1 , …, an определяются из решения системы уравнений:
Здесь n – порядок интерполяционного многочлена, n +1 – количество заданных пар точек (x , y), a 0 , a 1 ,… an– искомые коэффициенты многочлена Pn ( x )= a 0 + a 1 x + … + anxn). Требования к программе При выполнении данной работы необходимо: · Задать границы отрезка [x0, xn], на котором строится интерполяционный многочлен P(x) · Задать n – количество отрезков интерполяции (или, что то же самое, степень многочлена) Примечание: x0, xn, n вводятся с клавиатуры.
· Для получения исходных данных (x, y) (количество пар точек (xi, yi), по которым строится интерполяционный многочлен P(x) – n1=n+1) предусмотреть: ü Ввод произвольно расположенных узлов xi, i=0, n с клавиатуры ü Расчет узлов xi, i=0, n, соответствующих равномерному расположению аргумента x на отрезке [x0, xn] ü В пп. 1,2 значения yi, i=0, n либо вводятся с клавиатуры (если исходная функция неизвестна), либо вычисляются по заданной функции f(x). Выражение, определяющее функцию, вводится с клавиатуры и должно соответствовать правилам записи выражений в MATLAB ü Ввод данных (xi,yi, i=0, n) из файла · Решить систему уравнений для определения коэффициентов многочлена P(x) · Построить графики исходной таблично заданной функции и многочлена P(x) · Если исходные данные заданы в виде функции f(x), построить график погрешности интерполяции /f(x) – P(x)/. Рассчитать максимальное по модулю значение погрешности интерполяции на заданном промежутке. При выполнении последнего пункта на отрезке [x0, xn] взять не менее 500 точек для проведения расчетов
Задание №2 Интерполяция сплайнами Цель работы: Необходимо составить программу вычисления коэффициентов и построения сплайн-функции S(x), «склеенной» из кусков многочленов 3‑го порядка Si ( x ), которые имеют специальную форму записи:
,
функция Si ( x ) определена на отрезке [xi-1, xi],
Требования к программе При выполнении данной работы необходимо: · Задать границы отрезка [x0, xn], на котором строится сплайн-функция S(x) · Задать n – количество отрезков интерполяции, на каждом из которых строится кубический многочлен Si(x). · Примечание: x0, xn, n вводятся с клавиатуры. · Организовать ввод исходных данных (x, y) (количество пар точек (xi, yi), по которым строится сплайн-функция S(x), n1=n+1), предусмотрев: ü Ввод произвольно расположенных узлов xi, i=0, n с клавиатуры ü Расчет узлов xi, i=0, n, соответствующих равномерному расположению аргумента x на отрезке [x0, xn] ü В пп. 1,2 значения yi, i=0, n либо вводятся с клавиатуры (если исходная функция неизвестна), либо вычисляются по заданной функции f(x). Выражение, определяющее функцию, вводится с клавиатуры и должно соответствовать правилам записи выражений в MATLAB ü Ввод данных (xi, yi, i=0, n) из файла · Для краевых условий 1–3 рассчитать коэффициенты di кубических сплайнов ü S1''(x0)=0, S3''(x3)=0 ü S1'(x0)=f '(x0), S3'(x3)=f '(x3) ü S1''(x0)=f «(x0), S3''(x0)=f «(x3) · Для определения коэффициентов естественного кубического сплайна (краевые условия 1) необходимо решить следующую систему уравнений: ·
Коэффициенты σ0 =0,σn =0 · Построить графики исходной функции и сплайн-функций для всех трех типов краевых условий. · Построить графики функций погрешности сплайн-интерполяции f(x) – S(x) для всех трех типов краевых условий. · Рассчитать максимальные по модулю значения погрешности интерполяции на заданном промежутке [x0, xn] для каждого вида сплайна. Примечание: В пакете MATLAB индексы одномерных и двумерных массивов начинаются с 1, а не с 0. Учесть это при составлении программы. Задание №3
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (165)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |