- •Министерство сельского хозяйства рф
- •Оглавление
- •Введение
- •Лабораторная работа №1 Знакомство с системой. Работа с векторами и матрицами.
- •1.Работа с числами и константами.
- •2.Работа с векторами и матрицами.
- •3.Форматы выдачи на экран.
- •Лабораторная работа №2
- •Лабораторная работа №3 Графический способ решения уравнений. Минимум функции. Интегрирование.
- •1.Решение уравнений.
- •2. Интегрирование.
- •Лабораторная работа №4 Работа с полиномами. Интерполирование.
- •1.Работа с полиномами.
- •2.Приближение по методу наименьших квадратов.
- •3.Интерполяция сплайнами.
- •Лабораторная работа №5 Работа с текстовыми файлами. Работа со структурами.
- •1. Открытие файла, считывание данных и закрытие файла.
- •2.Запись в текстовый файл.
- •Лабораторная работа №6 Создание приложений в среде guide. Часть 1.
- •1.Создание простого приложения.
- •2.Программное изменение свойств.
- •3.Программирование элементов интерфейса. Флаги и рамки.
- •Лабораторная работа №7 Создание приложений в среде guide. Часть 2.
- •4.Переключатели.
- •5.Списки.
- •6.Полосы скроллинга.
- •Библиографический список
2. Интегрирование.
Вычислим площадь S этой области:
S=h^2*sum(f(:)>=0) (S=0.7296).
Для h=0.01 получим S=0.7204, а для h=0.005 найдем S=0.7152. При интегрировании всегда естественно делать такие проверки.
Выясним, какой объем заключен между поверхностью f(x,y) и областью G, где f(x,y)>=0. Для этого снова возьмем в строке 1 h=0.02 и вычислим
V=h^2*sum(f(f>=0)) (V=0.1268)
Для h=0.01 V=0.1235, а для h=0.005 V=0.1219. Теперь не нужно писать f(:), поскольку f(f>=0) есть вектор.
Конечно, эти результаты приближенные (с точностью до 1—2%), но отметьте, как быстро и просто они были получены. Такие приемы можно применять для решения достаточно широкого круга задач. Выполним строку
C=contour(x,x,f); clabel(C),
которая запишет числовую информацию о графике в матрицу С и построит график, выбрав значения уровней автоматически. Из матрицы С можно последовательно выбирать все кривые.
Для вычисления интеграла функции y=exp(-x)*sin(x) на промежутке [-1,1] используем функцию quad.
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
Задание 1. Постройте с помощью команды contour график эллипса х2/а2+у2/Ь2=1 и затем найдите его площадь, используя функцию quad. Сравните ее с точным значением pi*a*b.
Задание 2. Выполните строки х=0:.01:1; for k=l:4, subplot(2,2,k), plot(x,sin(pi*k*x)), end subplot(l,l,l)
и затем прочтите в help описание команды subplot.
Задание 3. Найдите корни уравнения sin x+cos 3x =0 на промежутке [0, pi].
Задание 4. Найдите локальные минимумы функции y=exp(-x)*sin(3*pi*x) на промежутке [0,2].
Задание 5. Постройте график зависимости интеграла от верхнего предела.
Задание 6. Прочтите в Help о возможностях вычисления двойных интегралов с помощью команды dblquad.
Лабораторная работа №4 Работа с полиномами. Интерполирование.
Цель работы: усвоить функции для работы с полиномами, особенности использования специальных функции для интерполяции.
1.Работа с полиномами.
По степени применимости, по разнообразию и качеству соответствующих команд скалярные полиномы - следующие за матрицами математические объекты в MATLAB.
Основные команды для действий с полиномами таковы:
conv(p,q) - произведение полиномов р и q. Название команды происходит от слова convolution (свертка), поскольку коэффициенты произведения действительно получаются как компоненты свертки векторов р и q.
[q,r]=deconv(b,a) - частное (q) и остаток (г) от деления b на а, так что conv(a,q)+r=b.
residue(b,a) - разложение рациональной функции b(х)/а(х) на элементарные дроби над полем комплексных чисел с выделением целой части. Если а(х) имеет кратные или близкие друг к другу корни, результаты могут быть неверными, поскольку такая задача плохо обусловлена. Плохая обусловленность, т.е. крайне сильная зависимость результата от коэффициентов, иллюстрируется заключительным примером из этой темы.
p=poly(r) - построение полинома по корням, заданным в векторе-столбце г. Для квадратной матрицы r полином р будет ее характеристическим многочленом.
polyval(p,x) - поэлементное вычисление значений полинома р на множестве х, где х может быть как вектором, так и матрицей. Размеры результата совпадают с size(x).
polyder(p) - производная от р.
roots(p) - вектор-столбец, содержащий все корни полинома. Их порядок не определен.
Приведем несколько примеров по применению этих команд.
1. Построим график полинома р(х)=х3-х+2 на отрезке -1<=х<=1.
Это выглядит так:
р=[1,0,-1,2]; х=-1:.01:1; f=polyval(p,x); plot(x,f), grid
Полином не имеет корней на заданном отрезке. Это подтверждает и команда roots(p) которая даст ans = -1.5214 0.7607 - 0.8579i 0.7607 + 0.8579i.
2. Разделим предыдущий полином на х-3: [q,r]=deconv(p,[l,-3])
Тогда
q= 13 8, r = 00026.
Другими словами, частное q(x)=x2+3x+8, а остаток г=26.
3. Разложим функцию (х-3)/р(х) на элементарные дроби:
[r,s,k]=residue([l,-3],p); г', s', k'
Для r' получим вектор из трех компонент r1, r2, r3:
-0.7607 0.3803 - 0.4289i 0.3803 + 0.4289i,
для s' - также вектор из трех компонент s1, s2, s3:
-1.5214 0.7607 - 0.8579i 0.7607 + 0.8579i
и k=[] (это означает, что целой части в разложении нет - действительно, у числителя первая, а у знаменателя третья степени). Компоненты векторов г и s означают, что
(x-3)/p(x)=sum(ri/(x-si), i=1:3.
Команда residue работает и в обратную сторону:
[q,p]=residue(r,s,k)
восстановит исходные числитель и знаменатель:
q = О 1 -3 (он получился точно),
р = 1.0000 -0.0000 -1.0000 2.0000 (здесь уже сказались ошибки округления и старший коэффициент не равен 1 автоматически).