Реферат Курсовая Конспект
ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА - раздел Математика, ...
|
C.А. СИНЮТИН
ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА
УДК 681.326.3(075)
A - 878
№ 4110
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
ТАГАНРОГСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ЮЖНОГО ФЕДЕРАЛЬНОГО УНИВЕРСИТЕТА
Приоритетный национальный проект «Образование»
Вычислительная математика
Учебное пособие
Для студентов специальности 210106 «Промышленная электроника», 230201 «Информационные системы и технологии», магистров и аспирантов, специализирующихся в области разработки программного обеспечения и цифровой обработки сигналов
РТФ
ВВЕДЕНИЕ
MATLAB - это высокопроизводительный язык для технических расчетов. Он включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Типичное использование MATLAB - это:
• математические вычисления;
• создание алгоритмов;
• моделирование;
• анализ данных, исследования и визуализация;
• научная и инженерная графика;
• разработка приложений, включая создание графического интерфейса.
MATLAB - это интерактивная система, в которой основным элементом данных является массив. Это позволяет решать различные задачи, связанные с техническими вычислениями, особенно в которых используются матрицы и вектора, в несколько раз быстрее, чем при написании программ с использованием «скалярных» языков программирования, таких как Си или Фортран.
Слово MATLAB означает матричная лаборатория (matrix laboratory). MATLAB развивался в течении нескольких лет, ориентируясь на различных пользователей. В университетской среде, он представлял собой стандартный инструмент для работы в различных областях математики, машиностроении и науки. В промышленности, MATLAB - это инструмент для высокопродуктивных исследований, разработок и анализа данных.
В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes - это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.
Основы системы MATLAB
Запуск MATLAB
Чтобы запустить MATLAB на PC, дважды щелкните на иконку MATLAB. Для выхода из MATLAB необходимо набрать quit в строке MATLAB.
Если вам необходимо получить дополнительную информацию, наберите help в строке MATLAB или выберите Helpв меню на PC.
Матрицы в MATLAB
В MATLAB матрица - это прямоугольный массив чисел. Особое значение придается матрицам 1x1, которые являются скалярами, и матрицам, имеющим один столбец или одну строку, - векторам. MATLAB использует различные способы для хранения численных и не численных данных, однако вначале лучше всего рассматривать все данные как матрицы. В то время как другие программные языки работают с числами как элементами языка, MATLAB позволяет вам быстро и легко оперировать с целыми матрицами.
Генерирование матриц
MATLAB имеет четыре функции, которые создают основные матрицы:
zeros все нули;
ones все единицы;
rand равномерное распределение случайных элементов;
randn нормальное распределение случайных элементов.
Некоторые примеры:
Z= zeros(2,4)
Z =
0 0 0 0
0 0 0 0
F = 5*ones(3,3)
F =
5 5 5
5 5 5
5 5 5
R= randn(4,4)
R =
-0.4326 -1.1465 0.3273 -0.5883
-1.6656 1.1909 0.1746 2.1832
0.1253 1.1892 -0.1867 -0.1364
0.2877 -0.0376 0.7258 0.1139
Загрузка матриц
Команда load считывает двоичные файлы, содержащие матрицы, созданные в MATLAB ранее, или текстовые файлы, содержащие численные данные. Текстовые файлы должны быть сформированы в виде прямоугольной таблицы чисел, отделенных пробелами, с равным количеством элементов в каждой строке. Например, создадим вне MATLAB текстовой файл, содержащий 4 строки:
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
Сохраним этот файл под именем magik.dat. Тогда команда load magik.dat прочитает этот файл и создаст переменную magik, содержащую нашу матрицу.
М-файлы
Вы можете создавать свои собственные матрицы, используя М-файлы, которые представляют собой текстовые файлы, содержащие код MATLAB. Просто создайте файл с выражением, которое вы хотите написать в командной строке MATLAB. Сохраните его под именем, заканчивающимся на .m.
Замечание. Для вызова текстового редактора на PC, выберите Open или New из меню File или нажмите соответствующую кнопку на панели инструментов.
Например, создадим файл, включающий следующие 5 строк:
А=[...
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0 ];
Сохраним его под именем magik.m. Тогда выражение magik прочитает файл и создаст переменную А, содержащую исходную матрицу.
Объединение матриц
Объединение - это процесс соединения маленьких матриц для создания больших. Фактически, вы создали вашу первую матрицу объединением её отдельных элементов. Пара квадратных скобок - это оператор объединения. Например, начнем с матрицы А (магического квадрата 4x4) и сформируем В = [А А+32; А+48 А+16]
Результатом будет матрица 8x8, получаемая соединением четырех подматриц
в =
16 2 3 13 48 34 35 45
5 11 10 8 37 43 42 40
9 7 6 12 41 39 38 44
4 14 15 1 36 46 47 33
64 50 51 61 32 18 19 29
53 59 58 56 21 27 26 24
57 55 54 60 25 23 22 28
52 62 63 49 20 30 31 17
Подматрицы и оператор двоеточия
Двоеточие - это один из наиболее важных операторов MATLAB. Он проявляется в различных формах. Выражение 1:10 - это вектор-строка, содержащая целые числа от 1 до 10: 1 2 3 4 5 6 7 8 9 10
Для получения обратного интервала, опишем приращение. Например 100:-7:50 что дает100 93 86 79 72 65 58 51 или 0:pi/4:pi, что приводит к 0 0.7854 1.5708 2.3562 3.1416.
Индексное выражение, включая двоеточие, относится к части матрицы. A(l:k,j) это первые к элементов j-го столбца матрицы А. Так sum(A(1:4,4)) вычисляет сумму четвертой строки.
Двоеточие, само по себе, обращается ко всем элементам в строке или столбце матрицы, а слово end — к последней строке или столбцу. Так sum (А (:, end)) вычисляет сумму элементов в последнем столбце матрицы А ans = 34.
Удаление строк и столбцов
Вы можете удалять строки и столбцы матрицы, используя просто пару квадратных скобок. Рассмотрим X = А. Теперь удалим второй столбец матрицы X. Х(:,2) = []. Эта операция изменит X следующим образом:
х =
16 3 13
5 10 8
9 6 12
4 15 1
Если вы удаляете один элемент матрицы, то результат уже не будет матрицей. Так выражение Х(1,2) = [], результатом вычисления выдаст ошибку. Однако использование одного индекса удаляет отдельный элемент или последовательность элементов и преобразует оставшиеся элементы в вектор-строку. Так Х(2:2:10) = []
выдаст результат:
х =
16 9 3 6 13 12 1
Операции суммирования элементов, транспонирования и диагонализации матрицы
Вы возможно уже знаете, что особые свойства магического квадрата связаны с различными способами суммирования его элементов. Если вы берёте сумму элементов вдоль какой-либо строки или столбца, или вдоль какой-либо из двух главных диагоналей, вы всегда получите одно и тоже число. Давайте проверим это, используя MATLAB. Первое утверждение, которое мы проверим - sum (А) MATLAB выдаст ответ:
ans =
34 34 34 34
Когда выходная переменная не определена, MATLAB использует переменную ans, коротко от answer - ответ, для хранения результатов вычисления. Мы подсчитали вектор-строку, содержащую сумму элементов столбцов матрицы А. Действительно, каждый столбец имеет одинаковую сумму, магическую сумму, равную 34.
Определим суммы строк. MATLAB предпочитает работать со столбцами матрицы, таким образом, лучший способ получить сумму в строках - это транспонировать нашу матрицу, подсчитать сумму в столбцах, а потом транспонировать результат. Операция транспонирования обозначается апострофом или одинарной кавычкой. Она зеркально отображает матрицу относительно главной диагонали и меняет строки на столбцы. Таким образом: A’ вызывает
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
А выражение sum(A') вызывает результат вектор-столбец, содержащий суммы в строках:
ans = 34 34 34 34
Сумму элементов на главной диагонали можно легко получить с помощью функции diag, которая выбирает эту диагональ.
diag(A)
ans = 16 10 7 1
А функция sum (diag (А))вызывает ans = 34.
Другая диагональ, называемая антидиагональю, не так важна математически, поэтому MATLAB не имеет специальной функции для неё. Но функция, которая вначале предполагалась для использования в графике, fliplr, зеркально отображает матрицу слева направо.
sum(diag(fliplr(A)))
ans = 34
Функция magic
MATLAB обладает встроенной функцией, которая создает магический квадрат почти любого размера.
B=magic(4)
В =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Для того чтобы преобразовать В в матрицу А, переставим их местами: А=В(:,[1 3 2 4]).Это означает, что для каждой строки матрицы В элементы переписываются в порядке 1, 3, 2, 4.
А =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Выражения
Как и большинство других языков программирования, MATLAB предоставляет возможность использования математических выражений, но в отличие от многих из них, эти выражения в MATLAB включают матрицы. Основные составляющие выражения:
• переменные;
• числа;
• операторы;
• функции.
Переменные
В MATLAB нет необходимости в определении типа переменных или размерности. Когда MATLAB встречает новое имя переменной, он автоматически создает переменную и выделяет соответствующий объем памяти. Если переменная уже существует, MATLAB изменяет ее состав и если это необходимо выделяет дополнительную память. Например, num_students = 25 создает матрицу 1x1 с именем num_students и сохраняет значение 25 в ее единственном элементе.
Имена переменных состоят из букв, цифр или символов подчеркивания. MATLAB использует только первые 31 символ имени переменной. MATLAB чувствителен к регистрам, он различает заглавные и строчные буквы. Поэтому А и а - не одна и та же переменная. Чтобы увидеть матрицу связанную с переменной, просто введите название переменной.
Числа
MATLAB использует принятую десятичную систему счисления, с необязательной десятичной точкой и знаками плюс-минус для чисел. Научная система счисления использует букву е для определения множителя степени десяти. Мнимые числа используют i или j как суффикс. Некоторые примеры правильных чисел приведены ниже:
3 -99 0.0001
9.6397238 1.60210е-20 6.02252е23
1i -3.14159J 3e5i
Все числа для хранения используют формат long, определенный стандартом плавающей точки ШЕЕ. Числа с плавающей точкой обладают ограниченной точностью - приблизительно 16 значащих цифр и ограниченным диапазоном -приблизительно от 10~308 до 10308 (Компьютер VAX использует другой формат чисел с плавающей точкой, но их точность и диапазон приблизительно те же).
Операторы
Выражения используют обычные арифметические операции и правила старшинства:
· + сложение;
· - вычитание;
· умножение;
· / деление;
· \ левое деление;
· ^ степень;
· ' транспонирование;
· () определение порядка вычисления.
Арифметические операции над массивами производятся поэлементно. Это означает, что суммирование и вычитание являются одинаковыми операциями для матриц и массивов, а умножение для них различно. MATLAB использует точку, как часть записи для явного задания поэлементной операции умножения и деления.
Список операторов включает в себя:
+ суммирование;
- вычитание;
.* поэлементное умножение;
./ поэлементное деление;
.\ поэлементное левое деление;
.^ поэлементное возведение в степень;
.' несопряженное матричное транспонирование.
Если магический квадрат умножить на себя по правилам умножения массивов А.*Арезультатом будет массив, содержащий квадраты целых чисел от 1 до 16 в необычном порядке.
ans =
256 9 4 169
25 100 121 64
81 36 49 144
16 225 196 1
Операции над массивами полезны для создания таблиц. Пусть n - это вектор-столбец n = (0:9)'; тогда pows = [n n.^2 2.^n] создает таблицу квадратов и степеней двойки:
pows =
0 0 1
1 12
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512
Элементарные математические функции работают с массивами поэлементно. Так:
format short g, х = (1:0.1:2), logs = [x log10(x)] создает таблицу логарифмов
logs =
1 0
1.1 0.041393
1.2 0.079181
1.3 0.11394
1.4 0.14613
1.5 0.17609
1.6 0.20412
1.7 0.23045
1.8 0.25527
1.9 0.27875
2 0.30103
Операции со скалярами
Матрицы и скаляры могут комбинироваться различными путями. Например, скаляр вычитается из матрицы путем вычитания из каждого элемента. Среднее значение элементов для нашего магического квадрата равно 8.5, поэтому в = а - 8.5формирует матрицу, у которой суммы в столбцах равны нулю.
в =
7.5 -5.5 -6.5 4.5
-3.5 1.5 2.5 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5
sum(В)
ans =
0 0 0 0
Используя скалярное расширение, MATLAB записывает заданный скаляр во все элементы матрицы, заданные индексным диапазоном. Например, В(1:2,2:3)=0 обнуляет часть матрицы В.
в =
7.5 0 0 4.5
-3.5 0 0 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5
Выражения
Вы уже познакомились с некоторыми примерами использования выражений в MATLAB. Ниже приведено еще несколько примеров с результатами.
rho = (1+sqrt(5))/2
rho =
1.6180
а = abs(3+4i)
а =
z = sqrt(besselk(4/3,rho-i))
z =
0.3730 + 0.3214i
huge = exp(log(realmax))
huge = 1.7977e+308
toobig = pi*huge
toobig = Inf
Работа в системе MATLAB
Командное окно
До сих пор, мы использовали только командную строку MATLAB, печатая команды и выражения и наблюдая результаты. В этой главе описано несколько способов изменения внешнего вида командного окна. Если ваша система позволяет вам выбирать шрифт, то мы рекомендуем использовать шрифты с фиксированной шириной, такие как Courier, для обеспечения правильного межстрочного интервала.
Команда format
Команда format управляет численным форматом значений, выводимых MATLAB. Эта операция влияет только на то, как числа изображаются на экране, но не влияет на то, как их вычисляет и сохраняет MATLAB. Ниже представлены различные форматы чисел, используемые для отображения вектора х с компонентами различных величин.
х = [4/3 1.2345е-б]
Format short
1.3333 0.0000
Format short e
1.3333e+000 1.2345e-006
Format short g
1.3333 1.2345e-006
Format long
1.33333333333333 0.00000123450000
Format long e
1.333333333333333e+0 0 0 1.234500000000000e-006
Format long g
1.33333333333333 1.2345e-006
Format bank
1.33 0.00
Format rat
4/3 1/810045
Format hex
3ff5555555555555 3eb4b62 31abfd2 71
Если самый большой элемент матрицы больше 103 или самый маленький меньше 10~3, MATLAB применяет общий масштабный коэффициент для форматов short и long. В добавление к командам format, рассмотренным выше format compact убирает много пустых линий, появляющихся на выходе. Это позволяет вам видеть больше информации на экране. Если вы хотите изменить контроль над форматом выходных данных, используйте функции sprint/ и fprintf.
Сокращение выходных данных
Если вы наберете выражение и нажмете Returnили Enter,MATLAB автоматически выведет результат на экран. Однако если в конце строки вы поставите точку с запятой, MATLAB проведет вычисления, но не отобразит их. Это часто бывает нужно при создании больших матриц. Например, A = magic(100).
Длинные командные строки
Если выражение не умещается на одной строке, используйте троеточие, а за ним Enter,для обозначения того, что выражение продолжается на следующей строке. Например:
s = 1 -1/2 + 1/3 -1/4 + 1/5 - 1/6 + 1/7
-1/8 + 1/9 - 1/10 + 1/11 - 1/12;
Пробелы вокруг знаков =, +, - не обязательны, но улучшают читаемость текста.
Окна изображений
Функция plot автоматически открывает новое окно изображения (далее окно), если до этого его не было на экране. Если же оно существует, то plot использует его по умолчанию. Для открытия нового окна и выбора его по умолчанию, наберите figure. Для того, чтобы сделать существующее окно текущим -figure(n) где n - это номер в заголовке окна. В этом случае результаты всех последующих команд будут выводиться в это окно.
Добавление кривых на существующий график
Команда hold позволяет добавлять кривые на существующий график. Когда вы набираете hold on MATLAB не стирает существующий график, а добавляет в него новые данные, изменяя оси, если это необходимо. Например, следующий элемент кода вначале создает контурные линии функции peaks, а затем накладывает псевдоцветной график той же функции:
[x,y,z] = peaks; contour(x,у,z,20,'k') hold on pcolor(x,y,z) shading interp.
Команда hold on является причиной того, что график pcolor комбинируется с графиком contour в одном окне.
Подграфики
Функция subplot позволяет выводить множество графиков в одном окне или распечатывать их на одном листе бумаги, subplot(m,n,p) разбивает окно изображений на матрицу m на п подграфиков и выбирает р-ый подграфик текущим. Графики нумеруются вдоль первого в верхней строке, потом во второй и т.д. Например, для того, чтобы представить графические данные в четырех разных подобластях окна необходимо выполнить следующее:
t = 0:pi/10:2*pi; [X,Y,Z] = cylinder(4*cos(t)); subplot(2,2,1) mesh(X)
subplot(2,2,2); mesh(Y) subplot(2,2,3); mesh(Z) subplot(2,2,4); mesh(X,Y,Z)
Мнимые и комплексные данные
Если аргумент функции plot комплексное число, то мнимая часть игнорируется, за исключением случая, когда комплексный аргумент один. Для этого специального случая происходит построение графика зависимости реальной части аргумента от мнимой (рис. 2.3.). Поэтому:
plot(Z) где Z комплексный вектор или матрица, эквивалентно
plot(real(Z) ,imag(Z)) Например, t= 0:pi/10:2*pi; plot(exp(i*t),'-o') отобразит двадцатисторонний многоугольник с маленькими кружками на вершинах.
Рис. 2.3. - График зависимости реальной части аргумента от мнимой
Подписи к осям и заголовки
Функции xlabel, ylabel, zlabel добавляют подписи к соответствующим осям, функция title (рис. 2.4) добавляет заголовок в верхнюю часть окна, а функция text вставляет текст в любое место графика. Использование ТЕХ представления позволяет применять греческие буквы, математические символы и различные шрифты. Следующий пример демонстрирует эту возможность.
t = -pi:pi/100:pi;
у = sin(t) ;
plot(t,у)
axis([-pi pi -1 1])
xlabel( ' -\pi \leq \itt \leq \pi ' )
ylabel( ' sin(t) ' )
title( ' График функции sin ' )
text(-l, -1/3, ' \it{OTMeTbTe нечетную симметрию} ' ).
Рис. 2.4. - подписи к соответствующим осям, функция title
Функции mesh и surface
MATLAB определяет поверхность как z координаты точек над координатной сеткой плоскости х-у, используя прямые линии для соединения соседних точек. Функции mesh и surface отображают поверхность в трех измерениях. При этом mesh создает каркасную поверхность, где цветные линии соединяют только заданные точки, а функция surface вместе с линиями отображает в цвете и саму поверхность.
Визуализация функций двух переменных
Для отображения функции двух переменных, z = f (x,y), создаются матрицы X и Y, состоящие из повторяющихся строк и столбцов соответственно, перед использованием функции. Затем используют эти матрицы для вычисления и отображения функции. Функция meshgrid преобразует область определения, заданную через один вектор или два вектора х и у, в матрицы X и Y для использования при вычислении функции двух переменных. Строки матрицы X дублируют вектор х, а столбцы Y - вектор у.
Для вычисления двумерной функции sine , sin(r)/r, в области х-у поступают следующим образом: [X, Y] = meshgrid(-8:.5:8); R = sqrt(X.A2+Y.A2)+eps; Z = sin(R)./R; mesh(X,Y,Z).
В этом примере R - это расстояние от начала координат, которому соответствует центр матрицы. Добавление eps позволяет избежать неопределенности 0/0 в начале координат.
Изображения
Двумерные массивы могут отображать как изображения, где элементы массива определяют их яркость и цвет. Например: load durer whos покажет, что файл durer.mat в директории demo состоит из матрицы размером 648 на 509 (матрицы X) и матрицы размером 128 на 3 (матрицы тар). Элементы матрицы X - это целые числа от 1 до 128, которые служат индикаторами в цветном отображении, тар.
Справка и текущая документация
Есть несколько способов получить текущую документацию по функциям MATLAB:
• команда help;
• окно справки;
• MATLAB Help Desk;
• текущие справочные страницы;
• связь с The MathWorks, Inc.
Окно справки
Окно справки MATLAB появляется на PC или Мае после выбора опции Help Windowв меню Helpили нажатием кнопки вопроса на панели инструментов. Эта же операция может быть выполнена при наборе команды helpwin.
Для вывода окна справки по отдельным разделам, наберите helpwin topic.
Окно справки предоставляет вам такую же информацию, как и команда help, но оконный интерфейс обеспечивает более удобную связь с другими разделами справки.
Среда MATLAB
Среда MATLAB включает в себя как совокупность переменных, созданных за время сеанса работы MATLAB, так и набор файлов, содержащих программы и данные, которые продолжают существовать между сеансами работы.
Рабочее пространство
Рабочее пространство - это область памяти, доступная из командной строки MATLAB. Две команды, who и whos, показывают текущее содержание рабочего пространства. Команда who выдает краткий список, а команда whos размер и используемую память.
Для удаления всех существующих переменных из рабочего пространства MATLAB, введите clear.
Команда save
Команда save сохраняет содержание рабочего пространства в МАТ-файле, который может быть прочитан командой load в последующих сеансах работы MATLAB. Например, save August17th сохраняет содержание всего рабочего пространства в файле Augustl7th.mat. Если нужно, вы можете сохранить только определенные переменные, указывая их имена после имени файла.
Маршрут поиска
MATLAB использует маршрут поиска, упорядоченный список директорий, для того, чтобы определить как выполнять функции, которые вы вызываете. Когда вы вызываете стандартную функцию, MATLAB исполняет первый М-файл на своем пути, который имеет заданное имя. Вы можете заменить поведение использованием специальных директорий и поддиректорий.
Команда path
Команда path показывает маршрут поиска на всех платформах. На Рс выберите опцию Set Pathиз меню Fileдля просмотра и изменения маршрута.
Операции над дисковыми файлами
Команды dir, type, delete и cd осуществляют комплекс групповых операционных системных команд для манипуляций над файлами. Нижеприведенная таблица показывает, как эти команды соответствуют различным операционным системам (табл. 2.1).
Таблица 2.1. Комплекс групповых операционных системных команд для манипуляций над файлами
MATLAB | MS-DOS | UNIX | VAX/VMS |
dir | dir | ls | dir |
type | type | cat | type |
delete | del, erase | rm | delete |
cd | chdir | cd | set defalt |
Для большинства из этих команд вы можете использовать полные пути, шаблоны и указатели дисков в обычной форме.
Управление вычислениями
MATLAB имеет пять видов структур управления вычислениями:
• оператор if;
• оператор switch;
• циклы for;
• циклы while;
• оператор break.
Оператор if
Оператор if вычисляет логическое выражение и выполняет группу операторов, если выражение истинно. Необязательные ключевые слова elseif и else служат для выполнения альтернативных групп операторов. Ключевое слово end, которое согласуется с if завершает последнюю группу операторов. Таким образом, все группы операторов заключены между четырех ключевых слов, без использования фигурных или обычных скобок.
Операторы switch и case
Оператор switch выполняет группу операторов, базируясь на значении переменной или выражения. Ключевые слова case и otherwise разделяют эти группы. Выполняется только первый соответствующий случай. Необходимо использовать end для согласования с switch.
Замечание для программистов Си. В отличие от языка Си, оператор switch в MATLAB не «проваливается». Если первый случай является истинным, другие случаи не выполняются. Таким образом, нет необходимости в использовании оператора break.
Цикл for
Цикл for повторяет группу операторов фиксированное, предопределенное число раз. Ключевое слово end очерчивает тело цикла.
for n = 3:32
r(n) = rank(magic(n)); end г
Точка с запятой после выражения в теле цикла предотвращает повторения вывода результатов на экран, а после цикла выводит окончательный результат. Хорошим стилем являются отступы при использовании циклов для лучшей читаемости, особенно, когда они вложенные.
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j);
end
end
Цикл while
Цикл while повторяет группу операторов определенное число раз, пока выполняется логическое условие. Ключевое слово end очерчивает используемые операторы. Ниже приведена полная программа, иллюстрирующая работу операторов while, if, else и end, которая использует метод деления отрезка пополам для нахождения нулей полинома.
а = 0; fa = -Inf; b = 3; fb = Inf; while b-a > eps*b
x = (a+b)/2;
fx = xA3-2*x-5;
if sign(fx) == sign(fa) a = x; fa = fx;
else
b = x; fb = fx;
end end x
Результатом будет корень полинома х3-2х-5
х = 2.09455148154233
Для оператора while верны те же предостережения относительно матричного сравнения, что и для оператора if, которые обсуждались ранее.
Оператор break
Оператор break позволяет досрочно выходить из циклов for или while. Во вложенных циклах break осуществляет выход только из самого внутреннего цикла.
Глобальные переменные
Если вы хотите, чтобы более одной функции использовали отдельную копию переменной, просто объявите её как global во всех функциях. Делайте то же самое в командной строке, если вы хотите, чтобы основное рабочее пространство получило доступ к переменной. Определение global должно быть до самой переменной, используемой в функции. Хотя это не обязательно, использование больших букв для имени глобальной переменной поможет отличить их от других переменных. Например, создадим М-файл falling.m:
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.A2;
Затем введем следующие строки
global GRAVITY GRAVITY = 32;
y =
Таким образом, строки определения GRAVITY в командной строке делают её доступной внутри функции. Вы можете после изменить GRAVITY и получить новое решение, не редактируя какие-либо файлы.
Решение нелинейных уравнений
Пусть рассматривается уравнение . Корнем уравнения называется значение , при котором . Корень называется простым, если , в противном случае корень называется кратным. Целое число m называется кратностью корня , если для k=1,2,3-,m-1 и .
Постановка задачи
Вычислить приближенное значение корня с точностью - это найти такое значения , что . Решение задачи разбивается на два этапа: на первом этапе осуществляют локализацию корней, на втором этапе производят итерационное уточнение корней. На этапе локализации корней находят достаточно узкие отрезки (или отрезок, если корень единственный), которые содержат один и только один корень уравнения . На втором этапе вычисляют приближенное значение корня с заданной точностью. Часто вместо отрезка локализации достаточно указать начальное приближение к корню.
Задание для самостоятельной работы
1. Даны 2 вектора x1 = (-3, 2.4, 5.5) и x2 = (-3.1, 2.4, 5.4), являющиеся приближениями к вектору x = (-3, 2, 5). Какой из векторов является более точным приближением к вектору x?
2. Найти относительное число обусловленности матрицы A = .
3. Подсчитать количество арифметических действий в методе Гаусса.
4. Найти LU-разложение матрицы.
Вопросы
1. Сформулируйте определение нормы вектора и запишите формулы для нахождения нормы.
2. Дайте определение нормы матрицы. Какие Вы знаете свойства нормы матрицы?
3. Дайте определение относительного числа обусловленности матрицы. Что такое плохо обусловленная система уравнений?
4. Сформулируйте алгоритм метода Гаусса и запишите формулы для преобразования элементов матрицы на к-ом шаге прямого хода метода.
5. Что такое LU - разложение матрицы?
Решение систем линейных алгебраических уравнений прямыми методами
Метод решения задачи называют прямым, если он позволяет получить решение после выполнения конечного числа элементарных операций. Метод решения задачи называют итерационным, если в результате получают бесконечную последовательность приближений к решению. Если эта последовательность сходится к решению задачи, то говорят, что итерационный процесс сходится. К прямым методам решения относятся метод Гаусса и его модификации, метод Холецкого и метод прогонки.
В методе Гаусса для вычисления масштабирующих множителей требуется делить на ведущие элементы каждого шага. Если элемент равен нулю или близок к нулю, то возможен неконтролируемый рост погрешности.
Поэтому часто применяют модификации метода Гаусса, обладающие лучшими вычислительными свойствами.
Задание для самостоятельной работы
1. Методом Гаусса с выбором главного элемента найти решение системы уравнений:
.
2. Найти разложение матрицы:
.
3. Можно ли применять метод Холецкого к системе уравнений, матрица которой имеет вид:
.
4. Подсчитать количество арифметических действий в методе прогонки.
Вопросы
1. Что такое прямые и итерационные методы.
2. С какой целью применяют модификацию метода Гаусса - схему частичного выбора.
3. Для каких систем уравнений применяют метод Холецкого.
4. Запишите формулы для нахождения решения после приведения системы к виду.
5. Сформулируйте алгоритм метода прогонки.
Решение систем линейных алгебраических уравнений итерационными методами
Рассматривается система Ax = b. Для применения итерационных методов система должна быть приведена к эквивалентному виду x=Bx+d. Затем выбирается начальное приближение к решению системы уравнений и находится последовательность приближений к корню. Для сходимости итерационного процесса достаточно, чтобы было выполнено условие
.
Критерий окончания итераций зависит от применяемого итерационного метода.
Задание для самостоятельной работы
1. Убедиться в том, что если A- нижняя треугольная матрица с ненулевыми диагональными элементами, то метод Зейделя сходится за одну итерацию.
2. Пусть A - верхняя треугольная матрица с ненулевыми диагональными элементами. Доказать, что метод Зейделя сходится за конечное число итераций и указать, за какое именно.
3. Вывести оценку числа итераций, требуемых для достижения заданной точности в методе Якоби.
Вопросы
1. Сформулируйте достаточное условие сходимости методов Якоби и метода Зейделя.
2. Сформулируйте критерий окончания итераций в методе Якоби.
3. Сформулируйте условия сходимости метода простой итерации и метода Зейделя для случая симметрических положительно определенных матриц.
4. Из каких условий выбирается итерационный параметр в методе простой итерации.
5. Сформулируйте алгоритм нахождения оптимального итерационного параметра в методе простой итерации.
Приближение функций
На практике часто возникает необходимость найти функциональную зависимость между величинами x и y, которые получены в результате эксперимента. Часто вид эмпирической зависимости известен, но числовые параметры неизвестны.
Ниже рассматривается решение задачи приближения многочленами таблично заданной функции по методу наименьших квадратов и по методу интерполяции.
Интерполяция функций
Численное дифференцирование
Производная функции есть предел отношения приращения функции к приращению независимой переменной при стремлении к нулю приращения независимой переменной:
.
При численном нахождении производной заменим отношение бесконечно малых приращений функций и аргумента отношением конечных разностей. Очевидно, что чем меньше будет приращение аргумента, тем точнее численное значение производной.
Решение задачи Коши одношаговыми методами
Варианты заданий
Таблица режимов:
№ | Режим |
Свободные незатухающие колебания | |
Затухающее колебательное движение | |
Апериодическое движение | |
Предельное апериодическое движение | |
Вынужденное колебание без сопротивления | |
Вынужденное колебание без сопротивления, явление резонанса | |
Вынужденное колебание с линейным сопротивлением | |
Вынужденное колебание с линейным сопротивлением, явление резонанса |
Варианты заданий и номера режимов:
1. движение точк;
2. RLC – цепь.
Вар. | Задание | Вар. | Задание |
а) 1,2,5 | б)1,2,6 | ||
а) 1,3,6 | а) 1,4,7 | ||
б)1,3,7 | б)1,2,7 | ||
а) 1,4,8 | а) 1,2,5 | ||
б)1,2,8 | б)1,4,6 | ||
а) 1,4,7 | а) 1,3,5 | ||
б)1,3,6 | б)1,3,8 | ||
а) 1,4,5 | б)1,4,5 | ||
б)1,3,8 | а) 1,3,6 | ||
а) 1,3,5 | б)1,4,7 | ||
б)1,4,6 | а) 1,2,8 | ||
а) 1,2,7 | б)1,4,8 | ||
б)1,2,5 | а) 1,3,6 | ||
а) 1,2,6 | б)1,3,7 | ||
б)1,4,7 | а) 1,2,5 |
Рассмотрим более подробно порядок составления дифференциальных уравнений и приведения их к машинному виду для описания движения тела на пружине и RLC-цепи.
a. Движение материальной точки на пружине.
При выполнении этого задания необходимо рассмотреть движение материальной точки массой m на пружине (рис. 14.1) жесткостью c в среде с линейным сопротивлением под действием синусоидальной вынуждающей силы по горизонтальной поверхности.
Рис. 14.1 - движение материальной точки на пружине
Уравнение движения (второй закон Ньютона) для материальной точки с учетом действия сил линейного сопротивления (-βx'), упругости пружины (-cx) и синусоидальной силы F0∙sin(pt) может быть записано следующим образом:
,
где m=1+int(n/2) - масса материальной точки, β - коэффициент сопротивления, с=2+int(n/3) - жесткость пружины, х - координата (х=0 в положении равновесия точки), t - время, p - частота вынужденных колебаний, F0=n - амплитуда силы, n - номер варианта, int - целая часть числа. Параметры β, p и начальные условия выбираются самостоятельно с учетом рассматриваемого режима.
b. Колебательный контур (RLC цепь) (рис. 14.2):
Рис. 14.2. - колебательный контур (RLC цепь)
Уравнение падения напряжения в цепи переменного тока имеет вид
,
где L=1+int(n/2) - индуктивность, R - сопротивление, C=2+int(n/3) - емкость конденсатора, q - заряд, U0=n-амплитуда напряжения, p - частота, - сила тока. Параметры R, p и начальные условия выбираются самостоятельно с учетом рассматриваемого режима.
Преобразование Фурье
РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В ЧАСТНЫХ ПРОИЗВОДНЫХ
При решении задач с дифференциальными уравнениями в частных производных используется метод сеток, который заключается в следующем. На область решения накладывается некоторая сетка и путем замены производных в дифференциальном уравнении и в краевых условиях конечными разностями различного вида, получают соотношения связывающие значения искомой функции в узлах сетки. Полученная таким образом система уравнений решается каким-либо численным методом. Рассмотрим этот подход подробнее применительно к некоторым уравнениям математической физики.
РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В ЧАСТНЫХ ПРОИЗВОДНЫХ (продолжение)
Синютин СЕРГЕЙ Алексеевич
Учебное пособие
Вычислительная математика
Ответственный за выпуск Синютин С.А.
Редактор
Корректор
ЛР №020565 от 23 июня 1997г. Подписано к печати
Формат 60х84 1/16. Бумага офсетная
Офсетная печать. Ус.п.л. - . Уч.-изд.л. - .
Заказ № Тираж экз.
“C”
Издательство Технологического института Южного федерального университета
ГСП 17А, Таганрог, 28, Некрасовский, 44
Типография Технологического института Южного федерального университета
ГСП 17А, Таганрог, 28, Энгельса, 1
– Конец работы –
Используемые теги: вычислительная, математика0.054
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов