Учебная работа. Лабораторная работа: Программирование в MATLAB
ПРОГРАММИРОВАНИЕ В
MATLAB
Операторы
MATLAB
· Операторы цикла
Цикл
for
Синтаксис
for count=start:step:final
команды MATLAB
end
Описание
count – переменная цикла,
start – ее изначальное
final – ее конечное
step – шаг, на который возрастает count при любом последующем заходе в цикл
цикл завершается, как
Пример
Пусть требуется вывести семейство кривых для 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
Описание
Цикл работает, пока производится (поистине) условие цикла. Для задания условия выполнения цикла допустимы последующие операции дела:
Обозначение
Операция дела
==
Равенство
<
Меньше
<=
Меньше либо равно
>=
больше либо равно
>
Больше
~=
Не равно
Задание наиболее сложных критерий делается с применением логических операторов. Логические операторы приведены в последующей таблице
Оператор
Условие
Эквивалентная запись
Логическое «и»
x<3 и k=4
(x<3) & (k==4)
Логическое «либо»
x=1 либо x=2
(x==1)| (x==2)
Отрицание «не»
a≠1.9
~(a==1.9)
Пример
Операторы ветвления
Условный оператор
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
case
команды2
……………………
caseзначениеn
командыn
otherwise
команды
end
Любая ветвь определяется оператором 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
.
Цель работы:
Нужно составить программку вычисления коэффициентов алгебраического интерполяционного многочлена Pn
0
1
an
xn
.
Методические указания:
Пусть, к примеру, имеется последующая совокупа данных:
0
1
2
3
i
1,2
1,4
1,6
1,8
yi
8,3893
8,6251
8,9286
8,9703
Коэффициенты
0
1
an
определяются из решения системы уравнений:
Тут
– количество данных пар точек (
),
0
1
an
– разыскиваемые коэффициенты многочлена Pn
0
1
an
xn
).
Требования к программке
При выполнении данной работы нужно:
· Задать границы отрезка [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
которые имеют специальную форму записи:
,
функция Si
определена на отрезке [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
· Выстроить графики начальной функции и сплайн-функций для всех 3-х типов краевых критерий.
· Выстроить графики функций погрешности сплайн-интерполяции f(x) – S(x) для всех 3-х типов краевых критерий.
· Высчитать наибольшие по модулю значения погрешности интерполяции на данном промежутке [x0, xn] для всякого вида сплайна.
Примечание:
В пакете MATLAB индексы одномерных и двумерных массивов начинаются с 1, а не с 0. Учитывать это при составлении программки.
Задание №3
Аппроксимация функции способом меньших квадратов (МНК).
Данное задание предполагает нахождение для некой совокупы данных аппроксимирующей функции (многочлена степени m), построенной способом меньших квадратов (МНК).
Цель работы:
Нужно составить программку нахождения коэффициентов многочлена φ
0
1
an
xm
способом меньших квадратов.
Советы по выполнению работы:
Пусть, к примеру, имеется последующая совокупа данных:
i
1,2
1,4
1,6
1,8
2,0
2,2
2,4
2,6
2,8
3,0
yi
8,3893
8,6251
8,9286
8,9703
9,1731
9,1784
8,8424
8,7145
8,3077
7,9611
Поиск нужных коэффициентов осуществляется последующим образом:
где
– количество точек (
),
– степень искомого многочлена,
0
1
am
– разыскиваемые коэффициенты (φ
0
1
am
xm
).
Требования к программке
При выполнении данной работы нужно:
· Задать границы отрезка [x1, xn], на котором строится аппроксимирующая функция φ(x)=a0+a1*x+… an * xm
· Задать m – степень многочлена
· Примечание: x1, xn, m вводятся с клавиатуры.
· Для получения начальных данных (x, y), по которым строится аппроксимирующая функция φ(x)=a0+a1*x+… an* xm
предугадать:
— Ввод произвольно расположенных узлов xi, i=1, n с клавиатуры
— Расчет узлов xi, i=1, n, соответственных равномерному расположению аргумента x на отрезке [x1, xn]
— В пп. 1,2 значения yi, i=1, n или вводятся с клавиатуры (если начальная функция неведома), или рассчитываются по данной функции f(x). Выражение, определяющее функцию, вводится с клавиатуры и обязано соответствовать правилам записи выражений в MATLAB
— Ввод данных (xi, yi, i=1, n) из файла
· Решить систему уравнений для определения коэффициентов многочлена φ(x)
· Выстроить графики начальной таблично данной функции и многочлена φ(x)
· Если начальные данные заданы в виде функции f(x), выстроить график погрешности интерполяции /f(x) – φ(x)/. Высчитать наибольшее по модулю
При выполнении крайнего пт на отрезке [x1, xn]
взять не наименее 500 точек для проведения расчетов
Требования к оформлению лабораторной работы
Отчет должен содержать:
1. Постановку задачки
2. текст программки
3. Результаты тестирования
Примечание тексты программ должны быть снабжены комментами.
Перечень литературы
1. Ануфриев И.Е. Самоучитель Matlab 5.3/6.x – СПб.: БХВ-Петербург, 2003. – 736 с.: ил.
2. В.П. Дьяконов MATLAB 6.5 SPI/7 + Simulink 5/6 в арифметике и моделировании. Серия «Библиотека специалиста». – М.: СОЛОН-Пресс, 2005. – 576 с.: ил.
3. Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н. MathLab 7. – СПб.: БХВ-Петербург, 2005. – 1104 с.: ил.
]]>