
Базовые средства матпакета Scilab
.pdf
2.5.3.Контрольные вопросы
1)Как формулируется постановка задачи численного решения ОДУ?
2)Какие начальные условия должны быть заданы в соответствии с задачей Коши при решении ОДУ 1-го порядка средствами Scilab?
3)Какие начальные условия должны быть заданы в соответствии с задачей Коши при решении ОДУ n-го порядка средствами Scilab?
4)Что является численным решением ОДУ?
5)Какие численные методы реализованы в функции ode?
6)Какие входные параметры функции ode являются обязательными?
7)В какой форме должны быть записаны функции ОДУ при использовании функции ode?
8)Какими средствами решается система ОДУ?
9)Что представляет собой решение ОДУ 1-го и 2-го порядка при использовании функций ode?
251



Рис.2.6.2-1. Решение СЛУ с использованием функции linsolve
В математике существует множество методов решения СЛУ. Рассмотрим, например, решение СЛУ с использованием метода обратной матрицы. В этом случае СЛУ должна быть представлена в виде A*x=b (где A
– матрица коэффициентов при неизвестных, х – вектор неизвестных, b – вектор свободных членов). В ходе решения требуется выполнить следующую последовательность действий:
создать матрицу коэффициентов A, где коэффициенты размещаются по столбцам (если переменная отсутствует в уравнении, то элемент матрицы определяется равным нулю);
задать вектор правой части b размером n;
найти решение по формуле x=b\A.
Полученное решение можно проверить по формуле b1=x*A. В результате должно получиться равенство b1=b.
Запись A\b соответствует математической операции A-1b, а запись x=A\b эквивалентна записи x=inv(A)*b.
Врезультате решения системы (рис. 2.6.2-2) получены два корня х1=-3
их2=2.5. Проверка, выполненная путем умножения вектора полученных
корней на матрицу коэффициентов, показала, что полученное решение верно, поскольку ее результат численно равен вектору свободных членов.
|
|
- |
->A = [1 2; 3 4]; |
// Матрица коэффициентов |
|
-->b = [2; 1]; |
// Вектор свободных членов |
|
-->det(A) |
// Вычисление определителя матрицы A |
|
ans |
= |
|
-2. |
|
|
-->x = A \ b |
// Решение СЛУ методом обратной матрицы |
|
x |
= |
|
-3. |
|
|
2.5 |
|
|
-->b1 = A * x |
// Проверка |
|
b1 |
= |
|
2.
1.
Рис.2.6.2-2. Решение СЛУ методом обратной матрицы
В следующем примере СЛУ решается при помощи правила Крамера, которое заключается в следующем. Если определитель = detA матрицы
системы из n линейных уравнений с n неизвестными вида A*x = b отличен от нуля, то система имеет единственное решение x1, x2, … xn, определяемое по формулам Крамера: где i=1,2,…,n, а ∆i – определитель матрицы, полученной из матрицы A путем замены i-го столбца матрицы А столбцом свободных членов b.
254

Пусть задана следующая система линейных уравнений с 4-мя неизвестными:
2x |
1 |
x |
2 |
5x |
3 |
x |
4 |
8; |
|||||
|
|
|
|
|
|
|
|
||||||
|
|
3x2 |
6x4 |
9; |
|
|
|||||||
x1 |
|
|
|||||||||||
|
2x |
|
x |
|
2x |
|
5; |
|
|||||
|
2 |
3 |
4 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|||||
|
x |
|
4x |
|
7x |
|
|
6x |
|
0 |
|||
|
1 |
2 |
3 |
4 |
|||||||||
|
|
|
|
|
|
|
На рис. 2.6.2-3 приведено решение заданной СЛУ средствами Scilab по методу Крамера. Решение СЛУ оформлено в виде функции Kramer(A,b,n). Перед обращением к функции предусмотрен ввод матрицы коэффициентов (A) и вектора свободных членов (b). Обратите внимание, что в функции предусмотрено, что если определитель матрицы коэффициентов равен нулю, то решение не выполняется, а на экран выводится сообщение «Определитель матрицы А равен нулю». В нашем случае в результате выполнения функции получены четыре корня СЛУ: Х(1)=3; Х(2)=-4; Х(3)=-1; Х(4)=1. После вывода их значений произведена проверка правильности решения СЛУ.
-->// Решение СЛУ по методу Крамера
-->clear
--> // Загрузка сценария РИС2623 и выполнение функции Kramer
-->
--> A = [2 1-5 1; 1-3 0 -6; 0 2 -1 2; 1 4 -7 6]; // Матрица коэффициентов
--> b = [8; 9; -5; 0]; // Матрица свободных членов
-->exec('Kramer.sce');
-->X = Kramer(A, b, 4) // Обращение к функции решения СЛУ по методу Крамера
X |
= |
|
|
|
3. |
|
|
|
-4. |
|
|
|
-1. |
|
|
|
1. |
|
|
--> P = A * X - b |
// Проверка |
|
|
P |
= |
|
|
|
0. |
|
|
|
0. |
|
|
|
-8.882D-16 |
|
|
|
2.665D-15 |
|
|
|
|
|
|
|
|
|
|
255

