Реферат: Программирование в MATLAB

Кафедра: Информационныетехнологии

ПРОГРАММИРОВАНИЕ В MATLAB


Операторы MATLAB

 

·         Операторыцикла

Цикл for

Синтаксис

forcount=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];

fora = -0.1:0.02:0.1

y= exp (-a*x).*sin(x);

holdon

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

команды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 осуществляет выход из внутреннего цикла.

Обработкаисключительных ситуаций, оператор trycatch

Синтаксис

try

операторы,выполнение которых

можетпривести к ошибке

catch

операторы,которые следует выполнить

привозникновении ошибки в блоке

между try и catch

end

Описание

Конструкция try…catch позволяет обойтиисключительные ситуации (ошибки, приводящие к окончанию работы программы, например,обращение к несуществующему файлу) и предпринять некоторые действия в случае ихвозникновения.

Пример

Сервисныефункции

dispосуществляет вывод текстаили значения переменной в командное окно

input– осуществляет запрос наввод с клавиатуры. Используется при создании приложений с интерфейсом изкомандной строки.

evalвыполняет содержимоестроки или строковой переменной, как команды MATLAB

clear– удаляет переменныерабочей среды.

сlc– производит очисткукомандного окна

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

helpимя_функции


Задания навыполнение лабораторной работы

 

Номерконкретного варианта задания определяется преподавателем.

 

Задание №1

Данноезадание подразумевает нахождение для некоторой совокупности данныхалгебраического интерполяционного многочлена степени n: Pn(x).

Цельработы:

Необходимосоставить программу вычисления коэффициентов алгебраического интерполяционногомногочлена Pn(x)=a+a1x+ … +anxn.

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

Пусть,например, имеется следующая совокупность данных:

i

1 2 3

хi

1,2 1,4 1,6 1,8

yi

8,3893 8,6251 8,9286 8,9703

Коэффициенты a, a1, …, an определяются из решениясистемы уравнений:

/>

Здесь n– порядокинтерполяционного многочлена,

n+1 – количество заданных парточек (x, y),

a, a1,… an– искомые коэффициентымногочлена Pn(x)=a+a1x+ … +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

Аппроксимацияфункции методом наименьших квадратов (МНК).

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

Цельработы:

Необходимосоставить программу нахождения коэффициентов многочлена φ(x)=a+a1*x+… an<sub/>*<sub/>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

Поискнеобходимых коэффициентов осуществляется следующим образом:

/>

где    n– количество точек (x, y),

m – степень искомого многочлена,

a, a1, …, am – искомые коэффициенты (φ(x)=a+a1x+ … +amxm).

Требованияк программе

Привыполнении данной работы необходимо:

·         Задатьграницы отрезка [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 с.: ил.

еще рефераты
Еще работы по информатике, программированию