Решение нелинейных уравнений методом деления отрезка пополам

Вычисление корня функции нелинейного уравнения методом деления отрезка пополам. Способы ввода, вывода и организации данных. Модульная организация программы. Разработка блок-схемы алгоритма задачи. Порядок создания программы на алгоритмическом языке.

Рубрика Математика
Вид реферат
Язык русский
Дата добавления 28.10.2010
Размер файла 30,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «КЕМЕРОВСКИЙ

ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Математический факультет

Кафедра автоматизации исследований и технической кибернетики

Реферат

Решение нелинейных уравнений методом деления отрезка пополам

студента 3 курса

Ткаченко Ивана Сергеевича

Специальность 010501

«Прикладная математика и информатика»

Преподаватель:

Преслер В.Т.

КЕМЕРОВО 2009

Оглавление

  • 1 Формулировка задачи
  • 2 Математическая постановка задачи
    • 2.1 Метод решения задачи
    • 2.2 Способы ввода, вывода и организации данных
    • 2.3 Исключительные ситуации и реакция на них
    • 2.4 Модульная организация программы
    • 2.5 Спецификация данных
    • 2.6 Организация вычислительного процесса
  • 3 Разработка блок-схемы алгоритма задачи
  • 4 Создание программы на алгоритмическом языке
  • 5 Построение тестов и отладка программы

1 Формулировка задачи

Найти корни нелинейного уравнения . Значения коэффициентов , границы отрезка интегрирования и значение допустимой погрешности задаются пользователем.

2 Математическая постановка задачи

2.1 Метод решения задачи

Вычисление корня функции методом деления отрезка пополам.

Корень функции F(x) -- это такое значение ее аргумента х*, при котором выполняется условие F(x*) = 0. Известно, что для решения такого уравнения необходимо задать интервал [a, b], на котором будет происходить поиск решения. Если решение действительно существует, является на этом интервале единственным , принадлежит заданному интервалу и функция F(x) принимает на границах интервала значения противоположных знаков. Другими словами, произведение значений функции на границах интервала отрицательно: F(a)F(b) < 0. Далее исходный интервал делится средней точкой с = (а+b)/2 на две равные части, из которых выбирается лишь та, которая содержит решение уравнения. Процедура деления отрезка пополам повторяется до тех пор, пока корень функции не будет найден с заданной точностью. Оценкой погрешности в данном случае может быть величина последнего интервала |а-b| или значение |F(x)|.

2.2 Способы ввода, вывода и организации данных

Исходные данные в этой задаче - это коэффициенты уравнения, точность решения и отрезок [a,b], на котором ищется решение уравнения.

Под внутренней формой будем понимать организацию данных в оперативной памяти. При этом будем использовать два типа этой организации - явного отображения посредством окна вывода сообщений и неявного размещения в памяти в форме простых переменных.

Результат этой задачи, т.е. корень будем отображать сразу в этом окне вывода сразу после его нахождения.

Вычислительный процесс этой задачи базируется на координатах отрезка[a,b] , точности e вещественного типа и функцие .

2.3 Исключительные ситуации и реакция на них

Исключительные ситуации могут возникнуть тогда, когда введены коэффициенты уравнения, при которых нет действительных корней. При возникновении этой ситуации программа прекращает работу, выводит сообщение о том, что у этого уравнения нет действительных корней. Также исключительная ситуация возникает тогда, когда отрезок, на котором ищется решение уравнения не имеет корней или имеет два корня. В этом случае программа прекращает работу и выводит сообщение о том, что неправильно задан отрезок. Для того, чтобы правильно задать отрезок программа выводит корни этого уравнения, найденные методом решения квадратных уравнений.

2.4 Модульная организация программы

Решение поставленной задачи представляет форму программной реализации алгоритма как цельная программа и функция, к которой обращается главная программа.

2.5 Спецификация данных

При рекурсивной организации программы имеем стандартный модуль, но содержащий функцию funct. Функция funct типа real. Функция возвращает значения. Все переменные в программе глобальные. Значения коэффициентов передаются в функцию.

Исходные данные:

a0, a1, a2 - коэффициенты уравнения типа Real;

e - точность решения типа Real;

a, b - координаты отрезка типа Real.

Результирующие данные:

x - переменная хранящая значение точки(I итерация, корень) типа Real;

i - счетчик итераций типа Integer.

Промежуточные данные:

x_pre - переменная, хранящая предыдущее значение точки (i-1 итерация) типа Real;

d - дискриминант типа Real;

x1 -первый корень уравнения, найденный методом решения квадратных уравнений через дискриминант типа Real;

x2 - второй корень уравнения, найденный методом решения квадратных уравнений через дискриминант типа Real;

2.6 Организация вычислительного процесса

Вычислительный процесс базируется на следующем подходе. Проверяем есть ли у заданного уравнения действительные корни по формуле: D=a1^2-a0*a2. Если D<0, значит действительных корней нет и решить такую систему у нас не получится. Если действительные корни есть, то найдем их методом решения квадратных уравнений через дискриминант. Проверим единственность корня на заданном отрезке [a,b]. Если на этом отрезке существует не один корень или вообще не существует корней, то надо задать другой отрезок. Затем делим отрезок пополам и проверяем на какой его половине лежит корень. Для этого значение функции должна быть разного знака на концах отрезка. Полученный отрезок мы опять делим пополам. Этот итерационный процесс мы продолжаем до тех пор пока модуль разности между точкой, полученной на i-й итерации и точкой, полученной на (i-1) итерации не будет меньше заданной точности. Это и будет корнем уравнения.

3 Разработка блок-схемы алгоритма задачи

Блок-схема решения задачи представлена ниже

4 Создание программы на алгоритмическом языке