Рис. 2.6.2-3. Решение СЛУ по методу Крамера Рассмотрим следующий не менее известный метод решения СЛУ–
метод Гаусса, который основан на том, что от исходной системы уравнений происходит переход к эквивалентной системе, которая решается проще, чем исходная.
Метод состоит из двух этапов. Первый этап (прямой ход) заключается в том, что расширенная матрица (матрица коэффициентов, в которую добавлен столбец свободных членов) путем элементарных преобразований (перестановка уравнений системы, умножение уравнений на число, отличное от нуля, и сложение уравнений) приводится к ступенчатому виду. Для этой цели в Scilab используется функция rref([A,b]).На втором этапе (обратный ход) ступенчатую матрицу преобразовывают так, чтобы в первых n столбцах получилась единичная матрица. Последний, n+1 столбец этой матрицы содержит решение системы линейных уравнений.
На рис.2.6.2-4 приведено решение следующей СЛУ средствами Scilab
по методу Гаусса:
2x |
x |
2 |
5x |
3 |
0; |
||||||
|
1 |
|
|
|
|
|
|
|
|||
|
2x |
|
5x |
|
1; |
||||||
3x |
2 |
3 |
|||||||||
|
1 |
|
|
|
|
|
|
|
|||
|
x x |
|
2x |
|
4. |
||||||
|
3 |
3 |
|||||||||
1 |
|
|
|
|
|
|
|
Метод Гаусса реализован в виде функции Gauss(A,b). В качестве входных параметров здесь используется матрица коэффициентов (А) и вектор свободных членов (b), а выходным параметром является вектор, содержащий решение СЛУ (Х).
-->// Решение СЛУ по методу Гаусса
-->clear
--> // Загрузка сценария РИС2624 --> // Матрица коэффициентов и вектор свободных членов
--> A = [2 -1 1; 3 2 -5; 1 3 -2]; b = [0; 1; 4]; --> exec('РИС2624.sce');
-->X = Gauss(A, b) // Обращение к функции решения СЛУ по методу Гаусса
X=
0.4642857
1.6785714
0.75
256

Рис.2.6.2-4. Решение СЛУ методом Гаусса
2.6.3Контрольные вопросы
1)Как формулируется постановка задачи численного решения системы линейных уравнений?
2)Какие методы решения СЛУ известны?
3)Что называют плохо обусловленными линейными системами?
4)Какой формат имеет функция linsolve?
5)Что представляет собой алгоритм решения СЛУ средствами Scilab по
методу Крамера?
6)Что представляет собой алгоритм решения СЛУ средствами Scilab по
методу Гаусса?
257

2.7. Решение задач оптимизации средствами Scilab
Математические модели реальных объектов или технологических процессов при их исследовании или проектировании с известной степенью детализации могут быть представлены функциональными зависимостями, при этом, как правило, нелинейными. Переменные в таких функциях связаны между собой нелинейными законами, а зачастую ограничены предельными диапазонами изменения переменных, обеспечивая максимальную приближенность модели к изучаемому объекту. Математическое моделирование имеет своей целью не только достоверно отразить процесс функционирования объекта, но и произвести выбор таких значений его параметров, которые обеспечивают оптимальную эффективность этого объекта.
2.7.1. Постановка задачи оптимизации
Постановка задачи оптимизации нелинейных функций
Нелинейные функции, описывающие в теории оптимизации реальные объекты или процессы, принято называть целевыми или критериальными, а аргументы (независимые переменные) таких функций – параметрами оптимизации. Решить задачу оптимизации – значит найти оптимальное (наилучшее) решение, в смысле заданного критерия.
По количеству независимых переменных (n) различают задачи одномерной оптимизации (n=1) и многомерной оптимизации (n 2). При этом задачу нахождения максимума целевой функции можно свести к задаче нахождения минимума путем замены исходной функции на функцию с обратным знаком, поэтому в дальнейшем будем говорить только о поиске минимума функции.
При решении задач одномерной оптимизации в области допустимых значений функция f(x) может иметь несколько минимумов. Говорят, что функция f(x) имеет в точке x* локальный минимум, если существует такая δ-окрестность точки х*, что для всех значений х, принадлежащих δ- окрестности, выполняется неравенство f(x) f(x*). Функция f(x) имеет в точке x* глобальный минимум, если для всех х, принадлежащих всей области допустимых значений, справедливо неравенство f(x) f(x*).
258

Рис. 2.7.1-1. Функция f(x), имеющая локальный и глобальный минимумы
На рис. 2.7-1-1 показаны области, отмеченные различными стилями линий и стрелками направления спуска, на которых черные точки представляют собой локальные минимумы, среди которых имеется и глобальный.
Условия существования оптимума
Задача одномерной оптимизации имеет единственное решение, если функция f(x) на отрезке [a;b] имеет только один экстремум, то есть она унимодальна. Для того чтобы функция на отрезке [a;b] была унимодальной должны выполняться следующие условия [24]:
Необходимым условием существования экстремума дифференцируемой одномерной функции f(x) является выполнение
равенства
f (х) = 0;
Достаточным условием существования единственного минимума одномерной функции f(x) на отрезке [a;b] является возможность дважды ее дифференцировать и требование положительности второй производной f (х) в любой точке этого отрезка.
Задача многомерной оптимизации сводится к нахождению оптимального значения функции n переменных f(Х)=f(x1,x2,…,xn),
определенной в n-мерном пространстве |
R |
, где из множества допустимых |
|
n |
|
решений выбирается такой вектор Х*, которому соответствует минимальное
значение целевой функции f(Х*)=minf(Х).
Для всякой непрерывно дифференцируемой функции f(Х) достаточным условием того, что функция имеет точку минимума, является положительная определенность матрицы вторых частных производных
(матрицы Гессе или Гессиан):
259
