x i 1 Funcl x i , m, f ;
i i 1; end;
z x ;
6. Задайте параметры итерационного процесса:
>>q 0.01;
>>eps 10^ 5;
7.Вычислите значения корня уравнения на каждом шаге итерационного процесса.
>>z My _ Itel 'Func' , x0,eps, q, m
8.Визуализируйте итерационный процесс (рис. II.7).
>>plot z,' 0' ;
29
Рис.II.6. Зависимость значения корня уравнения от номера шага итерационного процесса
9. Выведите точное значение корня.
>>Ni lenth z ;
>>z Ni
ans=
0.3942
10. Выведите значения функции. >>Func z Ni
ans =
-1.8185e-006
30
Для вычисления нулей функций, зависящих от одной перемененной, в пакете MATLAB предусмотрена специальная функция fzero , реализующая в зависимости от вида
функции методы половинного деления, секущих или обратной квадратичной интерполяции. Обращение к данной функции имеет следующий вид:
x fzero fun, x0,optlone, P1, P2,
x, fval,exitflag,output fzero
Здесь:
Fun — строковая переменная, содержащая имя файла.
x0 — начальное приближение или интервал поиска решения.
options — параметры, задающие точность и способ представления результатов вычислений.
PI, P2, ... — дополнительные аргументы, передаваемые в функцию fun (например, F=feval(FUN,X,P1,P2,. . . ) ) .
fval — переменная, в которую функция f zero () возвращает значение корня уравнения f x = 0.
exitflag — переменная, знак которой свидетельствует о наличии корня на данном интервале (например, exitflag=1 — корень существует);
output— переменная, в которую функция fzero() возвращает название метода, использованного для нахождения корня уравнения.
Пример II.3. Решение уравнения x4 11x3 x2 x 0.1 0 с использованием функции fzero()
>> x fzero ' Func' ,0.8 .
x
0.3942
31
Поиск корня на отрезке [-2, 2]: >> x fzero ' Func' , 2;2
x
0.3942
Поиск корня с точностью до10 2 , вывод на экран значение корня и соответствующего значения функции на каждом шаге итерационного процесса:
>> x fzero ' Func' ,0.8,optimset 'Tolx' ,10^ 2,'disp' ,'iter '
Funccount |
X |
£(x) |
Procedure |
1 |
0.8 |
-3.6824 |
initial |
2 |
0.777373 |
-3.32063 |
search |
3 |
0.822627 |
-4.06625 |
search |
4 |
0.768 |
-3.17712 |
search |
5 |
0.832 |
-4.23184 |
search |
6 |
0.754745 |
-2.98039 |
search |
7 |
0.845255 |
-4.47271 |
search |
8 |
0.736 |
-2 .71444 |
search |
9 |
0.86-1 |
-4.82695 |
search |
10 |
0.70949 |
-2.36229 |
search |
11 |
0.89051 |
-5.35561 |
search |
12 |
0.672 |
-1.9106 |
search |
13 |
0.928 |
-6.16014 |
search |
14 |
0.618981 |
-1.35979 |
search |
15 |
0.981019 |
-7.41582 |
search |
16 |
0.544 |
-0.743367 |
search |
|
|
32 |
|
17 |
1.056 |
-9.43876 |
search |
I8 |
0.437961 |
-0.157497 |
search |
19 |
1.16204 |
-12.8248 |
search |
20 |
0.288 |
0.215057 |
search |
Looking for a |
in the inter- |
[0.288, 1.162] |
|
21 |
0.308 |
0.190464 |
interpolation |
22 |
0.460543 |
-0.256865 |
interpolation |
23 |
0.37295 |
0.0607713 |
interpolation |
24 |
0.397562 |
-0.010605 |
interpolation |
zero found in the interval: 0.288,1.162 x 0.3976
Поиск корня с точностью до 10 5 , вывод на экран значение корня и соответствующего значения функции на каждом шаге итерационного процесса:
>> xfval fzero ' Func' ,0.8,optimset 'TolX ' ,10^ 5,'disp' ,'iter '
33
Funcount |
X |
f(x) |
Proce- |
1 |
0.8 |
-3.6824 |
initial |
2 |
0.77737 |
-3.32063 |
search |
3 |
0.82262 |
-4.06625 |
search |
4 |
0.768 |
-3.17712 |
search |
5 |
0.832 |
-4.23184 |
search |
6 |
0.75474 |
-2.98039 |
search |
7 |
0.84525 |
-4.47271 |
search |
8 |
0.736 |
-2.71444 |
search |
9 |
0.864 |
-4.82695 |
search |
10 |
0.70949 |
-2.36229 |
search |
11 |
0.83051 |
-5.35561 |
search |
12 |
0.672 |
-1.9106 |
search |
13 |
0.928 |
-6.16014 |
search |
14 |
0.618981 |
-1.35979 |
search |
15 |
0.98101 |
-7.41582 |
search |
16 |
0.544 |
-0.743367 |
search |
17 |
1.056 |
-9.43876 |
search |
18 |
0.43796 |
-0.157497 |
search |
19 |
1.16204 |
-12 |
.8248 |
search |
20 |
0.288 |
0 |
.215057 |
search |
Looking for a zero in the interval |
[0.288, 1.162] |
||
21 |
0.302415 |
0.198003 |
interpola- |
22 |
0.467237 |
-0.288821 |
interpola- |
23 |
0.369452 |
0.0698667 |
interpola- |
24 |
0.398884 |
0.0148167 |
interpola- |
25 |
0.393735 |
0.0013607 |
interpola- |
26 |
0.394168 |
,27096e- |
interpola- |
27 |
0.394188 |
,91718e- |
interpola- |
34
Zero found the interval: [0.288,
in 1.162]. x -0.3942
fval = 2.2710e-
Поиск корня с точностью до 10 3 , вывод на экран значения корня на последнем шаге итерационного процесса:
>> x fzero ' Func' ,3,optimset 'disp' ,'final '
zero fond in the interval: 0.28471,4.92
x
0.3942
Для нахождения корней полинома в пакете MATLAB предусмотрена соответствующая функция roots(), возвращающая вектор-столбец, компоненты которого являются корнями полинома (действительными или комплексными).
Обращение к данной функции имеет следующий вид: r roots c
Здесь с-вектор строка, содержащая значение коэффициентов полинома:
c1 xn c2 xn 1 cn 1 x0
ПримерII.4. Найти корень уравнения x4 11x3 x2 x 0.1 0
используя функцию roots():
>> c 1, 11,1,1,01 ; >>roots c
ans=
10.8998
0.3942 -0.1470+0.04091 -0.1470-0.04091
35 |
36 |
III. МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
3.1. Общие сведения и основные определения
Рассмотрим систему, состоящую из m линейных алгебраических уравнений с n неизвестными:
a11 x1 a12 x2 a1n xn b1 , |
|
a21 x1 a22 x2 a2n xn b2 , |
(Ш.1) |
am1 x1 am2 x2 amn xn bm , |
|
которая может быть записана в матричном виде: |
|
A x b , |
(III.2) |
где А- прямоугольная матрица размерности m n;
a11 , a12 , a1n |
|
|
|||
A a21 , a22 , a2n |
, |
(Ш.3) |
|||
|
, am2 |
|
|
|
|
am1 |
, amn |
|
|||
x-вектор n—го порядка: |
|
|
|
|
|
|
|
x |
|
|
|
|
x |
1 |
|
|
|
|
x2 |
, |
|
|
|
|
|
|
|
|
|
|
|
xn |
|
|
|
b-вектор порядка m: |
|
|
|
|
|
|
|
b |
|
|
|
|
b |
1 |
|
|
|
|
b2 |
, |
|
|
|
|
|
|
|
|
|
|
|
bm |
|
|
|
Определение III.1. Решение системы (III.1) называется такая упорядоченная совокупность чисел
37
x1 c1 , x2 c2 , , xn cn , которая обращает все уравнения системы (III.1) в верные равенства.
Определение III.2. Прямыми методами решения систем линейных уравнений называются методы, дающие решение системы за конечное число арифметических операций. Если отсутствуют ошибки округления, то получаемые решения всегда являются точными.
Определение III.3. Итерационными методами решения систем линейных уравнений называются методы, дающие решение системы уравнений как предел последовательности приближений, вычисляемых по единообразной схеме.
3.2. МетодГауссаиегореализациявпакетеMATLAB
Рассмотрим систему линейных алгебраических уравнений
a11 x1 a12 x2 |
a1n xn b1 , |
|
a21 x1 a22 x2 |
a2n xn b2 , |
(Ш.4) |
an1 x1 an2 x2 |
ann xn bn , |
|
при условии, что матрица A aij невырождена. Метод Гаусса
состоит в преобразовании системы (III.4) последовательным исключением переменных к равносильной системе с треугольной матрицей
x1 12 xn 1n xn 1 , |
|
x2 2n xn 2 , |
|
……………………. |
|
xn n , |
(III.5) |
Затем из системы (III.5) последовательно находят значения всех неизвестных xn , xn l , , xl .
38