Лабораторная работа 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) Заключение.