ПЗ №2. ПЗ 2. Деления. Цель
Скачать 398.93 Kb.
|
Решение алгебраических и трансцендентных уравнений методом половинного деления . Цель: Получение практических навыков решения нелинейных уравнений методом половинного деления Норма времени: 2 часа Обеспечивающие средства: компьютеры, программа Visual Studio. Порядок выполнения работы Теоретические сведения Пример: Методом половинного деления найти корень уравнения: cos(2/x) – 2 * sin(1/x) + 1/x = 0 на отрезке от 1 до 2 с точностью t = 0.0001. Метод половинного деления предполагает, что значения функции на концах заданного отрезка имеют разные знаки, например, «-» и «+». Следовательно, где-то на этом отрезке есть хотя бы одно такое x, при котором функция равна нулю. Рисунок 1 – Работа метода половинного деления Алгоритм нахождения значения x основан на делении заданного отрезка пополам и выборе той половины отрезка, у которой функция сохраняет разные по знаку значения. Процесс повторяется до тех пор, пока не будет найдено значение, при котором функция равна нулю или пока длина отрезка не станет меньше заданной в условии задачи точности t (в этом случае мы считаем, что тоже нашли корень уравнения). Алгоритм включает многократное вычисление значений функции при различных значениях аргумента. Поэтому целесообразно выделить этот процесс в самостоятельный метод, например, с именем f. Исходный код программы: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static double f( double a) { return (Math.Cos(2 / a) - 2 * Math.Sin(1 / a) + 1 / a); } static void Main() Практическое занятие №2 { double a, b, x, ya, yb, t; a = 1; b = 2; t = 0.0001; ya = f(a); x = (a + b) / 2; yb = f(x); while (b - a > t && yb != 0) { if (ya * yb < 0) { b = x; x = (a + b) / 2; yb = f(x); } else { a = x; ya = yb; x = (a + b) / 2; yb = f(x); } } Console.WriteLine( "Корень уравнения = {0}" , x); Console.WriteLine( "Для продолжения нажмите клавишу Enter" ); Console.ReadLine(); } } } Индивидуальные задания: Задание №1. Для заданного уравнения f(x)=0 найти один из его корней методом дихотомии, с точностью 10 -2 Варианты заданий: 1. ln x + x – 2 = 0; 2. ln x + 2x 2 – 6 = 0; 3. 2 ln x +2 x – 3 = 0; 4. ln x – x 2 + 5 = 0; 5. 2 ln 2 x + 2x 2 – 5 = 0; 6. sin x + x – 2 = 0; 7. sin x + 2x 2 – 3 = 0; 8. 3 sin x + x – 2 = 0; 9. cos x + 2x – 3 = 0; 10. cos x + x – 2 = 0; 11. cos x +3 x – 6 = 0; 12. 3 sin x + x 2 – 1 = 0; 13. 3 sin x – x + 3 = 0. Задание №2. Разработать программу, включающую отделение корня и уточнение корня методом половинного деления. Точность взять равной 10 -6 . Программу разработать в среде Visual Studio. Для реализации выбирать задание своего варианта. Контрольные вопросы: 1. Что такое отделение корня, опишите алгоритм выполнения отделения корня? 2. Как выполняется уточнение корня? 3. Опишите метод деления отрезка пополам. |