Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторна по ЧМ 1

.docx
Скачиваний:
0
Добавлен:
26.03.2021
Размер:
553.08 Кб
Скачать

Лабораторна робота №1

виконав студент групи АК-3-2ск

Козловський Євгеній

Варіант 14

Постановка задачі

Знайти корінь нелінійного рівняння методами:

  1. ділення відрізка навпіл;

  2. простої ітерації;

  3. Ньютона

З заданою точністю ε, де , .

Знаходження кореня (розв'язку) нелінійного рівняння складається з двох етапів:

1) відокремлення коренів;

2) уточнення коренів

Відокремлення кореня (коренів) виконаємо графічним методом. Для цього на декартовій площині побудуємо графік функції f(x) і знайдемо інтервал [a,b] (або інтервали, якщо коренів декілька), який містить один єдиний корінь рівняння f(x)=0. Точки перетину графіка функції f(x) з віссю OX і є коренями рівняння f(x)=0.

Рисунок 1.1 – Графік функції

З графіків випливає, що найменший додатній корінь знаходиться на інтервалі [a,b], де а=1, b=2.

Для того, щоб переконатись в цьому, перевіримо критерій існування кореня на відрізку [a,b]: f(a)f(b)<0, тобто функція f(x) на кінцях відрізку [a,b] повинна приймати різні знаки . Отже, на інтервалі [a,b]=[1,2] дійсно існує єдиний корінь рівняння f(x)=0. На цьому етап відокремлення кореня закінчено. Переходимо тепер до етапу уточнення кореня.

Уточнення кореня методом ділення відрізка навпіл

Знаходимо середину відрізка [a,b], яку позначимо точкою c=1,5, обчислюємо значення функції в цій точці f(a)f(с)=0,119. Так як f(a)f(c)>0, то на відрузку [a,c] маємо корінь.

Відрізок [с,b] відкидаємо і залишаємо відрізок [a,c], який для зручності знову позначимо через [a,b].

Перевіримо умову зупинки метода: b-a<ε, де , 1.5-0.119> ε.

Оскільки Δ>ε, тобто заданої точності ми ще не досягли, то переходимо до наступних ітерацій, тобто знову ділимо зменшений відрізок [a,b] навпіл і послідовність дій повторюється поки умова не виконається.

Рисунок 1.2 – Обчислення а, b за допомогою програмного забезпечення MatCad

Уточнення кореня методом простої ітерації

Нелінійне рівняння перетворимо до канонічного виду .

Перевіримо достатню умову збіжності метода простої ітерації. Для цього знайдемо похідну.

,

Будуємо графік функції |g(x)|

Рисунок 1.1 – Графік функції |g(x)|

Зробимо декілька кроків методом простої ітерації:

Рисунок 1.4 – Розрахунок методом простої ітерації

Уточнення кореня методом Ньютона

Знайдемо похідну , і обчислимо декілька ітерацій:

Рисунок 1.5 – Розрахунок методом простої Ньютона

Програми

Уточнення кореня методом ділення відрізка навпіл

#include <iostream>

#include <stdio.h>

#include <math.h>

using namespace std;

int main()

{ setlocale (LC_ALL, "Russian"); // виведення російської мови

double a,b,c,e,fc,fa,ffa;

printf("Введите а = ");

scanf("%lf",&a);

printf("Введите b = ");

scanf("%lf",&b);

do { c = (a+b)/2;

fc =tan(0.36*c+0.4)-c*c+1;

fa = tan(0.36*a+0.4)-a*a+1;

ffa = fa*fc;

e = fabs(b-a);

if (ffa > 0) {

a = c ; }

else if (ffa < 0) {

b = c; }

e = (b-a) < 0 ? (b-a)*(-1) : b-a;

printf("a=%1.4f \n", a );

printf("b=%1.4f \n", b );

printf("С=%1.4f \n", c );

printf("e=%1.4f \n \n", e );

} while ( e > 0.001 );

return 0;}

Рисунок 1.6 – Результат виконання

Уточнення кореня методом простої ітерації

#include <math.h>

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

setlocale (LC_ALL, "Russian") ; // виведення російської мови

double d ,e = 0.001, x0, z ;

printf("Введите x0 = ");

scanf("%lf",&x0);

for(;;)

{

z = sqrt(tan(0.36*x0+0.4)+1);

if (fabs(z - x0) < e) break;

d= z-x0;

x0 = z;

printf("z=%1.4f \n", z );

printf("d=%1.4f \n \n", d );

}

return 0;

}

Рисунок 1.7 – Результат виконання

Уточнення кореня методом Ньютона

#include <math.h>

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

setlocale (LC_ALL, "Russian");

double f, df,y,eps=0.001,y1,w;

int i = 0;

printf("Введите y0 = ");

scanf("%lf",&y);

do {

f = 3*pow(y,2)+7*sin(y);

df = 7*cos(y)+6*y;

y1=y;

y = y - f / df;

w=fabs(y-y1);

i++;

printf("y=%1.4f \n", y );

printf("w=%1.6f \n \n", w );

} while (fabs(f) > eps );

return 0;

}

Рисунок 1.7 – Результат виконання

Висновок: на даній лабораторній роботі знайшов корінь нелінійного рівняння за допомогою методів:

1) ділення відрізка навпіл, визначивши, що корінь знаходиться в проміжку від 1.56 до 1.561;

2) простої ітерації, визначивши, що корінь знаходиться в проміжку від 1.559 до 1.56;

3)метод Ньютона, визначивши, що корінь знаходиться в проміжку від 1.56 до 1.564.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]