Численноерешениенелинейногоуравнения. Этапырешения. Классификацияметодовуточнениякорня. Геометрическийсмысл, достоинстваинедостаткикаждогометода

 

1.Методперебора. Прирешениинелинейногоуравненияметодомпереборазадаютсяначальноезначениеаргументаx=aишагh, которыйприэтомопределяетиточностьнахождениякорнейнелинейногоуравнения. ПокавыполняетсяусловиеF(x)*F(x+h)>0 аргументxувеличиваемнашагh (x=x+h). ЕслипроизведениеF(x)*F(x+h) становитсяотрицательным, тонаинтервале [x,x+h] существуетрешениеуравнения. Структограмма метода приведена на рисунке.

Пока F(x)∙F(x+h)>0 Рис. Структограмма для метода перебора
  x=x+h
     

2. Метод половинного деления. При решении нелинейного уравнения методом половинного деления задаются интервал [a,b], на котором существует только одно решение, и желаемая точность ε. Затем определяется середина интервала с=(а+b)/2 и проверяется условие F(a)∙F(c)<0. Если указанное условие выполняется, то правую границу интервала b переносим в среднюю точку с (b=c). Если условие не выполняется, то в среднюю точку переносим левую границу(a=c). Деление отрезка пополам продолжается пока |b-a|>ε. Структограмма решения нелинейных уравнений методом половинного деления приведена на рисунке.

Пока |b-a|>ε
c=(a+b)/2 F(a)∙F(c)<0
 
да нет
b=c a=c

· Метод хорд. При решении нелинейного уравнения методом хорд задаются интервал [a,b], на котором существует только одно решение, и точность ε. Затем через две точки с координатами (a,F(a)) и (b,F(b)) проводим отрезок прямой линии (хорду) и определяем точку пересечения этой линии с осью абсцисс (точка c). Если при этом F(a)∙F(c)<0, то правую границу интервала переносим в точку с (b=c). Если указанное условие не выполняется, то в точку c переносится левая граница интервала (а=с). Поиск решения прекращается при достижении заданной точности |F(c)|< ε. Для определения точки пересечения хорды с осью абсцисс воспользуемся следующей формулой (попытайтесь получить формулу самостоятельно).Структограмма метода хорд показана на рисунке.

Пока |F(c)|>ε
  F(a)∙F(c)<0
 
да нет
b=c a=c

· Метод касательных. При решении нелинейного уравнения методом касательных задаются начальное значение аргумента x0 и точность ε. Затем в точке(x0,F(x0)) проводим касательную к графику F(x) и определяем точку пересечения касательной с осью абсцисс x1. В точке (x1,F(x1)) снова строим касательную, находим следующее приближение искомого решения x2 и т.д. Указанную процедуру повторяем пока |F(xi)| > ε. Для определения точки пересечения (i+1) касательной с осью абсцисс воспользуемся следующей формулой (получите формулу самостоятельно). Условие сходимости метода касательных F(x0)∙F''(x0)>0. Структограмма решения нелинейных уравнений методом касательных показана на рис.

Пока |F(x)|>ε Рис. Структограмма для метода касательных
   
     

·

 

· Метод хорд-касательных. Если в методе касательных производную функции F'(xi) заменить отношением конечных приращений, то получаем расчетную формулу для метода хорд-касательных. Порядок выполнения вычислений в данном методе аналогичен рассмотренному ранее.

· Метод итераций. При решении нелинейного уравнения методом итераций воспользуемся записью уравнения в виде x=f(x). Задаются начальное значение аргумента x0 и точность ε. Первое приближение решения x1 находим из выражения x1=f(x0), второе - x2=f(x1) и т.д. В общем случае i+1 приближение найдем по формуле xi+1 =f(xi). Указанную процедуру повторяем пока |f(xi)|>ε. Условие сходимости метода итераций |f'(x)|<1. Структограмма метода итераций показана на рис.

Пока |f(xi)|>ε Рис. Структограмма для метода итераций
  xi+1 =f(xi)
     

 

34. Численные интегрирования.

 

 

Апроксимация данных.

Program lVl;

uses crt;

var a, b, c, d, a0, a1, a10, a11, p: real; i, n: integer;

x, y, x1, y1, f:array[1..12] of real;

begin

clrscr;

write('n='); readln (n);

write ('x(i) и y(i):');

for i:=1 to n do

begin

write ('x(',i:2,')='); readln (x[i]);

write('y(',i:2,')='); readln (y[i]);

x1[i]:=

y1[i]:=

end;

writeln ('числовыеданныедляаппроксимации:');

for i:=1 to n do begin

write('x(',i:2,')=',x[i]:2:4);

writeln ('y(',i:2,')=',y[i]:2:4);

end;

a:=0; b:=0; c:=0; d:=0;

for i:=1 to n do begin

a:=a+x1[i]; b:=b+y1[i]; c:= c+sqr(x1[i]); d:=d+x1[i]*y1[i];

end;

a10:= (b*c-a*d)/(n*c-sqr(a));

a11:=(n*d-a*b) /(n*c-sqr(a));

a0:=a10;

a1:=a11;

writeln ('параметры аппроксимирующей зависимости:');

writeln ('a0=', a0:2:4);

writeln ('a1=', a1:2:4);

writeln ('y[i]:');

for i:=1 to n do begin

f[i]:= 1/a0+a1*sqrt(x[i]));

write ('x(',i:2,')=', x[i]:2:4);

write ('f (',i:2,')=',f[i]:2:4);

end;

p:=0;

for i:=1 to n do p:=p+abs(y[i]-f[i])/y[i];

p:= p/n*100;

writeln ('Погрешность=',p:2:2,'%');

writeln(1st,’погрешность=’,p:2:2,’%’);

readln

 

Результат Y[i]:

x (1)= f (1)=

x (2)= f (2)=

x (3)= f (3)=

x (4)= f (4)=

x (5)= f (5)=

x (6)= f (6)=

x (7)= f (7)=

x (8)= f (8)=

x (9)= f (9)=

x (10)= f(10)=

x (11)= f (11)=

x (12)= f (12)=

Погрешность равна:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: