Метод касательный блок схема





Метод касательный блок схема
Метод касательный блок схема

В этой лекции рассматриваются методы решения нелинейных уравнений вида F(x)=0. Приводятся блок-схемы и примеры программ. Будут рассмотрены четыре метода - метод простых итераций, метод касательных (называемый также методом Ньютона), метод хорд и метод бисекций.

Метод простых итераций.

Метод простых итераций применяется для решения уравнений частного вида, когда уравнение может быть записано в виде F(x) = x - f(x) =0. На рисунке 3.1 приведена геометрическая интерпретация метода .

Рис 3.1 Геометрическая интерпретация метода простых итераций

На рисунке показаны два графика для функций у=x и y=f(x). Точки пересечения этих кривых определяют корни уравнения x - f(x) = 0. Эти корни обозначены r1 и r2. Для нахождения корня методом простых итераций предлагается следующая процедура. Выберем произвольную точку x0 на оси x. Проведем перпендикуляр из точки x0 до пересечения с кривой y=f(x). В качестве первого приближения к корню возьмем точку x1=y(x0). Из точки x1 проведем перпендикуляр до пересечения с кривой y=f(x). В качестве второго приближения к корню выберем точку x2=f(x1). Продолжая этот процесс, можно видеть, что каждое последующее приближение к корню определяется через предыдущее по формуле Справедливо следующее утверждение (без доказательства). Если |df(x)/dx|<1 в точке пересечения графиков y=x и y=f(x), тогда итерационный процесс (3.1) сходится к этой точке. В нашем примере такой точкой является точка x=r1. Такие корни называются притягивающими для метода простых итераций. Корень r2 в нашем примере является отталкивающим и не может быть найден методом простых итераций (3.1). Таким образом, очевидным недостатком метода простых итераций является то, что не все корни уравнения x-f(x)=0 могут быть с его помощью найдены. Блок-схема алгоритма для решения уравнений методом простых итераций дана на рис. 3.2.

Рис 3.2 Блок-схема для решения уравнения x-f(x)=0 методом простых итераций

Пример программы, реализующей приведенный выше алгоритм, для решения уравнения x=ln(x)+2. Текст программы хранится в файле l3_1.m clear all x=input(' x-->'); eps=input(' eps-->'); while abs(x-f(x)) > eps x=f(x); end disp('root=') x Заметим, что в приведенной программе нам впервые потребовалось описать, кроме стартового скрипта, еще функцию для вычисления f(x), которая хранится в файле f.m function y=f(x) y=log(x)+2;

Метод Ньютона (касательных)   

В методе Ньютона решается уравнение F(x)=0. На рис. 3.3 показана геометрическая интерпретация метода Ньютона для решения нелинейных уравнений.

 

Рис. 3.3 Геометрическая интерпретация метода Ньютон решения нелинейного уравнения F(x)=0 Алгоритм метода Ньютона для поиска корней уравнения F(x)=0 состоит в следующем. 1. Выберем произвольную точку x0 на оси x и погрешность eps определения корня. 2. Проведем касательную к функции F(x) в точке (x0,F(x0)). Определим точку, в которой касательная пересекает линию y=0. Обозначим эту точку x1. 3. Вычислим значение функции F(x) в точке x1. Если |F(x1)|>eps или |x0-x1|>eps, тогда в качестве новой точки x0 выберем x1 (т.е. x0=x1) и перейдем к пункту 2. Если |F(x1)|<eps и |x0-x1|<eps - считаем , что корень найден с требуемой погрешностью eps и выходим из программы. Уравнение касательной к функции F(x) в точке (x0,F(x0)) имеет вид Решая уравнение y(x1)=0 получим Блок-схема программы для решения нелинейного уравнения методом Ньютона

Figure 4. Блок- схема программы для решения нелинейного упавнения F(x)=0 методом Ньютона

Рис. 3.4 Блок- схема программы для решения нелинейного упавнения F(x)=0 методом Ньютона В этой блок-схеме через F1(x) обозначена функция вычисляющая производную от функции F(x). Пример программы, соответствующий приведенной блок-схеме: (файл l3_2.m) %Пример программы для решения нелинейного уравнения function l3_2() clear all x0=input('x0-->'); eps=input('eps-->'); x1=x0-F(x0)/F1(x0); while abs(F(x1))>eps || abs(x0-x1)>eps x0=x1; x1=x0-F(x0)/F1(x0); end fprintf('root=%e',x1); % вывод найденного корня на экран function y=F(x) y=x-log(x)-2; function y=F1(x) y=1-1/x; В файле l3_2.m описаны три функции l3_2(), F(x), F1(x). В одном файле в матлабе можно описывать несколько функций, но при этом функции , имена которых не совпадают с именем файла, видны только в пределах этого файла, т.е. в данном случае функции F(x) и F1(x) известны только при работе функции l3_2.

Метод хорд 

