ЛР-3
Лабораторная работа 3

Численные методы решения трансцендентных (нелинейных) уравнений на примере задач по определению термодинамических свойств воды и водяного пара

Общие сведения

Во многих научных и инженерных задачах возникает необходимость решения уравнения вида:   `f(x,p_1,p_2,p_3,....,p_n)=0`,
где `f` - заданная нелинейная функция;
`x` - неизвестная величина;
`p_1,p_2,p_3,....,p_n` - параметры задачи.

Как правило, исследователя интересует поведение решений в зависимости от параметров `p_i`. При каждом фиксированном наборе параметров `p_i` нелинейное уравнение может иметь либо конечное, либо бесконечное количество решений `x`, что соответствует определенному физическому смыслу конкретной задачи. Нелинейные уравнения, содержащие тригонометрические, экспоненциальные, показательные и другие функции, называются трансцендентными.

Решениями или корнями уравнения `f(x,p_1,p_2,p_3,....,p_n)=0` (в дальнейшем `f(x)=0`) называются такие значения `x`, которые при подстановке в уравнение обращают его в тождество.

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

Способы локализации корней многообразны, но зачастую о наличии корня на отрезке `[a;b]` судят по перемене знака функции на концах отрезка. Основанием для применения указанного способа служат следующие теоремы математического анализа.

Теорема 1. Пусть функция `f(x)` непрерывна на отрезке `[a,b]` и принимает на его концах значения разных знаков, т.е. `f(a)*f(b) < 0`. Тогда отрезок `[a,b]` содержит, по крайней мере, один корень уравнения `f(x)=0` .

Теорема 2. Корень уравнения `f(x)=0` будет единственный, если производная `f^'(x)` существует и сохраняет знак внутри интервала `[a,b]`.

На втором этапе решения задачи производится уточнение отделенных корней, т.е. находят значения корней с заданной точностью `(epsilon > 0)`. На этом этапе используют тот или иной итерационный численный метод, позволяющий построить последовательность `x_0, x_1, x_2, ..., x_n` приближений к корню `x`.

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

Суть метода бисекции (половинного деления, дихотомии) заключается в следующем. Пусть требуется с заданной точностью `(epsilon > 0)` найти корень `x ` уравнения `f(x)=0`. Отрезок локализации `[a,b]` будем считать заданным. Предположим, что функция `f(x)` непрерывна на отрезке `[a,b]` и на его концах принимает значения разных знаков, т.е. `f(a)*f(b) < 0`. Согласно методу бисекции за первое приближенное значение корня принимают середину отрезка `x_0=(a+b)/2`. Затем по приближенному значению `x_0` определяют значение функции `f(x_0)`. Далее делают выбор, какой из двух частей отрезка `[a,x_0]` или `[x_0,b]` взять для дальнейшего уточнения корня. Если левая часть уравнения `f(x)` есть непрерывная функция аргумента `x`, то корень будет находиться в той половине отрезка, на концах которой `f(x)` имеет разные знаки. При `f(x_0)` < `0`, задают `a=x_0` , иначе `b=x_0`. После чего проверяют условие `|b-a|> epsilon`. Если оно выполняется, то осуществляют новую итерацию приближения к корню `x_1=(a+b)/2`. Итерационный (повторяющийся) процесс продолжают до тех пор, пока интервал `[a,b]` не станет меньше заданной погрешности `epsilon`. Если условие `|b-a| > epsilon` не выполняется, заканчивают вычисления и считают, что `bar x = x` с заданной точностью `epsilon`. Структурная схема реализации вышеизложенного алгоритма представлена на рисунке ниже. Число итераций при использовании метода бисекции значительно и поэтому скорость сходимости его медленная. Однако при любой ширине отрезка `[a,b]` сходимость его гарантирована. Кроме того, простота реализации метода уменьшает число вспомогательных операций и частично компенсирует увеличение общего времени счета из-за медленной сходимости, а с ростом мощности персональных компьютеров это практически становится незаметным.

Решение уравнения `f(x)=0` методом бисекции (половинного деления).

Метод хорд так же, как и метод бисекции, предназначен для уточнения корня на интервале `[a,b]`, на концах которого левая часть решаемого уравнения `f(x)=0` принимает значения разных знаков. Очередное приближение согласно методу хорд, в отличие от метода бисекции, задается не в середине отрезка локализации, а в точке `x_0`, где пересекает ось абсцисс прямая линия, проведенная через точки `f(a)` и `f(b)`. Такая линия называется хордой (см. рисунок).

Решение уравнения `f(x)=0` методом хорд.

Соотношение, с помощью которого определяется значение последующего приближения по методу хорд, можно вывести из обобщенного уравнения прямой линии, проходящей через три точки с координатами `(a, f(a)), (b, f(b))`, `(x_i, y): (f(a)-y)/(y-f(b))=(b-x)/(x_i-a)`.

После некоторых преобразований получаем окончательную зависимость: `x_i=(b(y-f(b))+a(f(a)-y))/(f(a)-f(b))`.

Приведенные выше рассуждения справедливы для случая представленного на рисунке (метод хорд) , когда значение функции уменьшается с ростом значения аргумента. В случае возникновения обратной ситуации (когда значение функции увеличивается с увеличением аргумента) рекурентная формула метода хорд будет иметь следующий вид: `x_i=(b(y-f(a))+a(f(b)-y))/(f(b)-f(a))`.

Затем по найденному значению `x_i` определяют значение функции `f(x_i)`. Если `|f(x_i)-y| < epsilon`, то процесс решения и нахождения корня уравнения заканчивают, если же условие не выполняется, то производят сужение интервала поиска так, чтобы значения функции на концах отрезка имели разные знаки. При `f(x_i) < 0` задают `a=x_i; f(a)=f(x_i)`, иначе `b=x_i; f(b)=f(x_i)`. После чего вычисляют новое значение приближения и повторяют весь итерационный процесс.

Алгоритм решения нелинейного уравнения `f(x)=0` методом бисекции.

Задание к работе

1. По исходным данным, приведенным в таблице ниже, разработать алгоритм метода бисекции и метода хорд для определения искомого параметра воды и водяного пара.

2. Каждый из методов реализовать в виде программы на языке С# с использованием пакета подпрограмм `wspStu.dll`. Реализовать в форме оконного Windows WinForm или консольного приложений.

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

Вариант Исходные данные Искомый параметр
`1` `p=15"бар, " v = 0.2 "м"^3/("кг")` `h=[2000-:3700] ("кДж")/("кг")`
`2` `p=100"бар, " h = 3300 ("кДж")/("кг")` `t=[330-:570]^0C`
`3` `p=2.5"бар, " x = 0.9` `s=[3.1-:8.3] ("кДж")/("кг"*^0C)`
`4` `x=0.82," " h = 2380 ("кДж")/("кг")` `p=[0.2-:99]"бар "`
`5` `h = 3180 ("кДж")/("кг")" " s=7.0 ("кДж")/("кг"*^0C)` `p=[0.05-:100]"бар "`
`6` `p=55"бар, " h = 3320 ("кДж")/("кг")` `s=[4.0-:8.0] ("кДж")/("кг"*^0C)`
`7` `p=1.5"бар, " s=8.5 ("кДж")/("кг"*^0C)` `t=[140-:590]^0C`
`8` `p=35"бар, " s=6.9 ("кДж")/("кг"*^0C)` `h=[2200-:3750] ("кДж")/("кг")`
`9` `p=1.4"бар, " h = 2990 ("кДж")/("кг")` `s=[5.6-:8.7] ("кДж")/("кг"*^0C)`
`10` `v = 0.35 "м"^3/("кг")," "h = 2850 ("кДж")/("кг") ` `p=[0.01-:100]"бар "`
`11` `p=3"бар, " h = 3150 ("кДж")/("кг")` `t=[150-:575]^0C`
`12` `h=3150 ("кДж")/("кг"), " " v = 0.28 "м"^3/("кг")` `p=[1.0-:92]"бар "`
`13` `h = 3430 ("кДж")/("кг"), " " t=510^0C` `p=[20-:115]"бар "`
`14` `p=0.1"бар, " x = 0.83` `s=[5.1-:8.9] ("кДж")/("кг"*^0C)`
`15` `p=75"бар, " s=6.5 ("кДж")/("кг"*^0C)` `h=[2100-:3800] ("кДж")/("кг")`

Содержание отчета

1) Задание к лабораторной работе и исходные данные.

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

3) Листинг (текст) программы и полученных результатов.

4) Результаты сравнения расчетных значений с табличными тестовыми значениями.

5) Заключение.

    Кафедра «Тепловые электрические станции»