Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Шаговый метод.
ЛАБОРАТОРНАЯ РАБОТА №1
Решение нелинейного уравнения с одной неизвестной. Методы отделения и уточнения корней.
Постановка задачи. Для данного нелинейного уравнения y(x)=0 с одной неизвестной величиной на промежутке [a, b] отделить корни с шагом h (Шаговым методом)и уточнить корень с точностью ε:
- методом половинного деления
- методом Ньютона
- методом простой итерации
Идея метода
Название метода
| Выбор начального значения
| Итерационная формула
| Окончание процесса вычисления
| Шаговый метод
| x=a
| y=f(x) – значение функция в точке x
x1=x+h – следующее значение переменной x
y1=f(x1) - значение функция в точке x1
y*y1< 0 - признак интервала изоляции
| x1< =b
| Метод половинного деления
| [a, b] – интервал изоляции
| x=(a+b)/2 – середина интервала
f(a) – значение функции в точке a
f(x) – значение функции в точке x
если f(a)*f(x)< 0, то выбираем [a, x]
если f(a)*f(x)> 0, то выбираем [x, b]
| |f(x)|< ε
| Метод Ньютона
| x0 = a или x0 = b
f2(x)- вторая производная функции f(x)
f(x0)*f2(x0)> 0
| f1(x) – первая производная функции f(x)
xi+1 = xi - f(xi)/f1(xi)
| |f(xi)|< ε
| Метод простой итерации
(1 способ)
| привести уравнение к виду
x= φ (x)
x0 = a или x0 = b
|φ (a)|< 1
|φ (b)|< 1
если |φ (a)| > |φ (b)|, то x0=a
если |φ (a)| < |φ (b)|, то x0=b
| xi+1= φ (xi)
| |f(xi)|< ε
| Метод простой итерации
(2 способ)
| f1(x) – первая производная функции f(x)
если |f1(a)| > |f1(b)|, то x0=a
если |f1(a)| < |f1(b)|, то x0=b
| с=1/max(|f1(a)|; |f1(b)|)
xi+1 = xi – c*f(xi)
| |f(xi)|< ε
|
Шаговый метод.
Постановка задачи: шаговым методом найти интервал изоляции корня нелинейного уравнения ln(x) - 2·x + 2, 5 = 0 на интервале [1; 2], шаг h = 0, 1.
| Программа на языке CИ
#include < iostream.h>
#include < iomanip.h>
#include < math.h>
double F (double x)
{ return (log(x)-2*x+2.5); }
int main()
{ double a, b, x0, x1, h;
int N;
cout< < " Vvedite a b" < < endl;
cin> > a> > b;
cout< < " Vvedite chislo razbien" < < endl;
cin> > N;
h=(b-a)/N;
cout.precision(5);
cout.setf(ios:: left);
cout< < " _____________________________________" < < endl;
cout< < setw(12)< < " x" < < setw(12)< < " F(x)" < < endl;
cout< < " _____________________________________" < < endl;
x0=a;
cout< < setw(12)< < x0< < setw(12)< < F(x0)< < endl;
while(x1< =b)
{
x1=x0+h;
cout< < setw(12)< < x1< < setw(12)< < F(x1)< < endl;
if(F(x0)*F(x1)< 0)
cout< < " na interv [" < < x0< < ", " < < x1< < " ] est koren" < < endl;
x0=x1;
}
return 0; }
|
|