Для реализации программы решения поставленной задачи использован алгоритмический язык VBA, возможности которого достаточны для реализации задач подобного типа. Для отображения результатов (корни уравнения) использовано Windows-окно для вывода сообщений. Результат, выводимый через это окно, сохраняется только на время его существования. Ниже представлен листинг варианта программы, разработанный согласно представленной расчетной схемы и графическому алгоритму.

Private a0, a1, a2, e, a, b, x, i

Private Sub CommandButton1_Click()

a0 = CDbl(TextBox2.Text)

a1 = CDbl(TextBox3.Text)

a2 = CDbl(TextBox4.Text)

e = CDbl(TextBox5.Text)

a = CDbl(TextBox9.Text)

b = CDbl(TextBox10.Text)

d = a1 ^ 2 - 4 * a0 * a2

TextBox14.Text = d

If d < 0 Then

Label16.Visible = True

TextBox7.Text = ""

TextBox8.Text = ""

TextBox11.Text = ""

TextBox12.Text = ""

TextBox13.Text = ""

Exit Sub

Else

Label16.Visible = False

End If

x1 = (-a1 - d ^ (1 / 2)) / 2 * a0

x2 = (-a1 + d ^ (1 / 2)) / 2 * a0

TextBox12.Text = x1

TextBox13.Text = x2

t = 0

If (a < x1) And (a < x2) And (b > x1) And (b > x2) Then t = 1

If (a < x1) And (a < x2) And (b < x1) And (b < x2) Then t = 1

If (a > x1) And (a > x2) And (b > x1) And (b > x2) Then t = 1

If (a > x1) And (a < x2) And (b > x1) And (b < x2) Then t = 1

If t = 1 Then

Label14.Visible = True

TextBox7.Text = ""

TextBox8.Text = ""

TextBox11.Text = ""

Exit Sub

Else

Label14.Visible = False

Label16.Visible = False

i = 0

x = a

Do

i = i + 1

x_pre = x

x = (a + b) / 2

If funct(a) * funct(x) > 0 Then

a = x

Else

b = x

End If

Loop While (Abs(x - x_pre) > e)

TextBox7.Text = x

TextBox8.Text = i

TextBox11.Text = funct(x)

End If

End Sub

Private Sub CommandButton3_Click()

UserForm1.Hide

End Sub

Function funct(x)

funct = a0 * x ^ 2 + a1 * x + a2

End Function

5 Построение тестов и отладка программы

В программе всегда выводятся корни, полученные методом решения квадратного уравнения, чтобы сравнить их с полученными результатами, найденными при помощи метода деления отрезка пополам. В ходе тестирования программы ошибок выявлено не было. Результаты всегда находятся с точность до заданного е.


Подобные документы

  • Приближенные значения корней. Метод дихотомии (или деление отрезка пополам), простой итерации и Ньютона. Метод деления отрезка пополам для решения уравнения. Исследование сходимости метода Ньютона. Построение нескольких последовательных приближений.

    лабораторная работа [151,3 K], добавлен 15.07.2009

  • Изучение способов решения нелинейных уравнений: метод деления отрезка пополам, комбинированный метод хорд и касательных. Примеры решения систем линейных алгебраических уравнений. Особенности математической обработки результатов опыта, полином Лагранжа.

    курсовая работа [181,1 K], добавлен 13.04.2010

  • Графическое решение нелинейного уравнения. Уточнение значение одного из действительных решений уравнения методами половинного деления, Ньютона–Рафсона, секущих, простой итерации, хорд и касательных, конечно-разностным и комбинированным методом Ньютона.

    лабораторная работа [32,7 K], добавлен 11.06.2011

  • Нелинейные уравнения, определение корней. Первая теорема Бальцано-Коши. Метод бисекций (деления пополам) и его алгоритм. Использование линейной интерполяции граничных значений заданной функции в методе хорд. Тестовое уравнение, компьютерный эксперимент.

    реферат [104,3 K], добавлен 10.09.2009

  • Математическая задача оптимизации. Минимум функции одной и многих переменных. Унимодальные и выпуклые функции. Прямые методы безусловной оптимизации и минимизации, их практическое применение. Методы деления отрезка пополам (дихотомия) и золотого сечения.

    курсовая работа [2,0 M], добавлен 26.08.2009

  • Исследование сущности и сфер применения метода итераций. Нелинейные уравнения. Разработка вычислительный алгоритм метода итераций. Геометрический смысл. Составление программы решения систем нелинейных уравнений методом итераций в среде Turbo Pascal.

    реферат [183,7 K], добавлен 11.04.2014

  • Методы решения одного нелинейного уравнения: половинного деления, простой итерации, Ньютона, секущих. Код программы решения перечисленных методов на языке программирования Microsoft Visual C++ 6.0. Применение методов к конкретной задаче и анализ решений.

    реферат [28,4 K], добавлен 24.11.2009

  • Анализ особенностей разработки вычислительной программы. Общая характеристика метода простых итераций. Знакомство с основными способами решения нелинейного алгебраического уравнения. Рассмотрение этапов решения уравнения методом половинного деления.

    лабораторная работа [463,7 K], добавлен 28.06.2013

  • Решение нелинейных уравнений методом касательных (Ньютона), особенности и этапы данного процесса. Механизм интерполирования функции и численное интегрирование. Приближенное решение обыкновенных дифференциальных уравнений первого порядка методом Эйлера.

    курсовая работа [508,1 K], добавлен 16.12.2015

  • Контрольный пример к алгоритму метода хорд. Вычисление и уточнение корня методом хорд и касательных. Нахождение второй производной заданной функции. Уточненное значение корня решаемого уравнения на заданном интервале. Код программы данного примера.

    лабораторная работа [276,9 K], добавлен 02.12.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.