Біографії Характеристики Аналіз

Метод половинного поділу в Excel. Уточнення коренів методом простої ітерації

Методи уточнення коренів

Після того, як знайдений інтервал, що містить корінь, застосовують ітераційні методиуточнення кореня із заданою точністю.

Метод половинного поділу (інші назви: метод бісекцій, метод дихотомії) для вирішення рівняння f(x) = 0 полягає в наступному. Нехай відомо, що функція безперервна і на кінцях приймає відрізка
[a, b] значення різних знаків, тоді корінь міститься в інтервалі ( a, b). Розділимо інтервал на дві половини і далі розглядатимемо ту половину, на кінцях якої функція набуває значень різних знаків. Цей новий відрізок знову ділимо на дві рівні частини та вибираємо з них ту, що містить корінь. Цей процес триває до того часу, поки довжина чергового відрізка стане менше необхідної величини похибки. Суворіший виклад алгоритму методу половинного поділу:

1) Обчислимо x = (a+ b)/2; обчислимо f(x);

2) Якщо f(x) = 0, то переходимо до пункту 5;

3) Якщо f(x)∙f(a) < 0, то b = xінакше a = x;

4) Якщо | ba| > ε, переходимо до пункту 1;

5) Виводимо значення x;

Приклад 2.4.Уточнити методом бісекцій з точністю до 0,01 корінь рівняння ( x- 1) 3 = 0, що належить відрізку .

Рішення у програмі Excel:

1) У осередках A 1:F 4 введемо позначення, початкові значеннята формули, як показано в таблиці 2.3.

2) Кожну формулу скопіюємо до нижніх осередків маркером заповнення до десятого рядка, тобто. B 4 - до B 10, C 4 - до C 10, D 3 - до D 10, E 4 - до E 10, F 3 - до F 10.

Таблиця 2.3

A B C D E F
f(a)= =(1-B3)^3
k a x f(x) b b-a
0,95 =(B3+E3)/2 =(1-C3)^3 1,1 =E3-B3
=ЯКЩО(D3=0;C3; ЯКЩО(C$1*D3<0;B3;C3)) =ЯКЩО(C$1*D3>0; E3;C3)

Результати розрахунків наведено у табл. 2.4. У стовпці Fперевіряємо значення довжини інтервалу ba. Якщо значення менше 0,01, то в даному рядку знайдено наближене значення кореня із заданою похибкою. Потрібно було 5 ітерацій для досягнення необхідної точності. Наближене значення кореня з точністю до 0,01 після округлення до трьох знаків дорівнює 1,0015625 ≈ 1,00.

Таблиця 2.4

A B C D E F
f(a)= 0,000125
k a x f(x) b b-a
0,95 1,025 -2E-05 1,1 0,15
0,95 0,9875 2E-06 1,025 0,075
0,9875 1,00625 -2E-07 1,025 0,0375
0,9875 0,996875 3,1E-08 1,00625 0,0187
0,996875 1,0015625 -4E-09 1,00625 0,0094
0,996875 0,9992188 4,8E-10 1,0015625 0,0047
0,99921875 1,0003906 -6E-11 1,0015625 0,0023
0,99921875 0,9998047 7,5E-12 1,000390625 0,0012


Наведений алгоритм враховує можливий випадок «влучення у корінь», тобто. рівність f(x) нулю на черговому етапі. Якщо в прикладі 2.3 взяти відрізок, то на першому кроці потрапляємо в корінь x= 1. Справді, запишемо в осередку B 3 значення 0,9. Тоді таблиця результатів набуде вигляду 2.5 (наведено лише 2 ітерації).

Таблиця 2.5

A B C D E F
f(a)= 0,001
k a x f(x) b b-a
0,9 1,1 0,2

Створимо у програмі Excelкористувацькі функції f(x) і bisect(a, b, eps) для вирішення рівняння методом половинного поділу, користуючись вбудованою мовою Visual Basic. Їх описи наведені нижче:

Function f(Byval x)

Function bisect(a, b, eps)

1 x = (a + b) / 2

If f(x) = 0 Then GoTo 5

If f(x) * f(a)< 0 Then

If Abs(a - b) > eps Then GoTo 1

Функція f(x) визначає ліву частину рівняння, а функція
bisect(a, b, eps) обчислює методом половинного поділу корінь рівняння f(x) = 0. Звернемо увагу на те, що функції bisect(a, b, eps) використовується звернення до функції f(x). Наведемо алгоритм створення користувача функції:

1) Виконаємо команду меню «Сервіс – Макрос – Редактор Visual Basic». Відкриється вікно « Microsoft Visual Basic». Якщо в даному файліпрограми Excelще не були створені макроси або функції користувача або процедури, це вікно буде мати вигляд, зображений на рис.2.4.

2) Виконаємо команду меню "Insert - Module" і вводимо тексти програм-функції, як показано на рис 2.5.

Тепер у осередках аркуша програми Excelможна у формулах використовувати створені функції. Наприклад, введемо в осередок D 18 формулу

Bisect(0,95;1;0,00001),

то отримаємо значення 0,999993896.

Щоб вирішити інше рівняння (з іншою лівою частиною) потрібно перейти у вікно редактора за допомогою команди «Сервіс – Макрос – Редактор Visual Basicі просто переписати опис функції f(x). Наприклад, знайдемо з точністю до 0,001 корінь рівняння sin5 x + x 2 - 1 = 0, що належить інтервалу (0,4; 0,5). Для цього змінимо опис функції

на новий опис

f = Sin (5 * x) + x ^ 2 - 1

Тоді в осередку D 18 отримаємо значення 0,441009521 (порівняйте цей результат зі значенням кореня з інтервалу (0,4; 0,5), знайденим у прикладі 2.3!).

Для вирішення рівняння методом половинного поділу у програмі Mathcadстворимо підпрограму-функцію bisec(f, a, b, ε), де:

f -ім'я функції, що відповідає лівій частині рівняння f(x) = 0;

a, b- лівий та правий кінці відрізка [ a, b];

ε – точність наближеного значення кореня.

Рішення прикладу у програмі Mathcad:

1) Запускаємо програму Mathcad.Введемо визначення функції bisec(f, a, b, ε). Для цього за допомогою клавіатури та панелі інструментів «Грецькі символи» набираємо bisec(f, a, b, ε):=. Після знаку присвоєння «:=» на панелі інструментів «Програмування» покажчиком миші клацаємо лівою кнопкою «Add line». Після знаку присвоєння з'явиться вертикальна лінія. Далі вводимо текст програми, наведений нижче, використовуючи панель інструментів «Програмування» для введення знака «←», оператора циклу while, оператора breakта умовного оператора if otherwise.

2) Введемо визначення функції f(x):=sin(5*x)+x^2–1, а потім обчислимо значення кореня за допомогою функції bisecпри заданих значеннях:
bisec(f, -0.8, -0.7, 0.0001) =. Після знака "=" автоматично з'явиться обчислене програмою значення кореня -0,7266601563. Аналогічно обчислимо інше коріння.

Нижче наведено лист Mathcadз визначенням функції bisec(f, a, b, ε) та розрахунками:

Наведемо програму мовою C++ для вирішення рівняння f(x) = 0 методом половинного поділу:

#include

#include

double f(double x);

typedef double (*PF)(double);

double bisec(PF f,double a, double b,double eps);

double a, b, x, eps; PF pf;

cout<< "\n a = "; cin >> a;

cout<< "\n b = "; cin >> b;

cout<< "\n eps = "; cin >> Eps;

x = bisec (pf, a, b, eps); cout<< "\n x = " << x;

cout<< "\n Press any key & Enter "; cin >> a;

double f(double x)(

r = sin (5 * x) + x * x-1;

double bisec(PF f, double a, double b,double eps)(

do(x = (a + b)/2;

if (f(x) == 0) break;

if (f(x)*f(a)<0) b = x;

)while (fabs(b-a) > eps);

У програмі функція f(x) визначено для вирішення рівняння

sin5 x + x 2 – 1 = 0

із прикладу 2.3. Результат роботи програми визначення кореня з інтервалу (0,4; 0,5) з точністю 0,00001 представлений нижче (екран комп'ютера):

Press any key & Enter

Останній рядок потрібний для організації паузи для перегляду результату.

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

  • Метод простих ітерацій
  • Метод Ньютона
  • Модифікований метод Ньютона
  • Метод Рибакова
  • Метод дихотомії
  • Метод каскадного наближення
  • Метод хорд
  • Комбінований метод сік-хорд
  • Метод Ейткіна – Стеффенсона
  • Метод зворотної квадратичної інтерполяції – екстраполяції та ін.

Кількість методів знаходження коріння велика, як і різних алгоритмів сортувань.

Мною розглянуто метод дихотомії, взятий із файлу MM6.PDF. Подивіться код прикладу. Він складений із застосуванням старого, але улюбленого оператора Go TO. З погляду структурного програмування використання такого оператора неприпустимо, зате ефективно. У літературі до цієї нотатки прикладено кілька посилань на знайдені мною спеціально матеріали, зокрема довідник алгоритмів Дьяконова. Колись, він був настільним у мене. Старі версії Бейсік кишать операторами Go TO. У старих версіях Бейсіка використовується оператор присвоювання LET.

Версій Бейсіка існує безліч. Мені колись довелося часто перекладати програми з однієї версії на іншу. А вперше з однієї з версій Бейсіка я познайомився в 1980 році в інституті геофізики, куди ми їздили відвідати з другом його брата. Він займався шляхом магнітного ядерного резонансу. Всі розрахунки з обробки результатів дослідів проводилися із застосуванням міні ЕОМ іноземного виробництва та мовою Бейсік. Потім ця мова з'явилася на досить потужній на той час «Іскра-226», та й на знаменитій БК-10, яка використовується з середини 80-х у класах у школах. У 1983-1984 роках у Харкові я побачив першу PC. У неї було лише 2 гнучкі дисководи на 2 різних типи дискет і обсяг пам'яті близько 560 Мб, а основною мовою програмування був Форт. Це мова стеків, яка успішно застосовувалася в управлінні радіотелескопами. Цією мовою просто реалізовувалась графіка.

Всі основні алгоритми сортувань та обчислювальних методів були реалізовані здебільшого ще для мов АЛГОЛ та ФОРТРАН у середині 50-х років.

Тепер про приклад. Там наведено рішення 2-х різних рівнянь. Перше рівняння X*X-5*SIN(X). Очевидно, що синус змінюється від -1 до +1. Отже 5 * синус змінюється від -5 до +5. Квадрат Х росте набагато швидше. Отже, можна припустити, що коріння буде при значеннях Х близько в діапазоні поблизу 0 або 2. Краще побудувати спочатку графік, щоб проаналізувати діапазон, в якому знаходиться коріння. На графіці видно, що коренів має бути 2. У прикладі ми знайшли лише один із коренів, бо задали один із інтервалів.

У другому рівнянні X*X*X-X+1 бачимо кубічну параболу з коренем поблизу -1.

Свої рівняння можна замінювати в макросі. Чи можна скласти програми без операторів GOTO? - Звичайно можна.

а

Питання: Знаходження коренів рівняння методом поділу відрізка навпіл


Добрий день, що не так з 3-м коренем, не хоче виводиться. Зверху – 3 корені через підбір параметра. Знизу – методом половинного поділу. Округлення 0,001 Рівняння x^3-2*x^2-x+2 Хтось може підправити або дати корисну пораду, що не так?

Відповідь: furymaxim, дужки пропустили

Питання: Дешифрування методом Плейфера у MS Excel


Будь ласка Підкажіть як зробити дешифратор у EXCEL за допомогою формул. Або скажіть за допомогою якої формули можна генерувати алфавіт

Відповідь:У комірку А1

Code
1 = СИМВОЛ(192 + РЯДОК() - 1 )

І простягнути вниз

Питання: Гальмує файл-таблиця Excel


Доброго часу доби, шановні колеги!
Дуже потрібна ваша допомога, вже перепробував усі знайдені та відомі мені методи зменшення обсягу файлу. Начебто все зайве там вичистив.
Незважаючи на це при роботі з таблицею йдуть гальма і підвисає, причому вони змінні та стабільні (то гальмує, то не гальмує).
мені здається, що можливо це через випадаючий список з фотографіями, помітив що в міру збільшення списків, що випадають, з фотками - збільшуються і гальма. Але дивно, таблиці всі маленькі, галерея з фотками теж не велика.

Відповідь:Проблему вирішив! Просто встановивши Excel 2016 для Mac - взагалі ніяких гальм, поки все працює відмінно, але не впевнений, що далі не зіткнуся з цим знову!
Проте проблема актуальна, т.к. рішення не через встановлення іншої версії excel, можливо, комусь ще знадобиться
p.s. попередня версія excel була 2011 для Mac

Питання: Office 2007 як встановити Excel 2010


всім привіт.
може назва теми не зовсім точно передає суть(((, але....
у мене win xp sp3 office 2007 року та excel 2007року.
в excel чи 2010 чи 2013 є функція діаграм у вигляді карт країн або континентів powerview або як там точно. там ще карти бін використовуються.
чи є якісь надбудови для excel2007 щоб такі діаграми можна було. якщо ні, то в якому Excel є ця функція і чи є можливість встановити 2 Excel на 1 комп. Наприклад 2007 і 2010 на win xp sp3 якщо функція діаграм з картами держав є в 2010????
Дякую.

Відповідь:так а в 2010 Excel це є? і якщо є те, як встановити Excel 2010 не видаляючи мій офіс 2007???

Додано через 3 години 10 хвилин
ща дивився схожі теми. знайшов про libreoffice. програма така як офіс лише безкоштовна. мб у кого-небудь є карта Республіки Білорусь для цього програм????. там розширення geoOOo.

Запитання: Отримання вибірки з Excel


Мені потрібно на основі даних з файлу Excel створити презентацію в PowerPoint.

Ні з тим, ні з іншим раніше не працював. Тому перевірте алгоритм (малюнки):
Отримую за допомогою запитів необхідні вибірки,
Пов'язую результати вибірок із шаблоном (поки не читав, як програмно створюється презентація)
Створюю, власне, презентацію.
І все це прописую у макросі.

1. Послідовність правильна?
2. Як мені працювати з даними, отриманими за допомогою запитів? Записати їх тимчасово; результат кожного запиту на окремому аркуші, а після створення файлу-презентації закрити БЕЗ ЗМІН файл Excel? Або якось інакше?
3. Як правильно написати такий запит?
Мій малюнок не працює:

Запис результатів запиту з першого аркуша на другий.
4. Як цей запит запустити

Код Visual Basic
1 DoCmd.RunSQL strSQL

Щось типу цього?

Додано через 2 години 42 хвилини
Чи таке можливе лише через тимчасову БД Access?

Відповідь:У сенсі сюди? На форум? - Будь ласка... Справа не в даних, а в запитах (способах обробки). У Access я це роблю, в Excel – не можу. Наприклад підрахувати продажі для 3-х виробників з найбільшими продажами (ТОП 3), а решти - підсумовувати. Я так розумію – це не автоматизувати… Руками – Так, можна зробити.

Питання: Як додати імена вкладень Outlook у Excel з подальшим збереженням їх у вказаній папці


Доброго дня всім гуру Excel-я.

Завдяки цьому форуму мені вдалося налагодити документообіг в Excel (точніше реєстрацію вхідних листів) у більш-менш автоматизованому вигляді.
У доданому файлі такі основні макроси:
1. "Перше_MailSave" - ​​прописує листи з папки вхідних Outlook
2. "Друге_в_шаблон" - видає вхідний номер і виводить дані у певний шаблон (схвалений керівництвом у плані легкочитання)
3. "Завершення_Друк" - зберігає аркуш шаблону у форматі pdf у папці з вхідним номером та пускає на друк.
Тобто. щастя є тепер повна обробка 10 листів займає 3-4 хвилини, а не 30-40.

Проблема з обробкою вкладень:
1. Як не вручну прописувати у вкладеньу листі, а автоматично з виведенням в комірку E4 листа "data" кількості + 1 (сам лист)
2. Як у листі "Шаблон" у В5 перерахувати все вкладення за іменами
3. Що додати в макрос "Завершение_Друк", щоб вкладення зберігалисяу новостворену папку із самим листом.

Всі дані з листа забираються, а ось із вкладенням так і не придумав як (див. код)

Код Visual Basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Sub Перший_MailSave() Application.EnableEvents = False Dim oOutlook As New Outlook.Application Dim oNamespace As Outlook.Namespace Dim myFolder As Outlook.Folder Dim myMail As Outlook. MAPI") "папка в Outlook, звідки зберігаємо листи Якщо листи потрібні з вкладеної папки, то записується в наступному вигляді: Set myMail = myFolder.Items Cells.Clear Cells(3, 2) = "Від кого" "Cells(1, 2) = "E-mail" "Cells(1, 3) = "Кому" Cells(3, 3) = "Тема" Cells(3, 1) = "Дата" Cells(3, 4) = "Тіло листа" Cells(3, 5) = "У сторінок" r = 4 For Each myItem Cells(r, 2) = myItem.SenderName " Cells(r, 3) = myItem.To Cells(r, 3) = myItem.Subject Cells(r, 1) = myItem.CreationTime Cells(r, 4) = myItem. Body On Error GoTo 0 r = r + 1 Next Application.EnableEvents = True "відключаємо обробку події End Sub

Пошуки в інтернеті всі посилаються на макроси для outlook, але реєстрація та створення необхідних директорій у мене відбувається в excel, відповідно, всі змінні в ньому ж.
З одного боку, у мене три різні питання, але мені здається, що оптимальніше буде реалізувати всі три питання в одному макросі.

З повагою, Лев

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

Код Visual Basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 Sub ЏГҐГ°ГўГ®ГҐ_MailSave() Application.EnableEvents = False Dim oOutlook As New Outlook.Application Dim oNamespace As Outlook.Namespace Dim myFolder As Outlook. .GetNamespace("MAPI" ) "ГІГ*ГІГЄГ* Гв Outlook, îòêóäГ* ñîõðГ*Г*ГіГҐГ¬ ГІГЁГ±ГјГ¬Г* Set myFolder = oNamespace.GetDefaultFolder(olFolderInbox) "åñëòòèñüìГ* Г*ГіГ¦Г*Г» ГЁГ§ ГуëîåГГ*Г*îé ГІГ*ГІГЄГЕ, ГІГ® Г§Г*ГІГЁГ±Г» ГвГ*ГҐГІГ±Гі Гв ñëåäóþùåì Гвèäå: ".Folders("webley").Folders("test") Set myMail = myFolder.Items destinationFolder = "E:\temp\test\Att\" ÊîëГЕГ·ГҐГ±ГІГвГ® = 0 ÏîÈìåГ*Г*Г¬ = "" Cells.Clear Cells (3, 2) = "ГОГІ ГЕîãî" "Cells(1, 2) = "E-mail" "Cells(1, 3) = "ГГГГГі" Cells(3, 3) = "Г'ГҐГ¬Г*" Cells(3, 1) = "Г„Г*ГІГ*" Cells(3, 4) = "Г'îäåðГ|Г*Г*ГЁГҐ" Cells(3, 5) = "Êîë-ГвГ® Г±ГІГ°Г*Г*ГЁГ¶" Cells(3, 6) = "ÂëîæåГ*ГЁГі" r = 4 For Each myItem In myMail On Error Resume Next ""<<<<<<<<<<<<<<< 3 Гў îäГ*îì >>>>>>>>>>>>>> Set colAttachments = myItem.Attachments ÊîëГЕГ·ГҐГ±ГІГвГ® = colAttachments.Count + 1 Для всіх об'єднань в colAttachments MkDir (destinationFolder & myItem.SenderName) destinationFolderAd "/" & objAttachment.Filename) ÏîÈìåГ*Г*Г¬ = ГПîÈìåГ*Г*Г¬ & objAttachment.Filename & "; " Next ""<<<<<<<<<<<<<<<>>>>>>>>>>>>>> Cells(r, 2) = myItem.SenderName Cells(r, 2) = myItem.SenderEmailAddress Cells(r, 3) = myItem.To Cells(r, 3) = myItem.Subject Cells(r, 1) = myItem.CreationTime Cells(r, 4) = myItem.Body Cells(r, 5) = ГГГ® Cell(r, 6) = ГГГГГГГГГ*Г*Г On On Error GoTo 0 r = r + 1 Next Application.EnableEvents = True "îòêëþ÷Г*ГҐГ¬ Г®ГУГ°Г*áîòêó ñîáûòèó End Sub

Відповідь:Строго в модуль книги ThisWorkbook(ЦяКнига)особистої книги макросів Personal.xls(xlsb)

Visual Basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Private Declare Function LoadKeyboardLayout _ Lib "user32.dll" Alias ​​"LoadKeyboardLayoutA" (_ ByVal pwszKLID As String , _ ByVal flags As Long) ByVal Wb As Excel.Workbook) If LCase(Wb.Name) = "ім'я_книги.xls"

МІНІСТЕРСТВО ОСВІТИ І НАУКИ РФ

ФЕДЕРАЛЬНА ДЕРЖАВНА БЮДЖЕТНА

ОСВІТНЯ УСТАНОВА

ВИЩОЇ ПРОФЕСІЙНОЇ ОСВІТИ

«САМАРСЬКИЙ ДЕРЖАВНИЙ

АРХІТЕКТУРНО-БУДІВЕЛЬНИЙ УНІВЕРСИТЕТ»

Кафедра прикладної математики та обчислювальної техніки

ExcelіMathcad

МЕТОДИЧНІ ВКАЗІВКИ

до виконання лабораторних робіт

з дисципліни «Обчислювальна математика»

Рішення не лінійних рівняньвExcel іMathcad: Метод. указ. / Упоряд. , - Самара: ЗДАСУ, 20с.

Методичні вказівки розроблено відповідно до Державного освітнього стандарту вивчення дисципліни «Обчислювальна математика».

Розглянуто реалізацію чисельних методів при вирішенні нелінійних рівнянь та систем рівнянь в Excel та MathCad. Наведено варіанти завдань для індивідуального виконання та питання для самоконтролю та тестування.

Призначені для студентів спеціальності 230201 – «Інформаційні системи та технології» усіх форм навчання.

Рецензент до. ф-м. н.

Ó , складання, 2012

ã ЗДАСУ, 2012

1.2 Відділення коріння

1.5 Метод хорд

1.6 Метод Ньютона (дотичних)

1.7 Комбінований метод

1.8 Метод ітерацій

2.2 Вирішення систем нелінійних рівнянь методом Ньютона

3 Завдання до лабораторних робіт

Лабораторна № 1. Відділення коренів та стандартні інструменти розв'язання нелінійного рівняння

Лабораторна №2. Порівняння методів уточнення коренів нелінійного рівняння

Лабораторна №3. Розв'язання систем нелінійних рівнянь

Лабораторна № 4. Програмування методів розв'язання нелінійних рівнянь та систем

4 Питання та тести для самоконтролю


1 Розв'язання нелінійного рівняння

1.1 Загальні відомості про рішення нелінійного рівняння

Як правило, нелінійне рівняння загального виду f(х)=0неможливо вирішити аналітично. Для практичних завдань достатньо знайти наближене значення x, у певному сенсі близьке до точного вирішення рівняння хточн.

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

Досягнута точність може оцінюватися або «за функцією» (у знайденій точці x, функція досить близька до 0, тобто виконується умова | f(x)|≤ef, де efнеобхідна точність по осі ординат), або «за аргументом» (знайдено досить невеликий відрізок [ a,b], Усередині якого знаходиться корінь, тобто. | b-a|≤ex, де exпотрібна точність по осі абсцис).

1.2 Відділення коріння

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

Для низки методів уточнення бажано, щоб знайдений першому етапі відрізок містив лише одне корінь рівняння. Ця умова виконується, якщо функція на відрізку монотонна. Монотонність можна перевірити або за графіком функції, або за знаком похідної.

прикладЗнайти з точністю до цілих всікоріння нелінійного рівняння y(x)=x3 ‑ 10x + 7 = 0а) побудувавши таблицю та б) побудувавши графік. Знайти корінь рівняння на виділеному відрізку, використовуючи опції «Підбір параметра» та «Пошук рішення».

РішенняСтворимо в Excel таблицю, що містить аргументи та значення функції та по ній побудуємо точкову діаграму . На малюнку 1 наведено знімок рішення.

На графіку видно, що рівняння має три корені, що належать відрізкам [-4, -3], та . Ці відрізки можна виявити і спостерігаючи за зміною знаків функції таблиці. За побудованим графіком можна дійти невтішного висновку, що у зазначених відрізках функція f(x) монотонна і, отже, кожному з них міститься лише з одному кореню.

Такий самий аналіз може бути виконаний і в пакеті Mathcad. Для цього достатньо набрати визначення функції f(x) , використовуючи оператор присвоювання (:=) і природні загальноприйняті позначення математичних операцій та стандартних функцій, задати цикл для зміни аргументу, наприклад, а потім вивести на екран таблицю значень функції (розташованими в одному рядку командами x= f(x)= ) та графік. Цикл можна задати, наприклад, командою x:=-5,-4.5…5 . Крок циклу формується шляхом завдання початкового і наступного за ним значень змінної, а перед кінцевим значенням змінної ставиться точка з комою, яка візуально відображається на екрані у вигляді крапки.

https://pandia.ru/text/78/157/images/image002_56.jpg" width="640" height="334">

Рисунок 1 – Таблиця та графік для відділення коріння нелінійного рівняння

1.3 Уточнення коренів стандартними засобами Excel та Mathcad

У всіх методах уточнення коренів необхідно задати початкове наближення, яке потім уточнюватиметься. Якщо рівняння має кілька коренів, в залежності від обраного початкового наближення буде знайдено одне з них. При невдало обраному початковому наближенні рішення може бути знайдено. Якщо в результаті першого етапу розрахунків вже виділено відрізок, що містить єдиний корінь рівняння, як початкове наближення можна взяти будь-яку точку цього відрізка.

В Excel для уточнення значень коренів можна використовувати опції "Підбір параметра" та "Пошук рішення". Приклад оформлення рішення наведено на рисунках 2 та 3.

https://pandia.ru/text/78/157/images/image004_31.jpg" width="501" height="175 src=">

Рисунок 3 – Результати використання засобів вирішення рівнянняExcel

У Mathcad для уточнення коренів рівняння можна використовувати функцію root(….) або блок рішення. Приклад використання функції root(…) наведено малюнку 4, а блоку рішення малюнку 5. Слід звернути увагу, що у блоці рішення (після заголовка блоку Given) між лівою та правою частинами рівняння повинен стояти жирний знак рівності(тотожності), який можна отримати вибором з відповідної палітри інструментів, або натисканням клавіші одночасно Ctrlі = .


243" height="31">

Рисунок 5 – Рішення рівняння з використанням блоку розв'язанняMathcad

Як бачимо, кожен стандартний інструмент знаходить рішення рівняння з певною точністю. Ця точність залежить від методу, який використовується в пакеті та, певною мірою, налаштувань пакета. Керувати точністю результату тут досить складно, а то й неможливо.

У той же час дуже просто побудувати власну таблицю або написати програму, що реалізують один із методів уточнення коренів. Тут можна використовувати критерії точності розрахунку, що задаються користувачем. При цьому досягається і розуміння процесу розрахунків без опори на принцип Митрофанушки: «Візник є, довезе».

Далі розглянуто кілька найпоширеніших методів. Зазначимо очевидний момент: за інших рівних умовах той методуточнення коренів буде більш ефективним, в якому результат з тією ж похибкою знайдено з меншимчислом обчислень функції f(x)(при цьому досягається і максимальна точність при однаковій кількостіобчислень функції).

1.4 Метод розподілу відрізка навпіл

У цьому вся методі кожному кроці відрізок ділиться на дві рівні частини. Потім порівнюють знаки функції на кінцях кожної з двох половинок (наприклад, за знаком твору значень функцій на кінцях), визначають ту з них, в якій міститься рішення (знаки функції на кінцях повинні бути різні), і. звужують відрізок, переносячи в знайдену точку його межу ( аабо b). Умовою закінчення служить трохи відрізка, де міститься корінь («точність по x»), або близькість до значення значення функції в середині відрізка («точність по y»). Рішенням рівняння вважають середину відрізка, знайденого на останньому етапі.

приклад. Побудувати таблицю для уточнення кореня рівняння x3 –10 x+7=0 на відрізку [-4, -3] шляхом розподілу відрізка навпіл. Визначити скільки кроків треба зробити методом поділу відрізка навпіл і яка при цьому досягається точність по х,для досягнення точності з y, що дорівнює 0,1; 0,01; 0, 001.

РішенняДля вирішення можна використовувати табличний процесор Excel дозволяє автоматично продовжувати рядки. На першому кроці заносимо в таблицю значення лівого та правого кінців вибраного початкового відрізка та обчислюємо значення середини відрізка з=(a+b)/2, а потім вводимо формулу для обчислення функції у точці a (f(a)) і розтягуємо (копіюємо) її для обчислення f(c) та f(b). В останньому стовпці обчислюємо вираз ( b-a)/2, що характеризує ступінь точності обчислень. Усі набрані формули можна скопіювати до другого рядка таблиці.

На другому етапі необхідно автоматизувати процес пошуку тієї половини відрізка, де міститься корінь. Для цього використовується логічна функція ЯКЩО ( Меню: ВставкаФункціяЛогічні). Для нового лівого краю відрізка ми перевіряємо істинність умови f(a)*f(c)>0, якщо воно вірне, то ми як нове значення лівого кінця відрізка беремо число c a, c a. Аналогічно для нового правого краю відрізка ми перевіряємо істинність умови f(c)* f(b)>0, якщо воно вірне, то ми як нове значення правого кінця відрізка беремо число c(Т. К. Ця умова показує, що кореня на відрізку [ c, b] ні), інакше залишаємо значення b.

Другий рядок таблиці можна продовжити (скопіювати) на потрібне число наступних рядків.

Ітераційний процес завершується, коли чергове значення останньому стовпці стає меншим, ніж заданий показник точності ex. При цьому значення середини відрізка в останньому наближенні приймається як наближене значення шуканого кореня нелінійного рівняння. На малюнку 6 наведено знімок рішення. Для побудови аналогічного процесу в Mathcad можна використовувати бланк, подібний до наведеного на малюнку 7. Число кроків N може змінюватись до досягнення в таблиці результатів необхідної точності. При цьому таблиця автоматично подовжуватиметься або коротшатиме.

Отже, одним із трьох коренів нелінійного рівняння x 3 – 10x+ 7=0, знайденим з точністю e=0,0001, є x= - 3,46686. Як бачимо, він справді належить відрізку [-4; -3].

https://pandia.ru/text/78/157/images/image018_6.jpg" width="563" height="552 src=">

Рисунок 7 – Уточнення кореня методом поділу відрізка навпілMathcad

1.5 Метод хорд

У цьому методі нелінійна функція f(x)на відокремленому інтервалі [ а, b] замінюється лінійною – рівнянням хорди, т. е. прямий сполучає граничні точки графіка на відрізку. Умова застосування методу – монотонність функції на початковому відрізку, що забезпечує єдиність кореня у цьому відрізку. Розрахунок за методом хорд аналогічний розрахунку методом поділу відрізка навпіл, але тепер на кожному кроці нова точка xвсередині відрізка [ a, b] розраховується за будь-якою з наступних формул:

(х) > 0 ), або права його межа: x0 = b(якщо f(b) f"(х)>0). Розрахунок нового наближення на наступному кроці i+1 проводиться за формулою:

https://pandia.ru/text/78/157/images/image021_4.jpg" width="596" height="265 src=">

Рисунок 8 – Уточнення кореня методом дотичних до Excel

Розрахунки Mathcad виконуються аналогічно. При цьому значне полегшення доставляє наявність у цьому пакеті оператора, що автоматично обчислює похідну функції.

Найбільш трудомістким елементом розрахунків методом Ньютона є обчислення похідної кожному кроці.

За певних умов може використовуватись спрощений метод Ньютона, У якому похідна обчислюється лише один раз – у початковій точці. При цьому використовується видозмінена формула

.

Природно, що спрощений метод зазвичай вимагає більшого числакроків.

Якщо обчислення похідної пов'язане з серйозними труднощами (наприклад, якщо функція задана не аналітичним виразом, а програмою, що обчислює її значення), використовується модифікований методНьютона, який отримав назву - метод січучих. Тут похідна приблизно обчислюється за значеннями функції у двох послідовних точках, тобто використовується формула

.

У методі січучих необхідно задатися не однією, а двома початковими точками – x0 і x1 . Крапка x1зазвичай задається зрушенням x0до іншої межі відрізка на малу величину, наприклад, 0.01.

1.7 Комбінований метод

Можна показати, що якщо на початковому відрізку у функції f(x)зберігаються незмінними знаки першої та другої похідних, то методи хорд і Ньютона наближаються до кореня з різних. У комбінованому методідля підвищення ефективності на кожному кроці використовує обидва алгоритми одночасно. При цьому інтервал, де міститься корінь, скорочується з обох сторін, що зумовлює іншу умову закінчення пошуку. Пошук можна припинити, як тільки всередині інтервалу, отриманого на черговому кроці значення функції стане по модулю меншим, ніж попередньо заданої похибки ef.

Якщо, відповідно до сформульованого вище правила, метод Ньютона застосовується до правої межі відрізка, для обчислень використовуються формули:

https://pandia.ru/text/78/157/images/image025_10.gif" width="107" height="45 src=">.

Якщо метод Ньютона застосовується до лівої межі, – у попередніх формулах змінюються місцями позначення aі b.

1.8 Метод ітерацій

Для застосування цього методу вихідне рівняння f(x)=0перетворюють на вигляд: x=y(х). Потім обирають початкове значення х0і підставляють його в ліву частину рівняння, отримуючи, загальному випадку, x1 = y(х0)¹ х0¹ y(х1), оскільки х0взято довільно і не є коренем рівняння. Отримане значення х1розглядають як чергове наближення до кореня. Його знову підставлять у праву частинурівняння та отримують наступне значення х2=y(х1)). Розрахунок продовжують за формулою хi+1=y(хі). Послідовність, що утворюється таким чином: х0, х1, х2, х3 х4,...за певних умов сходитися до кореня хточн.

Можна показати, що ітераційний процес сходиться за умови
|y(x) | < 1 на [a, b].

Існують різні способиперетворення рівняння f(x)= 0 до виду y(х) = х, причому в конкретному випадку одні з них приведуть до того, що сходить, а інші - до процесу обчислень, що розходиться.

Один із способів, полягає у застосуванні формули

https://pandia.ru/text/78/157/images/image027_10.gif" width="188" height="44 src=">

де М= max | y(x)| на [ a, b].

2 Розв'язання систем нелінійних рівнянь

2.1 Загальні відомості щодо вирішення систем нелінійних рівнянь

Систему nнелінійних рівнянь з nневідомими x1, x2, ..., xnзаписують у вигляді:

де F1, F2,…, Fn- Функції незалежних змінних, серед яких є нелінійні.

Як і у разі систем лінійних рівнянь, рішенням системи є такий вектор X*, який при підстановці звертає одночасно всі рівняння системи до тотожності.

https://pandia.ru/text/78/157/images/image030_8.gif" width="191" height="56">

Початкові значення x0 і y0 визначаються графічно. Для знаходження кожного наступного наближення (xi+1 , yi+1 ) використовують вектор значень функцій та матрицю значень їх перших похідних, розраховані в попередній точці (xi, yi) .

https://pandia.ru/text/78/157/images/image032_5.gif" width="276" height="63 src=">

Для розрахунку нових наближень на кроці i+1використовується матрична формула

https://pandia.ru/text/78/157/images/image034_4.gif" width="303" height="59 src=">.

Наведені формули особливо легко записати в Mathcad, де є оператори для обчислення похідних та дій з матрицями. Однак при правильному використанні матричних операційці формули досить просто записуються і Excel. Щоправда, тут доведеться заздалегідь одержати формули для обчислення похідних. Для аналітичного обчислення похідних також можна використовувати Mathcad.

2.3 Розв'язання систем нелінійних рівнянь методами ітерацій

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

https://pandia.ru/text/78/157/images/image036_5.gif" width="114" height="57 src=">.

Якщо одне з рішень системи та початкові значення x0 і y0 лежать в області D, що задається нерівностями: axb, cyd, то розрахунок за методом простих ітерацій сходиться при виконанні в області Dспіввідношень:

https://pandia.ru/text/78/157/images/image038_5.gif" width="75 height=48" height="48">< 1.

У методі ітерацій Зейделядля кожного розрахунку використовують вже знайдені найточніші значення кожної змінної. Для випадку двох змінних, що розглядається, така логіка призводить до формул.

0 " style="border-collapse:collapse;border:none">

Інструмент (опція)

Початкове наближення

Коріньx

f(x)

3. Відсортувати отримані результати за точністю рішення.

Електронна таблиця Microsoft Excel . Засоби та методи розв'язання рівнянь.

Мета роботи: Освоїти чисельний метод розв'язання рівняння і вбудовані засоби розв'язання рівнянь.

Зміст

1 Чисельний метод розв'язання нелінійних рівнянь. 1

1.1 Область локалізації коріння. 1

1.2 Критерії збіжності під час вирішення рівнянь. 2

1.3 Метод дихотомії (половинного поділу) 3

Приклад вирішення рівняння методом дихотомії . 4

2 Вирішення рівнянь, використовуючи “Підбір параметра”. 6

2.1 Приклад розв'язання рівняння, використовуючи “Підбір параметра” . 6

3 Вирішення рівнянь та систем рівнянь, використовуючи надбудову “Пошук рішення”. 9

3.1 Приклад розв'язання рівняння, використовуючи надбудову “Пошук розв'язання” . 10

Завдання 1. Розв'язання рівнянь чисельним методом.. 12

Завдання 2. Вирішення рівнянь вбудованими засобами "Підбір параметра" та "Пошук рішення" 12

Контрольні питання.. 13

1 Чисельний метод розв'язання нелінійних рівнянь

1.1 Область локалізації коріння

У загальному виглядібудь-яке рівняння однієї змінної прийнято записувати так , у своїй коренем (рішенням) називається таке значення x*, що виявляється вірним тотожністю. Рівняння може мати один, кілька (включаючи нескінченне число) або жодного кореня. Як легко бачити, для дійсних коренів завдання пошуку рішення рівняння легко інтерпретується графічно: корінь є таке значення незалежної змінної, при якому відбувається перетин графіка функції, що стоїть у лівій частині рівнянняf ( x)з віссю абсцис.

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


Малюнок 1. Графік функції

Таким чином, можна приблизно визначати область локалізації коріннярівняння. Зауважимо, що відокремити корінь можна не єдиним чином: якщо корінь відокремлений на якомусь відрізку, то годиться і будь-який менший відрізок, що містить цей корінь. Взагалі кажучи, чим менше відрізоктим краще, але при цьому не слід забувати про те, що на відділення кореня на менших відрізках також витрачаються обчислювальні зусилля, і, можливо, досить значні. Таким чином, часто для початку задовольняються дуже широким відрізком, на якому відокремлений корінь.

Деякі види рівнянь допускають аналітичне рішення. Наприклад, статечні рівняння алгебри ступеня nпри n≤ 4. Однак, у загальному вигляді, аналітичне рішення, Як правило, відсутня. У цьому випадку застосовуються Чисельні методи . Усі чисельні методи вирішення рівнянь є послідовного наближеннядо кореня рівняння. Тобто вибирається початкове наближення до кореняx 0і потім за допомогою ітераційної формули генерується послідовністьx 1 , x 2 , …, x kсхожа до кореня рівняння .

1.2 Критерії збіжності під час вирішення рівнянь

Ø Абсолютна похибка – абсолютна зміна наближення на сусідніх кроках ітерації

Ø Відносна похибка – відносна зміна наближення на сусідніх кроках ітерації

Ø Близькість до нуля обчисленого значення лівої частини рівняння (іноді це значення називають нев'язкоюрівняння,так як для кореня нев'язка дорівнює нулю)

1.3 Метод половинного поділу(метод дихотомії)

Метод половинного розподілу заснований на послідовному розподілі відрізка локалізації кореня навпіл.

Для цього вибирається початкове наближення до відрізка [ a, b], таке, щоf ( a) × f ( b)<0 потім визначається знак функції в точці - середині відрізка [a, b]. Якщо він протилежний знаку функції у точці a, то корінь локалізовано на відрізку [a, c], якщо ж ні - то на відрізку [c, b]. Схема методу дихотомії наведена на рису нці 2.

Малюнок 2. Послідовний поділ відрізка навпіл і наближення до кореня

Алгоритм методу дихотомії можна записати так:

1. уявити розв'язуване рівняння як

2. вибрати a, b та обчислити

3. якщоf(a)× f(с)<0, то a = a; b = c інакшеa = c; b=b

4. якщо критерій збіжності не виконаний, перейти до п. 2

Приклад вирішення рівняння методом дихотомії

Знайти рішення заданого рівняння методом дихотомії з точністю до 10-5.

Приклад створення розрахункової схеми з урахуванням методу дихотомії з прикладу рівняння: на відрізку

Даний метод полягає у перевірці на кожній ітерації умови:

якщоf ( a) × f(с)<0 та вибір відповідного відрізка для наступної ітерації.


a)

b)

Малюнок 3. Послідовність ітерацій методу дихотоміїпри пошуку кореня рівняння на відрізку

a) схема розрахунку (залежні осередки); b)режим відображення формул;

Для нашого прикладу ітераційна послідовність для знаходження рішення набуває вигляду:


Точність до п'ятої цифри досягається за 20 ітерацій.

Швидкість збіжності цього є лінійної.

За виконання початкової умови він сходиться до рішення завжди.

Метод половинного поділу зручний при вирішенні фізично реальних рівнянь, коли наперед відомий відрізок локалізації розв'язування рівняння.


2 Розв'язання рівнянь , використовуючи “Підбір параметра

Використовуючи можливості Excel, можна знаходити коріння нелінійного рівняння виду. f(x)= 0 у допустимій області визначення змінної. Послідовність операцій знаходження коріння наступна:

1. Проводиться табулювання функції в діапазоні можливого існування коренів;

2. За таблицею фіксуються найближчі наближення до значень коріння;

3. Використовуючи засіб Excel Вибір параметра,обчислюються коріння рівняння із заданою точністю.

При виборі параметра Excel використовує ітераційний (циклічний) процес. Кількість ітерацій та точність встановлюються в меню Сервіс/Параметри/вкладка Обчислення. Якщо Excel виконує складне завдання вибору параметра, можна натиснути кнопку Паузау вікні діалогу Результат підбору параметраі перервати обчислення, а потім натиснути кнопку Крок, щоб виконати чергову ітерацію та переглянути результат. Під час вирішення завдання у покроковому режимі з'являється кнопка П родолжить- для повернення до звичайного режиму підбору параметра.

2.1 Приклад розв'язання рівняння, використовуючи “Підбір параметра”

Наприклад знайдемо всі коріння рівняння 2x 3 -15sin(x)+0,5x-5=0на відрізку [-3; 3].

Для локалізації початкових наближень необхідно визначити інтервали значень Х, у яких значення функції перетинає вісь абсцис, тобто. функція змінює знак. З цією метою табулюємо функцію на відрізку [-3; 3] з кроком 0,2 отримаємо табличні значення функції. З отриманої таблиці знаходимо, що значення функції тричі перетинає вісь Х, отже, вихідне рівняння має заданому відрізку все три кореня.


Рисунок 4. Пошук наближених значень коренів рівняння

Виконайте команду меню Сервіс/Параметри,у вкладці Обчисленнявстановіть відносну похибку обчислень E=0,00001, а число ітерацій N=1000, встановіть прапорець Ітерація.

Виконайте команду меню Сервіс/Підбір параметра. У діалоговому вікні (рисунок 9) заповніть такі поля: