Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота Лавренюк Анастасії.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
229.89 Кб
Скачать

2.3.Використання програмних засобів

Для досягнення даної мети ми використаємо програму розроблену мовою С++, для розв’язку даного рівняння. C++ - компільована статично типізована мова програмування загального призначення. Ми обрали саме цю мову оскільки вона поєднує властивості як високорівневих, так і низькорівневих мов. Область застосування цієї мови включає створення операційних систем, різноманітних прикладних програм, драйверів пристроїв, додатків для вбудованих систем, високопродуктивних серверів, а також розважальних доданків.

Для перевірки знайдених результатів, ми скористаємося програмою Mathcad. Mathcad - система комп’ютерної алгебри з класу систем автоматизованого проектування, орієнтована на підготовку інтерактивних документів з обчисленнями і візуальним супроводом. Отож, наш приклад буде вирішено і аналітичним способом.

2.4 Алгоритми розв’язку задач

Для вирішення поставленої задачі, необхідно розробити алгоритм дій. Для обох методів можна обрати спільний алгоритм:

  1. за допомогою функції return ввести функцію;

  2. обрати тип даних та ввести змінні;

  3. вивести на екран рядок для введення користувачами даних;

  4. вивести на екран результати.

Можна скористатися наступними алгоритмами:

Рис.2.1 Метод ітерацій

xn+1 = φ(xn)

Δ = xn+1 xn

xn: = xn+1

так

ні

Вибір початкового значення xn

Обчислення xn +1 і f(xn +1)

так

ні

xn = xn +1

Рис. 2.2 Метод Ньютона

Для роботи програми використаємо наступні дані:

#include <cmath> - бібліотека використана в програмі, оскільки вона відповідає за виведення тригонометричних функцій, використання модуля,

#include <iomanip> - бібліотека для використання setw(),

#include <iostream> - ця бібліотека використана, оскільки вона відповідає за ввід і вивід даних (подібно до stdio.h в Сі), в даній програмі вона використовується для об’єктів cout, cin;

x – початкове значення;

eps – точність обчислення;

cout – вивід на екран;

return - повертає значення, переважно з користувацьких функцій, як параметри функціонального запиту;

douoble – тип даних з плаваючою крапкою;

for – цикл, який повторює дії, поки не виконається задана умова, тобто поки не набуде істинного значення.

3. ПРАКТИЧНЕ ЗАСТОСУВАННЯ МЕТОДІВ

3.1 Програми мовою С++

Наведена програма (рис.3.1) розроблена для розв’язання алгебраїчних рівнянь методом простих ітерацій із застосуванням конкретного рівняння.

#include <cmath>

#include <iomanip>

#include <iostream>

using namespace std;

double f(double x)

{

return 2*sin(3*x) - x;

}

double g(double x)

{

return x + 0.5*f(x);

}

int main()

{

double x;

double eps;

cout<<"Введіть початкове значення : ";cin>>x;

cout<<"Введіть точність обчисленння : ";cin>>eps;

for(double iter = 1; eps < fabs(f(x)); iter = iter + 1)

{

system("cls");

//*Ітерацій може бути дуже багато, тому пропоную

//використовувати не

//цілі, а дабл як лічильник, хоча, якщо рішення не знайшли

//за 10-100 ітерацій, то рішення для даного коефіцієнту

//при f(x) в g(x) не має і не слід його змінювати

cout<<"Iteration : "<<setprecision(0)<<iter<<endl;

cout<<"x = "<<x <<endl;

cout<<"g(x) = "<<g(x)<<endl;

cout<<"f(x) = "<<f(x)<<endl;

x = g(x);

}

system("pause");

return 0;

}

Рис.3.1 Метод простих ітерацій

Наступна програма (рис.3.2) розроблена для розв’язку алгебраїчних рівнянь методом Ньютона(методом дотичних).

#include <cmath>

#include <iomanip>

#include <iostream>

using namespace std;

double f(double x)

{

return 2*sin(3*x) - x;

}

double df(double x)

{

return 6*cos(3*x)-1;

}

double g(double x)

{

return x - f(x)/df(x);

}

int main()

{

double x;

double eps;

cout<<"Введіть початкове значення : ";cin>>x;

cout<<"Введіть точність обчислень : ";cin>>eps;

for(double iter = 1; eps < fabs(f(x)); iter = iter + 1)

{

system("cls");

//*Ітерацій може бути дуже багато, тому пропоную використовувати

//не цілі, а дабл як лічильник, хоча якщо

//рішення не знайшли за 10-100 ітерацій то рішення для даного коефіцієнту

//при f(x) в g(x) не має і непотрібно його змінювати

cout<<"Iteration : "<<iter<<endl;

if(df(x) == 0)

break;

cout<<"x = "<<x <<endl;

cout<<"g(x) = "<<g(x) <<endl;

cout<<"df(x)= "<<df(x)<<endl;

cout<<"f(x) = "<<f(x) <<endl;

x = g(x);

}

system("pause");

return 0;

}

Рис.3.2 Метод Ньютона