- •Глава 2
- •2.1. Введение
- •Относительные и абсолютные ошибки
- •2.3. Ошибки, содержащиеся в исходной информации
- •2.4. Ошибки ограничения
- •2.5. Ошибки округления
- •2.6. Распространение ошибок
- •2 .7. Графы вычислительных процессов
- •Пример 1
- •2.9. Памятка программисту
- •Упражнения
- •Численное решение уравнений
- •5.1. Введение
- •5.2. Метод последовательных приближений
- •5.3.Усовершенствованный метод последовательных приближений
- •5.4. Метод ньютона — рафсона
- •5.5. Случай почти равных корней
- •5.6. Сравнение методов и их ошибок округления
- •5.7. Корни многочленов
- •5.8. Влияние неточности коэффициентов многочлена
- •5.9. Системы уравнений
- •5.10. Комплексные корни
- •5.11. Нахождение исходного приближения
- •Упражнения
- •Глава 8
- •8.1. Введение
- •8.3. Ошибки округления
- •8.5. Влияние погрешностей коэффициентов. Достижимая точность решения
- •8.6. Итерационные методы решения систем линейных уравнений
- •8.7. Сравнение методов
- •8.8. Практический пример 10: проведение кривой методом наименьших квадратов
- •Лекция №1 Численное интегрирование
- •Лекция №2
- •Правило Симпсона.
- •Метод Гаусса
- •Методы прогноза и коррекции
- •Анализ ошибок при использовании метода прогноза и коррекции
5.11. Нахождение исходного приближения
Приближенное значение корня уравнения
F(x)=0
иногда известно из физических соображений. Если же это значение неизвестно, то его часто можно найти с помощью грубого анализа функции.
В основном этот анализ сводится к тому, что отыскиваются такие два значения х, для которых F(x) имеет противоположные знаки, т. е. определяются такие х* и х*, для которых
F(x*)>0
и
F(x*)<0.
Тогда между х* и x* есть по крайней мере одна точка, где F (х) = 0. В качестве исходного приближения для нахождения корня F (х) можно взять
x0 = (1/2) (х* + х*).
Одним из путей для нахождения х* и х* является подбор более простого уравнения, корни которого расположены вблизи от корней исходного. Например, если
то при 0 х /2 первый член меняется между 0 и 1/10. Так как по сравнению с двумя другими членами эта величина мала, то рассмотрим упрощенное уравнение для двух крайних значений (sin x)/10:
0 + x3 — 1 = 0
и
(1/10) + x3 - 1 = 0.
Корни каждого из этих двух простых уравнений равны соответственно
х
*
=
+1
Проверяем для исходного уравнения
F (х*) =0.084
и
F(x*)= - 0.18
Таким образом, в качестве первого приближения можно принять
x0 = (1/2)(1+0.965489) = 0.982749
Для приближенного нахождения корней многочленов существует много специальных приемов. Заинтересованному читателю рекомендуем гл. 2 книги К. Кунца.
ПРОЦЕСС РОСТА
Следующий практический пример иллюстрирует круг вопросов, относящихся к приложениям численных методов. Этот пример показывает, как при решении научной задачи
Рис. 5.11. Осаждение германия из газовой смеси (практический пример 7).
возникает полиномиальное уравнение, как следует его задавать, а также как иногда оно может упрощаться применительно к конкретной ситуации.
Когда пары иода и гелия (I2 и Не) проходят над поверхностью германия (Ge), то некоторое количество германия вступает в реакцию с иодом и образует GeI2 и GeI4. Выходящие пары состоят из I, I2, GeI2, GeI4 и He (рис. 5.11).
Если теперь пропускать этот пар над кристаллической подложкой из германия, то некоторое количество GeI2 диссоциирует на Ge и GeI4; германий при этом осаждается на подложке. Добавляя определенные примеси в подложку и в осаждаемый кристалл, можно изготовлять различные полупроводниковые приборы.
Вкратце анализ сводится к следующему. Предположим, что полное давление постоянно и равно 760 мм рт. ст.
Предположим также, что газы подчиняются законам идеального газа. Рассмотрим реакции, которые протекают в ходе процессов сублимации и осаждения:
I2(s) 2I(s); (5.24)
Ge(m) + I2(s) GeI2(s); (5.25)
Ge(m) + GeI4(s) 2GeI2(s). (5.26)
Индексы (m) и (s) поставлены для того, чтобы обозначить, находится ли вещество в твердом или в газообразном состоянии.
Для некоторой фиксированной температуры Т отношения парциальных давлений различных газов, возведенных в соответствующую степень, называются константами равновесия. Например, в реакции (5.24)
(pI)2/pI2 = K24 ,
где pI — парциальное давление атомарного иода (I),
pI2, — парциальное давление молекулярного иода (I2),
log10K24 = 8.362 — 7991/Т.
Примем температуру равной
Т=273.2°К=0°С.
Тогда
К24 = 1.30*10-21 = (pI)2/pI2. (5.27)
А
налогичным
образом можно найти константы равновесия
для реакций
(5.25) и
(5.26)
Парциальное давление твердого германия не входит в эти соотношения, так как в первом приближении оно не зависит от внешнего давления.
Так как полное давление в смеси равно 760 мм рт. ст., то имеем .
Рполн = 760 = PI+PI2+ PGeI2 + РGeI4 + PHe . (5.30)
Далее,
из закона сохранения вещества следует
где Х есть отношение давления гелия к давлению иода. Это отношение устанавливается в начале опыта и впоследствии должно оставаться постоянным. Величина Х определяется экспериментально; в том эксперименте, который описывается здесь, это отношение составляло 49.36.
Уравнения от (5.27) до (5.31) являются пятью уравнениями относительно пяти неизвестных парциальных давлений. Если обозначить Z* = РGeI4, то можно свести эти пять уравнений к одному уравнению для Z, а именно
О
стальные
парциальные давления можно найти из
соотношений
При заданных T= 273.2° и Х= 49.36 уравнение (5.32) принимает вид
9.972*101Z4 + 2.870565*10-7Z2 + 6.674356*10-16Z - 7.600*102 = 0 (5.33)
Уравнение (5.33) представляет собой многочлен четвертой степени относительно Z. Его можно легко решить методом Ньютона — Рафсона. Программа для решения этого уравнения приведена на рис. 5.12.
Из физических соображений известно, что парциальное давление GeI4 лежит между 0 и 10 мм рт. ст.; в качестве исходного приближения Zo мы взяли 5.0.
Метод Ньютона — Рафсона был изложен в виде последовательных итераций, причем каждой очередной итерации присваивался новый индекс (1, 2, 3, ...). Нет никакой необходимости сохранять это обозначение в программе; ведь все, что требуется для вычислений — это результаты предшествующей и текущей итераций. В программе на на рис. 5.12 переменная Z представляет собой результат предшествующей итерации (первоначально равный 5.0), а переменная ZNEW — новое значение, которое вычисляется по формуле Ньютона — Рафсона.
Мы ожидаем, что итерационный процесс будет сходиться, но опытный программист всегда примет меры к тому, чтобы избежать такой ситуации, когда ошибки в исходной информации или в программе могли бы вызвать неопределенно долгую работу ЭЦВМ без выхода из цикла. Поэтому мы введем специальную переменную, так называемый счетчик. В программе этой переменной присвоено наименование ITN. Если процесс не сойдется после 15 попыток, то он должен быть прекращен.
Значения функции и производной вычисляются по рекуррентным формулам, приведенным в разд. 5.7. Конечно, можно было бы написать
и тогда вся итерационная формула выразилась бы с помощью одного длинного арифметического оператора. Мы предпочли сделать вычисления так, как это показано в программе, отчасти потому, что это немного быстрее
( Читатель может сам убедиться, что в приведенной программе на вычисление F{Z) и F'(Z) затрачивается на три умножения меньше, чем потребовалось бы в случае явной формулы.),
отчасти потому, что такой способ вычисления лучше согласуется с использованием переменных с индексами, чему будет посвящена гл. 7.
После вычисления нового значения ZNEW мы должны проверить, не стали ли два очередных приближения достаточно близки друг к другу; это укажет, что достигнута
необходимая точность. Согласно общему правилу, не следует производить это испытание по абсолютной точности
1 5 |
6 |
7 FORTRAN STATEMENT |
|
|
Z = 5.0 |
|
|
ITN = 0 |
41 |
|
B = 99.72 |
|
|
C = B |
|
|
B = 0.0 + Z * B |
|
|
C = B + Z * C |
|
|
B = 2.870565E-7 + Z * B |
|
|
C = B + Z * C |
|
|
B = 6.674356E-16 + Z * B |
|
|
C = B + Z * C |
|
|
B = -760.0 + Z * B |
|
|
ZNEW = Z – B / C |
|
|
IF (ABSF((Z – ZNEW ) / ZNEW ) – 1 0E-5 ) 42 , 43 ,43 |
43 |
|
ITN = ITN + 1 |
|
|
IF ( ITN – 15 ) 44 , 45 , 45 |
44 |
|
PRINT 46 , ZNEW |
|
|
Z = ZNEW |
|
|
60 T0 41 |
45 |
|
STOP / 234 |
|
|
|
|
|
|
1 5 |
6 |
FORTRAN STATEMENT
|
42 |
|
PRINT 46 ZNEW |
46 |
|
FORMAT (F15 7) |
|
|
STOP |
|
|
END |
|
|
|
Рис. 5.12. Программа для нахождения корней многочлена четвертого порядка с помощью метода Ньютона — Рафсона (практический пример 7).
совпадения двух очередных приближений. Например, если бы корень оказался порядка 10-4, то было бы бессмысленно
проверять, не отличаются ли два очередных приближения на 10-3 процесс остановился бы почти немедленно, а значение «корня» имело бы очень небольшую относительную точность. С другой стороны (хотя здесь этот случай и невозможен), если бы корень был порядка 105, а мы производили бы проверку на совпадение с точностью 10-3, то ошибки округления привели бы к тому, что процесс вообще не удалось бы закончить. Очевидное решение пробуемы состоит в том, чтобы проверять относительную точность совпадения двух очередных приближений. Поэтому в программе проверка состоит в сравнении абсолютной величины разности между двумя последовательными приближениями, деленной на последнее из них, с допуском, скажем, 10-5 По-видимому, такая проверка в данном случае достаточна, если учесть ограниченную точность исходной информации,
3.7652427
2.8596258
2.2261980
1.8423436
1.6864486
1.6620756
1.6615289
1.6615286
Рис. 5.13 Выходная печать для программы рис. 5.12 ( практический пример 7 ).
Если процесс сошелся, то мы печатаем программы окончательное значение ZNEW с помощью оператора PRINT и прекращаем вычисления. Если процесс не закончился, то мы прове- ряем с помощью переменной ITN, сделано ли уже 15 итераций, и при достижении этого предела останавливаем программу. В противном случае мы присваиваем переменной Z (результату предшествующей итерации) значение ZNEW, возвращаемся к началу программы и вычисляем очередное приближение.
Чтобы можно было наблюдать сходимость, в итерационный цикл введен оператор PRINT. Обычно этого не делают.
Результаты вычислений показаны на рис. 5.13; быстрая сходимость метода Ньютона — Рафсона очевидна. Парциальные давления получаются равными
РGeI4 = 7.621*100
pI2 = 1.428*10-12
pI = 4.3*10-17
pGeI2 = 1.573*10-8
рHe = 7.524*102
Читатели, вероятно, уже заметили, что в уравнении (5.33) коэффициенты при Z2 и Z гораздо меньше, чем при Z4 и Z0 . Если пренебречь членами, содержащими Z2 и Z, и решать уравнение
9.972*101Z4 — 760 = 0 ,
то получится тот же результат, а именно Z == 1.6615286. При этом метод Ньютона — Рафсона даст те же последовательные приближения, как на рис. 5.13.
