Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab BSU.doc
Скачиваний:
11
Добавлен:
08.09.2019
Размер:
1.04 Mб
Скачать

Диалоговый ввод.

Диалоговый ввод можно организовать с помощью команды input, имеющей формат:

user_entry = input('prompt', 's')

При выполнении этой команды на экран выводится запрос prompt в виде строки, затем происходит остановка работы и ожидание ввода с клавиатуры. Необязательный параметр s указывает, что введенный текст является строкой, а не числом. Примеры:

i = input('Введите значение. i=');

i = input('Do you want more? Y/N [Y]: ', 's');

Пауза.

Для организации паузы в ходе выполнения программы служит команда pause. Выполнение программы будет продолжаться после нажатия любой клавиши. Для организации паузы в n секунд, следует использовать команду pause(n).

Численные методы и обработка данных

Система MATLAB имеет функции, предназначенные для реализации алгоритмов типовых численных методов решения прикладных задач и обработки данных.

Решение систем линейных алгебраических уравнений.

Система линейных уравнений обычно решается с помощью операторов правого ‘/’ и левого ‘\’ деления:

  • выражение X=B/A дает решение ряда систем линейных уравнений AX=B, где A – матрица размером mxn и B – матрица размером nxk;

  • выражение X=B\A дает решение ряда систем линейных уравнений XA=B, где A – матрица размером mxn и B – матрица размером nxk;

В дальнейших примерах будем использовать две матрицы A и B размером 3x3:

матрицу Паскаля –

A = pascal(3)

A =

1 1 1

1 2 3

1 3 6

и магическую матрицу –

B = magic(3)

B =

8 1 6

3 5 7

4 9 2

а также два вектора: вектор-столбец u = [3; 1; 4] и вектор-строку v = [2 0 -1].

Обычно система уравнений имеет квадратную матрицу A и единственный вектор-столбец правой части b. Вектор решения x = A\b имеет тот же размер, что и вектор b. Например,

x = A\u

x =

10

-12

5

Проверка подтверждает, что произведение A*x равняется вектору u.

Если матрицы A и B являются квадратными и имеют одинаковый размер, то решение является квадратной матрицей такого же размера:

X = A\B

X =

19 -3 -1

-17 4 13

6 0 -6

В рассмотренных примерах найденное решение совпадает с точным, поскольку определитель матрицы A равен единице, а ее элементы являются целыми числами.

Квадратная матрица A называется сингулярной, если ее столбцы являются линейно зависимыми. Решение системы уравнений с сингулярной матрицей либо не существует, либо является неединственным. Попытка решить систему с сингулярной матрицей приведет к сообщению об ошибке. Если же матрица системы близка к сингулярной, то MATLAB сгенерирует соответствующее предупреждение.

Переопределенные системы уравнений часто возникают в задачах приближения табличной функции, значения которой получены в ходе физических или численных экспериментов. Рассмотрим пример. Пусть значения функции y известны в моменты времени t и задаются таблицей:

y

0.82

0.72

0.63

0.6

0.55

0.5

t

0.0

0.3

0.8

1.1

1.6

2.3

Эти данные можно ввести с помощью операторов:

t = [0 .3 .8 1.1 1.6 2.3]'; y = [.82 .72 .63 .60 .55 .50]';

Будем искать приближение табличной функции в виде . Из этой формулы следует, что вектор y разыскивается в виде линейной комбинации вектора с единичными компонентами и вектора с компонентами exp(-t). Неизвестные коэффициенты и находятся по методу наименьших квадратов на основе минимизации второй нормы векторов невязок. Построим матрицу системы и найдем вектор решения:

E = [ones(size(t)) exp(-t)]

E =

1.0000 1.0000

1.0000 0.7408

1.0000 0.4493

1.0000 0.3329

1.0000 0.2019

1.0000 0.1003

c = E\y

c =

0.4760

0.3413

Таким образом, аппроксимирующая функция имеет вид: .

Нарисуем график аппроксимирующей кривой вместе с исходными табличными данными:

T = (0:0.1:2.5)';

Y = [ones(size(T)) exp(-T)]*c;

plot(T, Y, '-', t, y, 'o')

Из рисунка видно, что табличные данные, представленные на графике кружками, достаточно хорошо аппроксимируются кривой.

Рассмотрим решение системы с недоопределенной матрицей. Решение такой системы не бывает единственным. MATLAB находит частное решение, которое имеет m ненулевых компонент (m – ранг матрицы), но и оно не является единственным. Частное решение определяется с помощью алгоритма QR факторизации с выбором ведущего элемента по столбцу. Рассмотрим пример:

R = fix(10*rand(2,4))

R =

6 8 7 3

3 5 4 1

b = fix(10*rand(2,1))

b =

1

2

Линейная система Rx = b состоит из двух уравнений относительно четырех неизвестных. Решение такой системы удобно выводить на экран в рациональном формате:

format rat

p = R\b

p =

0

5/7

0

-11/7

Для того чтобы найти общее решение переопределенной системы, надо к частному решению добавить фундаментальную систему решений. Фундаментальная система решений находится с помощью оператора null:

Z = null(R, 'r')

Z =

-1/2 -7/6

-1/2 1/2

1 0

0 1

Необязательный параметр ‘r’ отвечает за рациональное представление базисных векторов. Общее решение исходной системы можно представить в следующем виде: x = p + Z*q, где q – произвольный вектор.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]