Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
/
ЗВІТ
До лабораторної роботи №1
МЕТОДИ УТОЧНЕННЯ КОРЕНІВ НЕЛІНІЙНИХ РІВНЯНЬ
Варіант №13
Львів – 2013
1. Мета роботи
Ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
2. Завдання
Варіант
Рівняння
Відрізок
13
x3 + x + 3 = 0
[–2;–1]
Комбінований метод хорд та дотичних
Метод хорд та дотичних дають наближення кореня з різних сторін (менше і більше від істинного значення). Тому доцільно використовувати обидва способи одночасно, завдяки чому уточнене значення кореня одержується швидше.
Нехай – початкове наближення кореня за методом хорд, а – за методом дотичних (див.рис.4).
Тоді провівши хорду та дотичну, одержимо відповідні наближення за методом хорд
і за методом дотичних
.
Або в загальному випадку
(11)
(12)
Рис. 4
Якщо припустима абсолютна похибка ε заздалегідь задана, то процес наближення припиняється, доки не буде виявлено, що
Після закінчення процесу за значення кореня х* краще взяти середнє арифметичне одержаних останніх значень
Кращий результат дає наступний порядок обчислень:
Знаходиться наближене значення кореня за методом Ньютона;
Знаходиться наближене значення кореня за методом хорд, використовуючи замість значення , знайдене за методом Ньютона, і процес повторюється до одержання бажаної похибки обчислень.
; .
Рис.5.
Алгоритм комбінованого методу метод хорд та дотичних
Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Laba1
{
class Programa
{
static void Main(string[] args)
{
One t = new One();
t.Vvid();
t.umova();
Console.Write("\nНатиснiть клавiшу Enter для того, щоб завершити програму...");
Console.ReadLine();
}
}
class One
{
public Double a, b, e, x1, x2;
public void Vvid()
{
Console.Write("\tВведiть межi вiдрiзку\n\nВведiть першу межу: ");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("Введiть другу межу: ");
b = Convert.ToDouble(Console.ReadLine());
Console.Write("Введiть похибку: ");
e = Convert.ToDouble(Console.ReadLine());
}
public void umova()
{
A:
x2 = b - (b * b * b + b + 3) /
(3 * b * b + 1);
x1 = a - (((a * a * a + a + 3) * (x2 - a)) /
((x2 * x2 * x2 + x2 + 3) - (a * a * a + a + 3)));
if (Math.Abs(x2 - x1) > e)
{
a = x1;
b = x2;
goto A;
}
else
{
double res, fun;
res = (a + b) / 2;
fun = res * res * res + res + 3;
Console.WriteLine("Значення функцiї: " + fun);
Console.WriteLine("\nВiдповiдь: \n\t" + res);
}
}
}
}
Результати виконання програми
/
Висновок:
Я ознайомився з методами уточнення коренів нелінійних рівнянь з одним невідомим.