Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

ГЛАВА 1. ТРАНСЦЕНДЕНТНЫЕ УРАВНЕНИЯ

1.1. Отделение корней

Во многих научных и инженерных задачах возникает необходимость решения уравнений вида

где заданная функция; неизвестная величина; параметры задачи.

Как правило, исследователя интересует поведение решений в зависимости от параметров При каждом фиксированном наборе параметров уравнение (1.1) может иметь либо конечное, либо бесконечное количество решений х, что соответствует определенному физическому смыслу конкретной задачи.

Так, например, в электродинамике при математическом моделировании электромагнитных волновых колебательных процессов в линиях передачи и резонаторах получают так называемое дисперсионное уравнение вида (1.1). В этом случае параметрами являются частота колебаний, геометрические параметры системы и включений, пространственное распределение диэлектрической и магнитной проницаемостей в электродинамической структуре и т.д. В качестве неизвестного х могут быть выбраны коэффициенты распространения и затухания электромагнитных волн в линиях передачи либо собственные частоты и добротности колебательных систем. Бесконечное множество решений дисперсионного уравнения будет соответствовать бесконечному числу потенциально возможных собственных типов волн (колебаний) в исследуемой системе.

Не нарушая общности задачи, можно поменять местами неизвестное х и любой из параметров т.е. решать уравнение (1.1) относительно другой неизвестной величины.

Решениями или корнями уравнения (1.1) называются такие значения х, которые при подстановке в уравнение обращают его в тождество.

Только для простейших уравнений удается найти решение в аналитическом виде, т.е. записать формулу, выражающую искомую величину х, в явном виде через параметры В большинстве же случаев приходится решать уравнения вида (1.1) численными методами. Хотя иногда, даже при наличии аналитического решения, имеющего сложный вид, бывает проще

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

В результате численного решения уравнения (1.1) получают таблицы зависимостей искомой величины х от параметров На ПЭВМ эти таблицы можно представить в наглядном виде с помощью средств машинной графики. Чаще всего фиксируют все параметры, за исключением одного, который изменяют в интересующем интервале с выбранным шагом и получают одномерные таблицы и графики на плоскости. Изменяя другие параметры, получают многомерные таблицы, а на графиках - семейства кривых.

Численное решение уравнения (1.1) обычно проводят в два этапа. На первом этапе необходимо отделить корни уравнения, т.е. найти такие интервалы изменения переменной х, где расположен только один корень. По сути дела, на этом этапе находят приближенные значения корней с погрешностью, задаваемой длиной каждого интервала. Нередко отделение корней удается провести, не обращаясь к математическим методам и алгоритмам, на основании физического смысла задачи или из анализа ее упрощеной математической модели. На втором этапе проводят уточнение отделенных корней т. е. находят корни с заданной точностью, для этого известен богатый набор алгоритмов и программ, ряд которых будет приведен нами в следующих разделах настоящей главы.

Рассмотрим графический или табличный способ отделения корней уравнения (1.1), который используется, когда отсутствует информация о расположении корней. В интересующей нас области изменения неизвестного при фиксированных параметрах вычислим ряд значений левой части уравнения (1.1) и результаты поместим в табл. 1.1, по которой можно построить график (рис. 1.1).

Рис. 1.1. График левой части уравнения (1.1)

Таблица 1.1

С точностью до выбранного шага (расстояния между точками из графика (таблицы) определяются приближенные значения корней уравнения (1.1). Уменьшая шаг в окрестности каждого корня, можно повысить точность определения корней. Однако такой способ требует большого объема вычислений. Конечно, для сравнительно простых уравнений, у которых отсутствуют параметры, графическим методом удается провести не только отделение,

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

Если левая часть уравнения (1.1) является непрерывной функцией аргумента х, то для отделения корней не обязательно строить график этой функции. В этом случае корни уравнения будут расположены между точками таблицы, где изменяется знак функции

Шаг изменения аргумента х при вычислении табл. 1.1 выбирается так, чтобы он был меньше расстояния между корнями. Только в этом случае удается отделить корни уравнения.

Рис. 1.2. Блок-схема программы табличного метода решения уравнения (1.1)

Программу, реализующую табличный метод отделения корней, составим в соответствии с блок-схемой рис. 1.2, где блоки с нулевым номером входят в основную программу, а блок 1 представляет собой подпрограмму. В основной программе в диалоговом режиме задаем интервал шаг изменения аргумента X и параметры уравнения Затем в цикле обращаемся к блоку 1, где осуществляется вычисление левой части уравнения, и выводим на алфавитно-цифровой дисплей результаты в виде таблицы либо на графический дисплей - в виде графика.

В качестве примера составим программу отделения корней уравнения

где функция Бесселя первого рода порядка.

Функции Бесселя будем вычислять с помощью ряда [36]

Параметрами левой части уравнения (1.2) являются величины: орядок функции Бесселя, допустимая погрешность вычисления ряда (1.3). Ряд (1.3) абсолютно сходящийся, поэтому погрешность его вычисления определяется абсолютной величиной первого отброшенного члена.

На языке Бейсик (программа 1.1В) основная программа занимает строки 10-90, а подпрограмма вычисления левой части уравнения (1.2) - строки 100-190.

В строке 10 описывается массив для размещения параметров левой части решаемого уравнения. Затем в строке 20 находятся операторы диалогового ввода с клавиатуры интервала и шага а в строке 30 - операторы ввода количества параметров уравнения В строке 40 в цикле по переменной К последовательно задаются значения параметров Заголовок цикла для изменения аргумента X левой части уравнения находится в строке 50. В этом цикле осуществляется обращение к подпрограмме вычисления левой части решаемого уравнения (строка 60) и выводится на дисплей табл. 1.1 (строка 70). Для того чтобы иметь возможность без повторных запусков программы изменять параметры задачи, осуществляется в конце основной программы безусловная передача из строки 90 на ее начальные исполняемые операторы. Поэтому для окончания работы с программой придется прервать ее выполнение с клавиатуры

В подпрограмме функции Бесселя сначала вычисляется множитель (строки 100-110), где степенная функция и факториал определяются в одном цикле путем последовательного умножения. Члены ряда (1.3) получены по рекуррентной формуле

(строка 130), которая автоматически учитывает, что ряд знакопеременный за счет множителя и осуществляет накопление факториалов в знаменателе ряда (1.3). Суммирование ряда осуществляем до тех пор, пока (строка 140). Операторы инициализации счетчика членов ряда, начального значения суммы ряда и вычисления величины - находятся в строке 120.

При практической работе на ПЭВМ рекомендуется для проверки сравнить получаемые результаты с табличными значениями функций Бесселя. Опытным путем можно определить границы применимости ряда (1.3) в зависимости от аргумента х и порядка

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

В программе 1.1Р параметры передаются в подпрограмму-функцию как глобальные переменные. Преобразование вещественной переменной в целую осуществляется с помощью стандартной функции ROUND.

Использование условного оператора, проверяющего переменную связано с тем, что при использовании одного из компиляторов с языка Паскаль создавалась программа, приводящая к прерыванию при малых аргументах X, связанному с исчезновением порядка при выполнении операции возведения в квадрат.

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

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление