Программное обеспечение и методы решения

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 15.11.2016
Размер файла 423,4 K

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

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

Размещено на http://www.allbest.ru/

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

Государственное образовательное учреждение высшего профессионального образования

«Нижегородский государственный университет им Н.И. Лобачевского»

Отчет о выполнении лабораторной работы

Нижний Новгород 2016

Содержание

ПОСТАНОВКА ЗАДАЧИ

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И МЕТОДЫ РЕШЕНИЯ

КОНТРОЛЬНЫЙ ПРИМЕР

ПОСТАНОВКА ЗАДАЧИ

Написать программу для нахождения с заданной точностью одной из корней следующего уравнения:

x2-0.4*x-2*sin(x*Pi)/x=0

программное обеспечение И МЕТОДЫ РЕШЕНИЯ

Методы решения

• Метод деления пополам

Общий алгоритм

Задать начальный интервал ;

• Убедиться, что на концах функция имеет разный знак;

• Повторять

• выбрать внутри интервала точку ;

• сравнить знак функции в точке со знаком функции в одном из концов;

• если совпадает, то переместить этот конец интервала в точку ,

• иначе переместить в точку другой конец интервала;

пока не будет достигнута нужная точность.

Оценка погрешности

|x*-xn+1|<=|x*-xn|/2

Алгоритм

a=0.5,b=1

x=(a+b)/2;

если F(x)*F(a) то a=x

иначе b=x

пока |a-b|>e

• Метод касательных

Общая формула

Оценка погрешности

|xn+1-x*|<=M1/m1*|xn-xn-1|

Алгоритм

x1, x2=1

x1=x2

x2=x2-(F(x1)/(F'(x1)

пока |x2-x1|>e

• Метод секущих

Общая формула

Оценка погрешности

|xn+1-x*|<=M2/2m1*|xn-xn-1|2

Алгоритм

x1=1, x2=0.5, xN=0

y = xN;

xN=x2-((x2-x1)/(F(x2)-F(x1))*F(x2);

x1 = x2;

x2 = xN;

пока |xN-y|>e

• Метод хорд

Общая формула программный корень уравнение касательный

Оценка погрешности

| xn+1-x*|<=f(x)/m1

Алгоритм

a=1, b=0

пока |a-b|>e

b = a - (a - b) * F(a) / (F(a) - F(b));

a = b - (b - a) * F(b) / (F(b) -- F(a));

• Метод простых итераций

Общая формула

Оценка погрешности

|x*-xn+1|<=|x*-xn|

Алгоритм

x2=1, x1=0

x1=x2;

x2=fi(x1);

пока |x2-x1|>e

СПЕЦИФИКАЦИИ ФУНКЦИЙ

• bisection() - метод деления пополам

• tangent() - метод касательных

• all() - нахождение всех корней уравнения(модификация метода касательных)

• secant() - метод секущих

• chord() - метод хорд

• iteration() - метод простых итераций

• f(double x) - производная функции от х

• functionX(double x) - функция от х

• fi(double x) - функция нахождения эквивалентного уравнения

3.3. ИСХОДНЫЕ КОДЫ ФУНКЦИЙ

private static void bisection()

{

double a = 0.5, b = 1, x, tmp = 0;

double delta = b - a;

int n = 0;

do

{

x = (a + b) / 2;

if (Utils.functionX(x) * Utils.functionX(a) > 0) { a = x; }

else { b = x; }

n++;

if (n == 32) { tmp = x; }

}

while (Math.Abs(b - a) > e);

delta = (x - tmp) / 2;

Console.WriteLine("Метод деления пополам:");

Console.WriteLine("Корень уравнения = " + x);

Console.WriteLine("Количество итераций = " + n);

Console.WriteLine("Погрешность = " + delta);

} //деление пополам

private static void tangent()

{

double x1, x2 = 1, n = 0, delta = 0, tmp = 0;

do

{

x1 = x2;

x2 = x2 - (Utils.functionX(x1) / Utils.f(x1));

n++;

if (n == 2) { tmp = x2; }

} while (Math.Abs(x2 - x1) > e);

delta = 7.88 / -7.44 * Math.Abs(x2 - tmp);

Console.WriteLine("Метод касательной:");

Console.WriteLine("Корень уравнения = " + x2);

Console.WriteLine("Количество итераций = " + n);

Console.WriteLine("Погрешность = " + delta);

}//касательная

private static void secant()

{

double xN = 0, y, n = 0;

double x1 = 1, x2 = 0.5, tmp = 0, delta = 0;

n = 0;

do

{

y = xN;

xN = x2 - ((x2 - x1) / (Utils.functionX(x2) - Utils.functionX(x1))) * Utils.functionX(x2);

x1 = x2;

x2 = xN;

n++;

if (n == 5) { tmp = x2; }

} while (Math.Abs(y - xN) > e);

delta = 9.4784 / 2 * (-7.44) * Math.Pow(Math.Abs(x2 - tmp), 2);

Console.WriteLine("Метод cекущих:");

Console.WriteLine("Корень уравнения = " + x2);

Console.WriteLine("Количество итераций = " + n);

Console.WriteLine("Погрешность = " + delta);

}//секущая

private static void chord()

{

double b = 1;

double a = 0.5;

double n = 0;

double delta = 0;

n = 0;

while (Math.Abs(a - b) > e)

{

b = a - (a - b) * Utils.functionX(a) / (Utils.functionX(a) - Utils.functionX(b));

a = b - (b - a) * Utils.functionX(b) / (Utils.functionX(b) - Utils.functionX(a));

n++;

}

delta = Utils.functionX(a) / (-7.44);

Console.WriteLine("Метод хорд:");

Console.WriteLine("Корень уравнения = " + a);

Console.WriteLine("Количество итераций = " + n);

Console.WriteLine("Погрешность = " + delta);

}//хорды

private static void iteration()

{

double x2 = 1;

double x1 = 0;

double n = 0;

double tmp = 0, delta = 0;

do

{

x1 = x2;

x2 = Utils.fi(x1);

n++;

if (n == 11) { tmp = x2; }

} while (Math.Abs(x1 - x2) > e);

delta = Math.Abs(tmp - x2);

Console.WriteLine("Метод простой итерации:");

Console.WriteLine("Корень уравнения = " + x2);

Console.WriteLine("Количество итераций = " + n);

Console.WriteLine("Погрешность = " + delta);

}

private static void all()

{

double x1, x2 = 0, k = 1, n = 0, xPrev = 0;

while (k >=-1)

{

x2 = k;

do

{

x1 = x2;

x2 = x2 - (Utils.functionX(x1) / (Utils.f(x1)));

n++;

} while (Math.Abs(x2 - x1) > e);

if (Math.Abs(x2 - xPrev) > 0.1) { Console.WriteLine(x2); }

xPrev = x2;

k=k-0.1;

}

}

public static double functionX(double x)

{

return Math.Pow(x, 2) - 0.4 * x - (2 * Math.Sin((Math.PI) * x)) / x;

}

public static double fder(double x)

{

return 2 * x + 2 * Math.Pow(x, -2) * (Math.Sin(Math.PI * x) - Math.PI * x * Math.Cos(Math.PI * x)) - 0.4;

}

public static double fi(double x)

{

return x - 0.1163 * (Math.Pow(x, 2) - 0.4 * x - (2 * Math.Sin(Math.PI * x)) / x);

КОНТРОЛЬНЫЙ ПРИМЕР

E-модуль разницы двух последних приближений.

Корни уравнения получены при помощи смещения отрезка поиска корней для метода хорд. Из графика функции видно, что все корни уравнения лежат на отрезке от -1 до 1.

Корни уравнения, полученные программой:

0,92722574463187

-0,850574665887271

Размещено на Allbest.ru

...

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

  • Математический алгоритм вычисления корней нелинейного уравнения и его решение методом касательных. Особенности программной реализации решения таких уравнений. Процедура подготовки и решения задачи на ЭВМ, характеристика алгоритма и структуры программы.

    курсовая работа [96,6 K], добавлен 02.06.2012

  • Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.

    лабораторная работа [174,8 K], добавлен 02.10.2013

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

    курсовая работа [539,2 K], добавлен 15.06.2013

  • Разработка программы для нахождения корней нелинейных уравнений несколькими методами: методом хорд, касательных, половинного деления, итераций. Реализации программы с помощью системы программирования Delphi 7. Методика работы пользователя с программой.

    курсовая работа [1,3 M], добавлен 11.02.2013

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

    курсовая работа [665,7 K], добавлен 22.08.2013

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

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

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

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

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

    курсовая работа [1,3 M], добавлен 06.08.2013

  • Анализ метода касательных (метода секущих Ньютона), аналитическое решение нелинейного уравнения. Описание алгоритма решения задачи, пользовательских идентификаторов, блок-схем, программного обеспечения. Тестирование программы на контрольном примере.

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

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

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

  • Разработка проекта по вычислению корней нелинейных уравнений методом итераций, в среде программирования Delphi. Интерфейс программы и ее программный код, визуализация метода. Сравнение результатов решения, полученных в Mathcad 14 и методом итераций.

    контрольная работа [1,9 M], добавлен 10.12.2010

  • Структура языка Паскаль, встроенные процедуры и функции. Составление алгоритма решения уравнения, описывающего работу кривошипно-шатунного механизма, с помошью метода итерации, метода Гаусса и метода Зейделя. Блок-схемы алгоритмов и текст программы.

    курсовая работа [64,6 K], добавлен 07.05.2011

  • Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.

    курсовая работа [423,0 K], добавлен 17.02.2010

  • Описание алгоритма создания программы для решения алгебраических или трансцендентных уравнений с помощью численного метода Бернулли. Нахождение значений корней алгебраического уравнения с заданными параметрами точности. Листинг программы на языке java.

    контрольная работа [206,0 K], добавлен 19.06.2015

  • Метод хорд решения нелинейных уравнений. Вычисление интеграла методом Симпсона. Процесс численного решения уравнения. Окно программы расчета корней уравнения методом хорд. Алгоритм вычисления интеграла в виде блок-схемы. Выбор алгоритма для вычислений.

    курсовая работа [832,6 K], добавлен 24.07.2012

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

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

  • Метод численного интегрирования. Использование метода половинного деления для решения нелинейного уравнения. Определение отрезка неопределенности для метода половинного деления. Получение формулы Симпсона. Уменьшение шага интегрирования и погрешности.

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

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

    курсовая работа [3,1 M], добавлен 15.06.2013

  • Разработка программы нахождения значения определенного интеграла с помощью метода трапеций. Оценка абсолютной погрешности метода. Использование среды программирования Visual Studio Community 2015 для написания программы. Работа с графическим интерфейсом.

    курсовая работа [573,8 K], добавлен 17.03.2016

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

    курсовая работа [578,2 K], добавлен 10.02.2011

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