Метод хорд применяют для решения нелинейных уравнений F(x)=0 обычно в тех случаях , когда получить выражение для производной dF(x)/dx либо трудно, либо оно имеет громоздкий вид . В этом случае выражение для производной в формуле (3.3) заменяют его разностным аналогом, после чего формула (3.3) принимает вид Можно дать и геометрическую интерпретацию метода хорд (рис. 3.5).

 

Рис 3.5 Геометрическая интерпретация метода хорд для решения нелинейного уравнения F(x)=0 Для начала решения выбираются две произвольные точки на оси x. На нашем рисунке это точки x0 и x1. Затем через две точки (x0,F(x0)) и (x1,F(x1)) проводится хорда. Эта хорда пересекает линию y=0 в точке x2. Эта точка считается первым приближением к корню. Далее , если |F(x2)|>eps или |(x0-x1)|>eps (eps - требуемая погрешность в вычислении корня) , тогда точки x1 и x2 выбирают в качестве новых стартовых точек , т.е. x0=x1, x1=x2 и вновь проводят хорду и т.д. Критерием окончания итерационного прцесса считается достаточная близость модуля значения функции |F(x2)| к нулю , а также достаточно близкие значения двух поледовательных приближений к корню x0 и x1. Чтобы найти, в какой точке хорда, проведенная через точки (x0,F(x0)) и (x1,F(x1)), пересекает ось x, напишем уравнение этой хорды: y(x)=F(x1) + (F(x1)-F(x0))(x-x1)/(x1-x0). Решая уравнение y(x2)=0, получаем формулу (3.4). Блок-схема программы для решения уравнения F(x)=0 методом хорд имеет следующий вид (рис 3.6).

Figure 6. Блок-схема программы для решения нелинейного уравнения F(x)=0 методом хорд

Рис 3.6 Блок-схема программы для решения нелинейного уравнения F(x)=0 методом хорд Читателю предлагается самостоятельно написать программу для решения нелинейного уравнения методом хорд, соответствующую блок-схеме на рис. 3.6.

Метод деления отрезка пополам (бисекций)

Метод бисекции для решения уравнения F(x)=0 можно применять, если Вам известен такой отрезок [x0,x1], на границах которого функция F(x) имеет разные знаки. Проверить, что функция имеет разные знаки на концах отрезка [x0,x1], можно, вычислив произведение F(x0)F(x1). Если у этого произведения отрицательный знак - значит функция имеет разные знаки на концах отрезка. Разные знаки функции на концах отрезка гарантируют, что внутри этого отрезка имеется хотя бы один корень. В этом случае применяется следующий алгоритм поиска корня: 1. Находим середину отрезка x2=(x1+x0)/2. 2. Проверяем, на какую половину отрезка попал корень. Для этого проверяем знак произведения F(x0)F(x2). Если знак этого произведения меньше нуля - значит корень попал на первую половину отрезка, т. е. на отрезок [x0,x2]. Тогда переносим точку x1 в x2. Если знак произведения положителен - значит корень попал на вторую половину отрезка т.е. на отрезок [x2,x1]. Тогда переносим точку x0 в x2. Таким образом получаем новый отрезок [x0,x1], на котором локализован корень и который в два раза меньше исходного. 3. Проверяем длину нового отрезка [x0,x1]. Если она меньше требуемой точности определения корня - тогда окончание работы. Если же длина вновь полученного отрезка больше требуемой точности определения корня, тогда переход на пункт 1. В дальнейшем требуемую погрешность в определении корня будем обозначать eps. Блок-схема программы для решения уранения F(x)=0 методом бисекций дана на рис. 3.7 .

 

Рис 3.7 Блок-схема программы для решения уравнения F(x)=0 методом бисекций

Программа , написанная в соответствии с блок-схемой хранится в файле l3_3.m . %Пример программы для решения нелинейного уравнения F(x)=ln(x)+2-x=0 function l3_3() fprintf('Поиск корня нелинейного уравнения с погрешностью eps\n'); eps=input('eps-->'); x0=rand(1); x1=x0+rand(1); %Ввод отрезка [x0,x1] для поиска корня while F(x0)F(x1)>0 fprintf('Введите отрезок [x0,x1] для поиска корня \n'); x0=input('x0-->'); x1=input('x1-->'); if F(x0)F(x1)>0 fprintf('на отрезке [%f,%f] корня нет\n',x0,x1); end end %поиск корня while abs(x1-x0)>eps x2=(x0+x1)/2; if F(x0)F(x2)<0 x1=x2; else x0=x2; end end fprintf('корень локализован на отрезке [%e,%e]\n',x0,x1); function y=F(x) y=x-log(x)-2;

Задачи к лекции 

Задача 1. Имеется уравнение F(x)=ln(x)+a-x=0. Написать программу для построения графика зависимости корней этого уравнения от а, для а принадлежащего интервалу [2,6]. Решить задачу в четырех  вариантах, используя методы простых итераций, ньютона, хорд и бисекций.   previous next home
X


Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Метод касательный блок схема

Похожие новости:


  • Как сделать вкусную подливу к голубцам
  • Балык из судака в домашних условиях
  • Расчетная схема фермы 12 м
  • Простая схема салфетки с описанием
  • Картина из папье маше своими руками