<<

стр. 3
(всего 5)

СОДЕРЖАНИЕ

>>




-




1 1
.5
0 . 5 2 Z 5 3 3 5




Рис. 7.2. График функции в стиле s


Таблица 7.2. Данные расширения Вселенной
Название галактики R V
Дева 22 7,5
Пегас 68 24
Персей 108 32
Волосы Вероники 137 47
255
Большая медведица 1 93
120
Лев 315
134
Северная корона 390
144
405
Близнецы
685
Волопас 245
Большая медведица 2 700 260
1100 380
Гидра
Визуализация вычислений 145

В таблице обозначены:
• R — расстояние галактики от Земли, миллионов световых лет;
• V— скорость удаления галактики, сотни миль в секунду.
Необходимо выбрать вид функции интерполяции с целью опре-
деления математической модели расширения Вселенной.
Решение задачи. Воспользуемся графоаналитическим методом.
Представим функцию V = f{R) в виде графика и по его виду
подберем подходящую функцию. График создадим с помощью
функции plot (x,y,s).
Программа будет иметь вид:
» х=[22, 68, 108, 137, 255, 315, 390, 405, 685, 700, 1100];
» у = [ 7 . 5 , 24, 32, 47, 93, 120, 134, 144, 254, 260, 3 8 0 ] ;
plot(х,у, ['К1, •.•,'-.'])
»

График функции приведен на рис. 7.3.


Fl E t Vw I s r T o Dstp
ie d e n et os ek
ii l o
Ww Be в П
n He
io t
d
'*: O
ъ®
40
0
• 30
5 -
30
0 -
20
5 -
/
20
0
10
5 -
—^
10
0 -
50 -
n
600 80
0 10
00 1200
20
0
0 40
0
Рис. 7.3. График функции расширения Вселенной
146 Глава 7

Из рис. 7.3 видно, что функция интерполяции может быть линей-
ной: V = a + bR. Остается определить коэффициенты а и Ъ, и
математическая модель расширения Вселенной будет найдена.

7.1.3. Функция
plot(x1fy1,s1, x2,y2,s2, ...,xn,yn,sn)
Эта функция позволяет строить большое число математических
функций на одном графике. Обозначения имеют следующий
смысл:
• Xi — i-й массив аргументов, заданный в виде вектора;
• yt — i-й массив значений функции для заданного массива ар-
гументов;
• Si — стиль графика для i-й функции.
Стиль можно не задавать. В этом случае MATLAB выбирает
стиль самостоятельно.
Функция YiUi) может задаваться в аналитическом виде. Если эта
функция встроенная, то она вводится по общим правилам пред-
ставления функции, имеющей символьные переменные. Если
функция пользовательская, то необходимо создавать m-файл про-
граммы на языке программирования системы MATLAB.
В качестве примера вначале построим график одиночной функ-
ции и укажем на некоторые особенности его создания.
Пусть функция задана в виде табл. 7.3.

Таблица 7.2 . Таблица функции у = f(x)
2
X 1 4
3
6.2 4.1 0.6
1.9
У

Необходимо построить график функции с комментариями.
Последовательность команд будет иметь вид:
» х= [ 1 2 3 4] ;
» у=[6.2, 4.1, 1.9, 0.6];
» plot(x, у, ' .-q')

После нажатия клавиши <Enter> получим график функции.
Визуализация вычислений 147

При необходимости можно поместить в окне монитора заголовки
и надписи, а также нанести координатную сетку, выполнив сле-
дующие команды:
» title ('Our plot')
» xlabel ( X axis')
'
» ylabel ( Y axis')
'
» grid on

Все описанные выше команды построения графика приведены на
рис. 7.4.


"ЗУ,
Curert ИгвЯогу: j L WATLUftSpMwwt;
>


Using Toolbo* Path Cache. Type " h e l p toolbox_^p*tJi c a c h e " foi

To s e t « t a c t e d , s e l e c t "ИАТ1АВ Help" (com the Help aenu.

3 d u l ac y
2 o be i a
3 d u l array
2 o be tl 2 J 4]:
{6.2, 4 . 1 , 1.9, 0.6];
(x, y, • . - # ' ]




Л й . Р Е ^С '
. У А УГ
УУ



у.[6.2, 4.1, J.9, a.6];
(x, у, -.-я')
tllle !'(hii plot-)




JJ


* 01 О

Рис. 7.4. Команды построения графика функции по табл. 7.3

В результате выполнения приведенной последовательности
команд получим график, представленный на рис. 7.5.
Если на одном графике необходимо поместить две функции у(х)
и z^x), то команда plot () будет иметь вид:
p l o t ( x , у, х, z)
148 Глава 7

например:
» х = [ 1 , 2, 3, 4, 5 ] ;
» y=cos(x);
» z=exp(-x);
» p l o t (х, у, х, z) .

Вывести две кривые в одно окно можно таюке, используя коман-
ду hold on. После выполнения данной команды все графики будут
выводиться в одно окно. Отменить этот режим можно командой
hold off.


Fl E* V Insert To Dstp Wdw Hp
ie d eiw ol eko no
s i e
l
.?^




Рис. 7.5. График функции, заданной табл. 7.3

Если функция представляется в символьном виде, то для по-
строения ее графика используется функция ezpiot (), имеющая
вид:
f='2*xA2+3*x+l'
e z p i o t (f, х„, х к )
Визуализация вычислений 149

где f — функция, график которой необходимо построить, хн, х к —
диапазон изменения аргумента.
Откликом здесь является гладкая кривая с представлением на эк-
ране вида функции.
Функция plot (xi,yi,si,x2,y2,s2,... ,sn,yn, sn) необходима при
проверке достоверности решения задачи интерполяции, когда
сравниваются две функции: исходная, заданная в виде таблицы, и
аналитическая, полученная в результате интерполяции.

! Пример 7.3 |

В результате решения задачи аппроксимации получена следую-
щая математическая модель расширения Вселенной:


Результат получен по данным астронома Хаббла, приведенным
в табл. 7.2.


B E t Vw I s r Tc Dstp v dw Hp
e d e n et cs ek imo e
l ii l o l
(
• B} Q S к . Ф. ?*. f) ® | OS
400


350


300


250 •


200 -


150 •


100

50 -

0
воо : юш 1200
200 400 BOO
•0


Рис. 7.6. Графики функции расширения Вселенной
Глава 7
150

Построим зависимость V-f[R) по исходным данным и полу-
ченной математической модели и проверим достоверность ре-
зультатов моделирования.
Программа построения графиков имеет вид:
» R=[22, 68, 108, 137, 255, 315, 390, 405, 685, 700, 1100];
» V=[7.5, 24, 32, 47, 93, 120, 134, 144, 254, 260, 380];
» F = 0.33 * R + 0.37;
» plot(R,V,R,F)
Откликом будут графики, показанные на рис. 7.6. Из рисунка
видно, что графики существенно отличаются друг от друга. Дос-
товерность математической модели сомнительна.

7.1.4. Функции построения графиков
в логарифмическом масштабе
Построение графиков в логарифмическом масштабе необходимо
в следующих случаях:
• исследование устойчивости систем управления частотными
методами;
• исследование качества переходных процессов на основе лога-
рифмических амплитудно-частотных характеристик;
• анализ помехозащищенности технических объектов;
• наглядность результатов при их графическом представлении.
В системе MATLAB построение графиков в логарифмическом
масштабе осуществляется с помощью функций:
loglogx(...)
semilogx(...)
semilogy(...)

Функция loglog () строит график в логарифмическом масштабе по
обеим осям, функция semilogx о — по оси х, функция
semilogy () — ПО ОСИ у .

Синтаксис этих функций аналогичен соответствующим функци-
ям plot'().
Визуализация вычислений 151

7.1.5. Графики в полярной системе
координат
Построение графиков в полярной системе координат осуществля-
ется в MATLAB с помощью следующих функций:
p o l a r (0, г)
p o l a r ( 0 , г, з)
где:
• 0 — угол функции г (0);
• г — функция, представляющая собой радиус г (0);
• s — вектор стилей, аналогичный функции plot ().
!
•. • • •• • ' '* ••-• •' •-: " -




| Пример 7.4
Построить график в полярной системе координат функции
2
У
sin


Fe E i Vw Insert T os Dst p Wdw Hp
i dt e
f i o l eko no e
i l




Рис. 7.7. График функции в полярной системе координат
152 Глава 7

Решение имеет вид совокупности следующих команд:
» t = 0 : pi/40:2 . pi;
» polar(t,2./sin(5*t))

График функции показан на рис. 7.7.

7.1.6. Создание гистограмм
Гистограмма представляет собой столбиковую диаграмму, харак-
теризующую число попаданий элементов вектора v в каждый из к
интервалов. Данные для гистограммы получают с помощью сле-
дующих функций:
N - hist(Y)
N = hist (Y, M )
N = hist (Y, X)
[N,X] = h i s t ( . . .)
В функциях приняты обозначения:
• Y — вектор чисел, возвращаемых для десяти интервалов, вы-
бираемых автоматически;
• м — количество интервалов;
• х — вектор.
Команда hist (.».) с синтаксисом, описанным в функциях выбора
чисел, строит график гистограммы.

Пример 7.5

Построить гистограмму случайных чисел, распределенных по
нормальному закону. Десять тысяч чисел сгенерировать с по-
мощью функции randn (m, n).
Программа решения задачи имеет вид:
» х = - 3 . 5 : 0.2 : 3 . 5 ;
» у = randn(10000,1);
» hist(у,х)

График приведен на рис. 7.8.
Визуализация вычислений 153


Fl E i v w Insert T o D st p Wd w H p
ie d i
te o s eko k o e
l i l




Рис. 7.8. Гистограмма чисел, распределенных по нормальному закону

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


7.2. Трехмерная графика
Система MATLAB имеет богатые возможности построения трех-
мерных графиков. Мы рассмотрим только несколько функций,
позволяющих создавать трехмерные графики.
Для создания трехмерного графика необходимо
z = f(x, у)
иметь матрицы значений переменных х, у.
Для этого предназначены следующие функции:
[X,Y] = m e s h g r i d ( x , у)
[X,Y] - meshgrid(x)
[X,Y,Z] = meshgridfx, у, z)
154 Глава 7

Функция meshgrid(x,y) — преобразует область векторов х, у в
массивы х, Y, которые используются для вычисления функции
z = f(x, у) и построения графиков.

Строки массива х являются копиями вектора х, а столбцы масси-
ва Y — копиями вектора у. Это видно на следующем примере:
» [X,Y] = meshgrid (1:0.2:1.6, 12:0.5:14)
ш
X
1.6
1 1.2 1 .4
1.2 1.6
1 1 .4
1.6
1 1.2 1 .4
1.6
1 1.2 1 .4
Y=
12
12 12
12
12.5
12.5 12 .5
12.5
13
13
13 12
13.5
13.5 12..5
13.5
14 14
14 14

Функция
[X,Y,Z] = m e s h g r i d ( x , у, z)

возвращает трехмерный массив для построения трехмерного гра-
фика.
Графики трехмерных поверхностей строятся с помощью сле-
дующих функций:
plot3(x, у, z)
plot3(X, Y, Z)
plot3(X, Y, Z, S)
plot3(xl, y l , z l , s i , x2, y2, z2, s2, . . . , xn, yn, zn, sn)

где:
• x, у, z — векторы аргументов функции;
• х, Y, z — матрицы одинакового размера;
• s — стили линий и точек графика, аналогично функции
plot ().
Визуализация вычислений 155

Приведенные функции строят точки трехмерного графика и
соединяют их отрезками прямых в соответствии с заданным сти-
лем.
Функция p l o t 3 ( x l , y l , z l , s l , x 2 , y 2 , z 2 , s 2 , . . . , x n , yn, zn,sn) строит
на одном рисунке п функций.

; Пример 7.6

Построить график функции
z = In х + In у
в диапазоне аргументов [—4; 4] с шагом h = 0.1.
Решение имеет вид:
» [X,Y] = meshgrid([-4:0.1:4]);
» Z = log (X) + log (Y) ;
» plot3(X,Y,Z)
График трехмерной поверхности приведен на рис. 7.9.


F E t W» I s r To Dstp W o Hp
e d e net os ek n w e
li
i l o id l




Рис. 7.9. График функции z = lnx+\ny
ГЛАВА 8


Алгоритмы и технологии
решения уравнений

8.1. Алгоритмы решения
алгебраических и трансцендентных
уравнений
Алгоритм любого метода является совокупностью условий выбо-
ра начального приближения, расчетных соотношений и признака
окончания вычислительного процесса.
Рассмотрим ряд алгоритмов численных методов определения
корней уравнений.


8.1.1. Метод дихотомии
(половинного деления)
Сущность метода состоит в следующем. Предположим, что об-
ластью изоляции корня уравнения / ( х ) = 0 является [д;й]. Тогда
за первое приближение к искомому корню х принимается:
а+Ъ
х =

\

Затем вычисляются значения функции / ( х ) в точках а и х, (или
Ъ и л,). Если / ( а ) - / ( х , ) < 0 , то новой областью изоляции корня
Алгоритмы и технологии решения уравнений 1_57_


является [а;*,], в противном случае— [^;*i]' Равносильным
является условие / ( й ) - / ( х , ) < 0 . Если это условие выполняется,
то новой областью изоляции будет [b; лс,], в противном случае —
[а;х,].
Вторым приближением к искомому корню является:

flf + X,
= -••
х-,
2




если / ( а ) - / ( х , ) < 0 или




если /(Z>)-/(jt|)<0. Затем вычисляются значения функции b
при JC = X? и проверяется условие / ( ^ ) - / ( л ' 2 ) < 0 и т. д.

Признаком окончания вычислительного процесса в этом методе
является одно из следующих условий:

/ ( * „ ) < S ИЛИ | / ( х „ ) - / ( . Х „ _ , ) | < 8 ,

где 8 — допустимая погрешность вычисления корня.
Достоинством метода является простота алгоритма и высокая
точность определения корня. Медленная сходимость итераций —
основной недостаток метода.

8.1.2. Метод хорд
Алгоритмом метода хорд является совокупность следующих со-
отношений:
• Условие выбора начального приближения:

._. _ к если / ( « ) / » < 0 и л и / ( 6 ) / » > О,
*°˜[&,если f(a)f(a)>0 или/(*)/'(й)<0.
Глава 8
158

• Расчетные соотношения:

, если х0 = а,


если х0 = Ь.
""'
• Признак окончания вычислительного процесса:
или
|/(*«)Ме-
\х„-х„-\\-г
В алгоритме метода хорд приняты следующие обозначения:
• [a; b\ — область изоляции корня;

• / ( a ) , f(b) — значения функции уравнения / ( х ) = 0 в точ-
ках а и Ъ;
• f(a), — значения вторых производных функции
f(b)
/ (лс) в точках a w Ъ\

• хл —приближение корня уравнения f(x)-Q, n = 1,2,...;
• е — погрешность вычисления корня уравнения.
Как видно из описания алгоритма, он является итерационным.
Для его реализации в виде программы для ЭВМ необходимо
знать:
• область [a; b] изоляции корня;

• вторую производную / " (х);
• значение начального приближения, если не существует анали-
тическое выражение второй производной функции f(x).
Получить эти данные можно с помощью универсальных про-
граммных средств символьной математики, существенно облег-
чив труд учащегося.
Метод хорд дает возможность получить решение с необходимой
точностью с меньшим числом итераций по сравнению с методом
половинного деления.
Алгоритмы и технологии решения уравнений 159

Его недостатками являются:
• сложность метода в связи с необходимостью вычисления вто-
рой производной;
• неудовлетворительный признак окончания вычислительного
процесса.
Последний недостаток объясняется тем, что уточнение корня на
каждой из итераций происходит по признаку \хп - Л П _ , | < Е , в то
время как сам корень х при этом не находится в области
[х я ;ж я _|], т. к. приближение к корню идет только от начального
приближения а или Ъ. Может оказаться, что абсолютная раз-
ность \хп - *„_, мала и удовлетворяет условию окончания
вычислительного процесса, но при этом корень х далеко
расположен от хп .
Если признаком окончания вычислительного процесса считать
условие / ( х ) < е , то при этом может оказаться, что значение
функции f(x) мало, а абсцисса хп далеко находится от корня х .
Отсутствие хорошего признака окончания вычислительного про-
цесса может привести к вычислению корня уравнения f(x) - О с
погрешностью, превышающей г, хотя оба условия окончания
вычислительного процесса выполнены.

8.1.3. Метод касательных
Идея метода состоит в следующем. Выбирается произвольно зна-
чение х, принадлежащее функции f(x) уравнения / ( х ) = 0.
Проводится касательная к функции в этой точке до пересечения
ее с осью абсцисс. Точка пересечения касательной с осью абсцисс
(обозначим ее х,) принимается за первое приближение корня.

Вычисляется значение функции /(•*,) в точке х, и вновь прово-
дится касательная в точке с координатами ( x , , / ( x | ) j . Точка х2
пересечения касательной с осью абсцисс принимается за второе
Глава 8
160

приближение корня уравнения = 0 и т.д. Признаком окон-
чания вычислительного процесса, как и в методе хорд, является
выполнение одного из условий:
k - * n - i N 8 и л и |/О)|Не-
легко получить следующую рекуррентную формулу вычисления
приближений:

/(V.) (8.1)
Х Х
п ˜ п-\



где f'(xn_]) —производная функции f(x) в точке л:,,,, .
Начальное приближение ха , как и в методе хорд, зависит от вида
функции f{x) и области изоляции корня \a;b\. При этом оказы-
вается, что оно будет противоположным значению х0 в методе
хорд. Если в методе хорд xQ =а, то в методе касательных х0 =Ь
и наоборот.
Алгоритмом метода касательных является совокупность следую-
щих соотношений:
• Условие выбора начального приближения:
fa,если f(a)f"(a)>0 или f(b)f'(b)<0,
0
[б, если f(a)f(a)<0 или f(b)f(b)> 0.
• Расчетное соотношение:



• Признак окончания вычислительного процесса:
\хп-х,^\<г или \/(хп)\<е.
Из алгоритма видно, что для его реализации в виде компьютер-
ной программы необходимо знать:
• область [a; b] изоляции корня;
• аналитические выражения первой и второй производных;
Алгоритмы и технологии решения уравнений 161

• начальное приближение, если не существует аналитического
выражения второй производной. Их определение возможно с
помощью компьютерных технологий, реализуемых в универ-
сальных программных средствах символьной математики.
Ограничения метода касательных: метод нельзя реализовать на
практике, если функция f(x) уравнения /(JC) = O не имеет пер-
х
вой производной. Например, уравнение 2х\-е˜ +5 = 0 не может
быть решено, т. к. функция х\ не имеет производной.
Метод касательных имеет те же недостатки, что и метод хорд. По
сравнению с методом хорд он более трудоемкий, т. к. требует
вычисления в точках х0, хх, х2,..., х„ не только значений функ-
ции / ( * ) , но и ее производной. Его достоинство: во многих слу-
чаях дает высокую точность результата при малом числе ите-
раций.

8.Ф:4. Комбинированный метод
(метод хорд и касательных)
Существенным недостатком методов хорд и касательных являет-
ся неудовлетворительный признак окончания вычислительного
процесса. Условия
|х„-х„_,|<е и л и | / ( * „ ) | < е

не всегда обеспечивают необходимую точность определения
корня уравнения f(x) - 0.
Комбинированный способ позволяет устранить этот недостаток.
Из описания методов хорд и касательных следует, что если один
из них дает значение корня с недостатком, то другой — обяза-
тельно с избытком. Эта особенность методов предоставляет воз-
можность выработать хороший признак окончания вычислений и
обеспечить необходимую точность результата.
х)
— и-е приближение корня, вычисленное по ме-
Обозначим х[
тоду хорд, х*л) — по методу касательных.

бЗак. 1196
Глава 8
162

Тогда для оценки погрешности вычисления корня целесообразно
< е , т. к. достоверно извест-
воспользоваться условием -*.
('-•)




{
но, что в диапазоне х п^ - х^ обязательно находится искомый
корень.
Алгоритмом вычисления корней комбинированным методом яв-
ляется совокупность следующих соотношений:
• Условия выбора начального приближения:
[я, если f(a)f"(a)>0 или f(b)f(b)< О,
хп =•
[б,если f(a)f"(a)<0 или f(b)f"(b)>0.
• Расчетные соотношения:




{ b - x _ ) f { x ^ )
n {




если х0 = a,
/(</)-/(*„_,) '

•—
Л

(я-х„_,)/(х,м)
если д:0 = b.

• Признак окончания вычислительного процесса:

˜Х п

Недостатком метода хорд и касательных является большая его
трудоемкость. Однако при высокой производительности компью-
тера этот недостаток значения не имеет.
Существенное преимущество метода заключается в его способ-
ности обеспечить высокую точность определения корня при ко-
нечном числе итераций.

8.1.5. Метод итераций
Исходное уравнение / ( х ) = 0 преобразуется к виду х˜ц>[х). Бе-
рется из области изоляции корня [a, b\ произвольное значе-
Алгоритмы и технологии решения уравнений 163

ние х0, которое принимается за начальное приближение корня.
Приближения хи вычисляются по соотношениям
х 2, ..., хя
х, = Ц>(х0 ) , х2 = ф(дс,),..., Х„ = ф ( ^ ; , ) .

Повторяя эти процедуры многократно, можно вычислить значе-
ние корня с заданной точностью.
При практическом использовании метода итераций возникают
следующие вопросы:
• Каковы условия сходимости итерационного процесса?
• Если итерационный процесс расходится, то каким образом
можно обеспечить его сходимость?
• Как определить погрешность вычисления корня?
Существуют две теоремы, которые отвечают на первый вопрос.
Приведем их без доказательства.

Теорема 1
Если в итерационном процессе хп -<р(хп_^ последователь-
ность ж,, х2, ..., хп
имеет предел, т. е. limx,, =x , то зна-
11—WO
чение х является корнем уравнения f(x) = 0.

Теорема 2
Итерационный процесс сходится, если на всем интервале
области изоляции корня [a; Z ] выполняется условие
>
ф'(х«<1. При этом за значение х0 принимается любое
число из области [а, й].
Теперь ответим на второй вопрос. Известны несколько способов
обеспечения сходимости итераций.
Способ 1. Если итерационный процесс хп =<р(дея_,) не сходится,
то следует представить исходное уравнение / ( * ) = 0 в иной воз-
можной форме и выбрать такое из них, при котором обеспечива-
ется сходимость итерационного процесса.
Глава 8
164

Способ 2. Переход к обратной функции.
Представим исходное уравнение х-ц>[х) в виде y = q(x) и раз-
решим его относительно х. Получим ;c =xF(j>). Найдем произ-
водную по у функции х = Ч?(у):

1
dx__±_
<fy_ ф'(дс) '
dy
dy
dx
Так как при расходящемся итерационном процессе

1
<1
, то

и итерационный процесс yn=f{yn-\) сходится. Очевидно, что
если хк — корень уравнения у = *?{у), то хк также будет кор-
нем уравнения х = ф(х).

Способ 3. Подбор множителя.
Предположим, что исходное уравнение /(JC) = O преобразовано к
виду х = (р(х) и ф'(х)|>1, т.е. процесс расходится. Выберем
произвольно функцию g ( x ) * 0 и умножим исходное уравнение
на g(x). Тогда получим:

f{x)-g{x) =0
или
x= x-f(x)-g(x).
Теперь
y(x) = x-f(x)-g(x).

Подберем функцию g(x) такую, чтобы удовлетворялось условие
ф'(х) < 1 во всей области изоляции корня [а; й].
Алгоритмы и технологии решения уравнений 165_

Признаком окончания вычислительного процесса во всех преды-
дущих методах было одно из условий
S ИЛИ
F» -*,.-! P
В методе итераций условием сходимости итерационного процес-
са и обеспечения необходимой точности определения корня явля-
ется

|д;„-д:„ , | < е при (а'(х)\< —.

Из описания метода итераций можно сформулировать следую-
щий алгоритм решения уравнения / ( * ) = 0 методом итераций:
• условие выбора начального приближения
а < х0 < Ъ;
• расчетное соотношение

хя_,?) при условии | ф ' ( х ) | < - ;
дся =

• признак окончания вычислений


Из описания метода итераций видно, что основным его недостат-
ком является сложность обеспечения сходимости итерационного
процесса и точности определения корня.
Из описания методов дихотомии, хорд, касательных и итераций
следует, что разработка программ определения корней уравнений
требует в ряде случаев от программиста знания области изоляции
корня, первой и второй производных функций f(x), значения
начального приближения, проверки условия и обеспечения схо-
димости итерационного процесса. Только при этих условиях мо-
гут быть составлены программы перечисленных методов и про-
ведены исследования алгоритмов. Определить область изоляции
корня и вычислить значения производных и тем более проверить
и обеспечить сходимость итерационного процесса "вручную"
чрезвычайно трудно.
166 Глава 8

Время, затраченное на эти процедуры, будет превосходить время,
необходимое для составления программ.
Здесь следует использовать универсальные программные средст-
ва символьной математики, в частности систему MATLAB.


8.2. Технология решения
алгебраических и трансцендентных
уравнений в среде MATLAB
Решение алгебраических и трансцендентных уравнений в среде
MATLAB осуществляется с помощью следующих встроенных
функций: solve (), f zero (), roots ().
Технология решения уравнений с помощью встроенных функций
предельно проста. Рассмотрим ее и приведем примеры.

8.2.1. Технология решения уравнений
с помощью функции solveQ
Функция solve о представляется в следующем виде:
s o l v e ( ' f (х) ' , х)

где:
• ' f ( x ) ' — решаемее уравнение, записанное в одиночных ка-
вычках;
• х — искомое неизвестное.
Уравнение / ( х ) = 0 записывается в произвольной форме. При
этом если знак равенства отсутствует, то программа воспринима-
ет уравнение в виде / (х) = 0.
Аргумент х при решении уравнения можно опустить.
Функция symso, определяющая имя символьной переменной и
обязательная при решении систем уравнений, здесь может быть
опущена.
Рассмотрим технологию определения корня уравнения с по-
мощью функции solve () на примерах.
Алгоритмы и технологии решения уравнений 167

;
Пример 8.1

Пусть необходимо решить следующее уравнение:
sin х + х -1 = 0.
Программа решения уравнения имеет вид:
1
» Y = solve('sin(x) +х- 1 = О)


После нажатия клавиши <Enter> получим следующее решение:
Y=
0.510973
Функция solve о в ряде случаев позволяет определить все корни
уравнения f(x)-Q без указания начальных значений х или об-
ластей изоляции корней.

I Пример 8.2

Необходимо определить корни уравнения
2х - 4х + 3 = 0 .
Программа решения уравнения и результат имеют вид:
Y = solve('2.лх -
» 4*х +3= 0')
Y=
1.418
3.413

Найдены оба корня уравнения.

Функция solve о позволяет найти не только вещественные, но и
комплексные корни уравнения / ( х ) = 0. Покажем это на при-
мере.

i Пример 8.3 ;

Пусть уравнение имеет вид:
ех - I = 0.
168 Глава 8

Необходимо найти корни уравнения.
Программа имеет вид:
» Y = solve('sin(x) + l o g ( x ) + ехр(х) -1=0')

После нажатия клавиши <Enter> получим следующее решение:
Y=
3.055 - 1.71447 i

Обратите внимание на то обстоятельство, что, найдя комплекс-
ный корень уравнения, функция не выдала вещественного корня,
который имеет значение: х=о.4О7.

Большое достоинство функции solve () в том, что она позволяет
решать уравнения, представленные в аналитическом виде.


1 Пример 8.4

Необходимо решить следующее уравнение:
х
2 -3(а-Ь) = 0.
Решение будет иметь вид:
> Л х-3*(а-Ь)=0')


Log( (3*a-3*b) /log (2)


Функция solve () имеет следующий недостаток. Она не требует
информации о начальном значении корня или области его изоля-
ции. Поэтому в случае трансцендентного уравнения и в ряде дру-
гих случаев она не находит всех корней уравнения.
В качестве примера в табл. 8.1 приведены уравнения и количест-
во корней в каждом из них. Функция solve () нашла только один
корень, находящийся в столбце х.
Алгоритмы и технологии решения уравнений 169

Таблица 8.1. Уравнения и их корни
X
Уравнение Число корней
л-!+2х-2 = 0 4 0.555
2 0.463
2
х + 4siruc-2 = 0
2sin(ln*) = 0 1
6
1п(4-2л-) + ; Г - 2 = 0 1.2774
3


8.2.2. Технология определения
вещественных корней уравнения
с помощью функции fzeroQ
Функция f zero () имеет следующие реализации:
f z e r o C f (х) ', х)
[xl, х2])
f z e r o t ' f (х) ',
fzero('f(х)', х, t o l , t r a c e )
fzero('f (x)', [xl, x2], t o l )
fzeroCf (x)', [xl, x 2 ] , t o l , t r a c e )
В выражениях функции приняты следующие обозначения:
• ' f (х)' — решаемое уравнение, взятое в одиночные кавычки;
• х — начальное приближение (значение) искомого корня;
• [xl, х2]—область изоляции корня;
• tol — заданная погрешность вычисления корня;
• trace — значение корня в каждой итерации.
Технологию определения корней уравнения покажем на при-
мерах.

I Пример 8.5

Необходимо найти корни уравнения
2х - 4 x + xsin,x = 0,
если известно, что корни находятся вблизи значений к-1 и х=4.
170 Глава 8

Решение:
» У = fzero('2^x - 4 * х + х * s i n ( x ) ' , 1)
•у



0.3478


» У = fzero('2Ax - 4 * х + х * sin(x)', 4)
Y=
4.4761


i Пример 8.6
i
Нужно определить вещественные корни уравнения


используя функцию
fzero('y(x)', [xl,x2])
На рис. 8.1 приведен график функции.


Fe E t Vw I e
i d e mr
l ii Tools Desktop Window Help




2
log(4-2 x)+x -2




40
35
\




- \


>




30 • \




25 -




20 \


\




15 -
\




"'Г 10 \




,. ь -




•0 — — — 1




-6 -5 0 1 2
-4 •" • " -3 -2 -1


X

\ . • :•.•:




2
Рис. 8.1. График функции 1п(4-2х) + х - 2 = 0
Алгоритмы и технологии решения уравнений 171

Из рис. 8.1 видно, что областями изоляции корней могут быть:
[0;-1],[1; 1.5], [1.5; 1.95].
Тогда программа определения корней и результаты решения за-
дачи будут иметь вид:
А
» XI = f z e r o ( ' l o g ( 4 - 2 * х) + х 2 - 2 \ [0,-1]);
Л
» Х2 = f z e r o ( ' l o g ( 4 - 2 * х) + х 2 - 2 ' , [1,1.5]);
л
» Х2 = f z e r o ( ' l o g ( 4 - 2 * х) + х 2 - 2 ' , [1.5,1.95]);
» X = [xl,x2,x3]

После нажатия клавиши <Enter> получим следующий ответ:
х-
0.594 1.2774 1.9001
Это очень поучительный пример. При определении корня из об-
ласти [1.5; 1.95] мы не получали решения, выбрав область изоля-
ции [1.5; 2], затем повторно [1.5; 1.9], хотя по виду графика ко-
рень должен находиться в этих областях изоляции.
Причинами этого являются:
• в случае области изоляции [1.5; 2] log(4-2x) при х=2 не су-
ществует (log 0);
• в случае области изоляции [1.5; 1.9] решения нет потому, что
корень равен 1.9001, т. е. находится вне выбранной области
изоляции.
При задании области изоляции корня необходимо не только пра-
вильно выбрать область [д:,; х-, ], но также согласовать ее с ре-
шаемым уравнением. Значение функции f(x) должно существо-
вать во всей области [х,; х2 ] •

| Пример 8.7 |

Необходимо вычислить корень уравнения
172 Глава 8


из области изоляции [0; -1] с точностью
tol = [0.1,0.01,0.001,0.0001,0.00001,0.000001]

Программа решения задачи имеет вид:
Л
» XI = f z e r o ( ' l o g ( 4 - 2 * х) + х 2 - 2 ' , [0,-1,0.1]);
- 2 * х) + х л 2 - 2 ' ,
» Х2 - f z e r o { 4 o g ( 4 [0,-1], 0.01);

л 1
» Х5 = f z e r o ( ' l o g ( 4 - 2 * х) + х 2 - 2 , [ 0 , - 1 ] , 0.00001);
» X = [Xl,x2,x3,x4,x5]

После нажатия клавиши <Enter> получим следующий ответ:

-0.6367 -0.5906 -0.5994 -0.5994 -0.5945 -0.5945

По результатам расчета видно влияние погрешности на значение
корня. Так, например, если необходимо вычислить значение кор-
ня с точностью два знака после запятой, то достаточно задать
toi=o.oi, а если с точностью четыре знака, то toi=o.ooooi.

Пример 8.8
: ..!....„.„.. ,,... ,'„ .„. .„,.„;,.. , ^ ,. , {
Необходимо определить корень уравнения
In (4 - 2х) + х1 - 2 = 0

из области [0;-l] с выдачей информации о каждой итерации
(число итераций не более 50).
Программа решения задачи и результат имеют вид:
» f z e r o ( ' l o g ( 4 - 2 * х) + х А 2 - 2 ' , [ 0 , - 1 ] , 50)
ans =
Funt-count х f (х)
1 0 -0.613706
2 -1 0.791759
3 -0.436657 -0.225557
4 -0.634142 0.0638411
5 -0.590577 -0.00619106
Алгоритмы и технологии решения уравнений 173

6 -0. 594428 -0. 0.000141692
7 -0. 594518 1.45892 e 008
-0. 594516 -3. 13434 e 006
8
ans =
-0. 5945
6
Корень найден с точностью 10 (данные седьмой и восьмой ите-
раций) за 8 итераций.

Таким образом, функция fzero () позволяет найти все корни
уравнения / ( х ) = 0. Для этого необходимо знать области изоля-
ции корней. Для их определения достаточно построить график
функции y-f(x) и визуально определить области изоляции
всех корней. Существенный недостаток функции f zero о состоит
в том, что она не определяет комплексных корней уравнения.
Из изложенного следует важный вывод: система MATLAB не
имеет функции, которая позволила бы определить все корни
трансцендентного уравнения. Функция solve() не определяет
всех корней уравнения, т. к. она не имеет информации об области
их изоляции. Функция f zero о не находит комплексных корней.
Только совместно эти функции могут найти все вещественные и
комплексные корни. При этом необходимо знать область изоля-
ции всех вещественных корней.
С учетом этих особенностей системы MATLAB компьютерная
технология решения алгебраических и трансцендентных уравне-
ний состоит в выполнении процедур, перечисленных ниже:
• определение области изоляции корня графоаналитическим
методом;
• определение вещественных корней уравнения с помощью
функции f zero о при заданных значениях погрешности tol;
• определение комплексных корней уравнения с помощью
фуНКЦИИ s o l v e (' f (x) ' ) .
Следует при этом иметь в виду, что функция solve (' f (х)') может
выдать некоторые, а иногда и все вещественные корни уравнения
174 Глава 8


8.2.3. Технология определения корней
многочлена с помощью функции rootsQ
Функция roots () имеет вид:
roots(z)

где z — вектор коэффициентов многочлена.
Рассмотрим технологию решения задачи на примерах.

; Пример 8.9

Пусть необходимо определить корни многочлена
5 2
у = 2х - Эх* + 5х* + х +1х + 3.
Решение имеет вид:
» Y = roots([2 -35173])
•у


1.2189 + 1.4110 i
1.2189 - 1.4110 i
-0.2719 + 1.0105 i
-0.2719 - 1.0105 i
-0.3940. t

В случае когда в многочлене отсутствует член хк, то принимает-
ся ак = 0.

| Пример 8.10 ' |

Определить корни уравнения



Будем рассматривать выражение х ш - 1 как многочлен десятой
степени. Тогда программа вычисления корней будет иметь вид:
»z=[l 0 0 0 0 0 0 0 0 0 -1];
» у = r o o t s (z)
Алгоритмы и технологии решения уравнений 175

После нажатия клавиши <Enter> получим следующий ответ:
Y=

-0.8090 + 0.5878 i
-0.8090 - 0.5878 i
-0.3090 + 0.8511 i
-0.3090 - 0.8511 i
0.3090 + 0.8511 i
0.3090 - 0.8511 i
1
0.8090 + 0.5878 i
0.8090 - 0.5878 i


Замечание
Функция roots (z) не позволяет получить решение, если коэффици-
енты многочлена заданы в виде символьных переменных.


8.2.4. Варианты алгебраических
и трансцендентных уравнений
для индивидуальных заданий или решений
Алгебраические уравнения для решения аналитическими мето-
дами представлены в табл. 8.2.
Алгебраические и трансцендентные уравнения для решения чис-
ленными методами перечислены в табл. 8.3.


8.3. Методы решения систем
алгебраических уравнений
Системы уравнений могут быть линейными и нелинейными,
с постоянными и переменными коэффициентами. Решение таких
уравнений возможно аналитическими и численными методами.
Аналитические методы дают решение в общем виде. Такое реше-
ние, в силу своей общности, всегда более предпочтительно, чем
численное, которое дает ответ лишь для конкретных числовых
данных коэффициентов.
Таблица 8.2. Алгебраические уравнения для решения их аналитическими методами

Ответы
Уравнение
№ п/п



1 xi-a = 0




л, = а , х2 = -а 1 ' 3 , хъ = 6

s ъ 2 2
а)х* - аЪх + ах + ax(b-a)-a b
x +(b- =0
2




• л, = — а , х2 = -а , X) = —Ь

(х = 0, я = 0)
3

• хх = -а, х2 = -а , х3 = -Ъ, х45 = ±а/


х, = 1, х2 = 1, л3 = - 2 , х4= -2а
3 2
х* + 2х (1 + а) + х (4а -1) - 2х(1 + а) - 4а = 0
4

со
Таблица 8.2 (продолжение)

Уравнение
№п/п Ответы

-Га
. х, = - 7 ^ , ,х,=3
Х2 =


Га, х3 = 3 , х 4 5 = ±/(-6) 3
• х,=-Га, X, =

г+з(ь>˜а)х -аЬ х
2 3
+ ЗаЬ3=0
'5 При а>0, Ь >0:




/2
• х, = 3 , х2>з = ±i*Ja , х


• * , , 2 = ± ^ . ^з =
+2х2-2а = 0
6 х5 -ах'
108 |/6 .
2"'
_2,/з
• х|2 ±4а , х , - Л
4,5 "2 2

а , х 3 =1



0 Х12=±УГа , х3 = 1, л 4

7
- 5 = ˜Т
х1 + ах5 - х2 - а = 4 \8 8'


6 -А.
/л/5
'7 4
N1
Таблица 8.2 (продолжение)

№п/п Уравнение Ответы

^+ 1
• х =—s
1п2
2'-2(а + Ь) = 0
8

\п(а + Ь) Ы(а + Ь)
х1 = — s i
+ l , x ,2>3= — s
• , i +l t г
In 2 In 2 In 2

JC, =asine 2 ", x2,=±n-asine2a
In sin х- 2а = 0
9

In2a
• x=
2
10 е-2"-2а = 0
In 2a In 2a
• *i=—^-'*2,з=—J˜

5л Зл л
sin ax + cos ax = 0
11
4a 4a 4a
Зл ,л
sinar + tgox = 0
12 л, =
г , x2J=±-
a a
False

13 5k. л.
Зл.
• лг,, = ± — i , х-, 4 = ± — i , x . 6 = ± — i
34 56
12
' 2a ' 2a
2a
179
Алгоритмы и технологии решения уравнений




5




5 +1 j
._
S II t^ •el а
+1
ю с
^
я
сз | -о
1 CN 0
•ч
•Г
1
^
_ -ч _с
m
«О
II
1
1
1
1




•2.3
-
(N

<<

стр. 3
(всего 5)

СОДЕРЖАНИЕ

>>