Приложение для решения трансцендентного уравнения

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 25.05.2019
Размер файла 1,3 M

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

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

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

Содержание

  • Введение
  • 1. Методические указания по решению алгебраических и трансцендентных уравнений
  • 2. Метод итераций
  • 3. Алгоритм метода итераций
  • 4. Метод Ньютона
  • 5. Алгоритм метода Ньютона
  • 6. Метод половинного деления
  • 7. Алгоритм метода половинного деления
  • 8. Листинг - Текст программы
  • 9. Листинг - Результаты работы программы
  • Вывод

Введение

Цель работы:

· работы в среде визуального программирования Delphi;

· программного решения трансцендентного уравнения численными методами;

· разработки интерфейса приложения с использованием базовых компонентов библиотеки VCL.

Задание на выполнение работы

Разработать приложение для решения трансцендентного уравнения следующими методами:

· итераций;

· Ньютона;

· половинного деления.

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

Уравнение:

Отрезок, содержащий корень: [1,2; 2].

Приближенное значение корня: 1,3077.

Таблица компонентов

Имя компонента

Тип компонента

Назначение

TForm1

TForm

Форма, на которой располагаются компоненты

Label1

TLabel

Вывод результата программы

Label2

TLabel

Вывод текста на форму

Label3

TLabel

Вывод текста на форму

Edit1

TEdit

Ввод данных

Edit2

TEdit

Ввод данных

Edit3

TEdit

Ввод данных

Button1

TButton

Очистка данных

Button2

TButton

Выбор метода решения

Button3

TButton

Выбор метода решения

Button4

TButton

Выбор метода решения

1. Методические указания по решению алгебраических и трансцендентных уравнений

В практических вычислениях довольно часто приходится решать уравнения вида:

(1)

где функция f(x) определена и непрерывна на некотором конечном или бесконечном интервале a < x< b.

Если функция представляет собой многочлен, то уравнение (1) называют алгебраическим, если же в функцию f(x) входят элементарные (тригонометрические, логарифмические, показательные и т. п.) функции, то такое уравнение называют трансцендентным.

Всякое значение x*, обращающее функцию f(x) в нуль, т. е. такое, что

называется корнем уравнения (1), а способ нахождения этого значения x* и есть решение уравнения (1).

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

При этом приходится решать две задачи:

1) отделение корней, т. е. отыскание достаточно малых областей, в каждой из которых заключен один и только один корень уравнения;

2) вычисление корней с заданной точностью.

При выделении областей, в которых находятся действительные корни уравнения (1), можно воспользоваться тем, что если на концах некоторого отрезка непрерывная функция f(x) принимает значения разных знаков, то на этом отрезке уравнение f(x)=0 имеет хотя бы один корень.

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

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

При изложении этих методов считаем, что нам известен отрезок , внутри которого существует и располагается один и только один из корней уравнения (1).

Задача состоит в нахождении этого корня.

2. Метод итераций

Уравнение (1) представим в форме:

(2)

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

При этом .

Выберем на отрезке произвольную точку - нулевое приближение, и примем в качестве следующего приближения

далее

и вообще пусть получается из по формуле

. (3)

Этот процесс последовательного вычисления чисел по формуле (3) называется методом итераций.

Геометрическая интерпретация метода итераций представлена на рисунке 1.

Рисунок 1 - Геометрическая интерпретация метода итераций

Если на отрезке , содержащем корень x = x* уравнения (2), а также его последовательные приближения вычисляемые по методу итераций, выполнено условие

(4)

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

(5)

при этом всегда будет выполнено неравенство

где - заданная предельная абсолютная погрешность корня х*.

Если то и вместо (5) можно пользоваться более простым соотношением

(6)

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

При практическом нахождении корней по методу итераций нужно при переходе от уравнения (1) к уравнению (2) стремиться представить так, чтобы производная по абсолютной величине была возможно меньше 1. В этом случае корень будет всегда найден и чем меньше величина q, тем меньшее число итераций для этого потребуется.

Для приведения уравнения (1) к виду (2) может быть применен достаточно общий прием, обеспечивающий выполнение неравенства (4).

Пусть

(7)

при , где - наименьшее значение производной , а - наибольшее значение производной на отрезке .

Если производная отрицательна, то вместо уравнения рассматриваем уравнение .

Заменим уравнение (1) эквивалентным ему уравнением

Подберем параметр таким образом, чтобы выполнялось неравенство

при .

Учитывая условие (7), можно выбрать

и ,

при этом условие сходимости метода итераций будет выполнено.

3. Алгоритм метода итераций

алгебраический уравнение алгоритм delphi

Методом итераций найти корень уравнения

(8)

расположенный на отрезке [-0,5; 0], с абсолютной погрешностью . Определить также число итераций, необходимое для нахождения корня.

Уравнение (8) преобразуем к виду (2) следующим образом:

Это уравнение может быть легко преобразовано к виду

где (9)

Находим . Очевидно,

для всех . Поэтому , и процесс итераций сходится.

За начальное приближение можно принять любую точку отрезка , например, . Алгоритм нахождения корня уравнения (8) представляет следующую последовательность действий:

1 Полагаем и .

2 Вычисляем следующее приближение по формуле

. (10)

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

4 Проверяем условие . Если это условие выполняется, то возвращаемся к вычислению следующего приближения по формуле (10), т. е. к пункту 2. Если условие не выполняется, т. е. , то результатом считаем величину и заканчиваем вычисления. При этом значение будет равно числу выполненных итераций.

При составлении блок-схемы и программы вводить переменную с индексом нет необходимости, поскольку результатом будет одно число (корень уравнения), а все последовательные приближения в конечном счете не нужны. Кроме того, для каждого значения индекса отводится свое место в памяти вычислительной машины, а это приводит к неразумному использованию памяти. На каждом этапе вычислений необходимо помнить лишь два соседних приближения, поэтому приближение обозначим через х, а приближение - через у. По окончании каждой итерации будем полагать x = y.

4. Метод Ньютона

Пусть уравнение имеет один корень на отрезке , причем и определены, непрерывны и сохраняют постоянные знаки на отрезке .

Рассмотрение метода Ньютона начнем с его геометрического представления (рисунок 3).

Рисунок 3 - Геометрическое представление метода Ньютона

Возьмем некоторую точку отрезка и проведем в точке графика функции касательную к кривой до пересечения с осью Ох. Абсциссу точки пересечения можно взять в качестве приближенного значения корня. Проведя касательную через новую точку и находя точку ее пересечения с осью Ox, получим второе приближение корня . Аналогично определяются последующие приближения.

Выведем формулу для последовательных приближений к корню. Уравнение касательной, проходящей через точку , имеет вид:

Полагая , находим абсциссу точки пересечения касательной с осью Ox:

Следующие приближения находим соответственно по формулам:

……………………….. (11)

Процесс вычисления приближений прекратим при выполнении условия

(12)

где - наименьшее значение на отрезке ; - наибольшее значение на отрезке .

При этом условии будет выполнено неравенство

где - заданная предельная абсолютная погрешность корня .

Заметим, что если не больше, чем на два порядка превышает , то неравенство (12) заведомо выполняется, если

(13)

Например, при в этом случае можно вместо (12) пользоваться более простым условием:

Начальное приближение целесообразно выбирать так, чтобы было выполнено условие

. (14)

В противном случае сходимость метода Ньютона не гарантируется.

Чаще всего выбирают или , в зависимости от того, для какой из этих точек выполняется условие (14).

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

5. Алгоритм метода Ньютона

Методом Ньютона найти корень уравнения

(15)

на отрезке , с абсолютной погрешностью .

Находим .

Расчетная формула для уравнения (15) по методу Ньютона имеет вид

где

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

Найдем - наименьшее значение на отрезке . и поэтому

Далее находим - наибольшее значение на отрезке . и поэтому Таким образом, условие выполняется и для проверки точности вычислений можно воспользоваться условием (13).

Алгоритм нахождения корня уравнения (15) представляет следующую последовательность действий:

1 Полагаем и .

2 Вычисляем следующее приближение по формуле

(16)

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

4 Проверяем условие . Если это условие выполняется, то возвращаемся к вычислению следующего приближения по формуле (16), т. е. к пункту 2. Если условие не выполняется, т. е. , то за результат принимаем величину и заканчиваем вычисления. При этом значение равно числу выполненных итераций. Как и в методе итераций, переменную с индексом не вводим, приближение обозначим через х, а приближение - через у.

6. Метод половинного деления

Пусть дано уравнение , где функция непрерывна на отрезке и .

Если вид функции достаточно сложный, то вычисление функций в методе Ньютона и , необходимой для оценки сходимости в методе итераций, затруднительно. Для решения таких уравнений можно использовать метод половинного деления, который, хотя и требует значительного объема вычислительной работы, но всегда приводит к искомому результату.

Для нахождения корня уравнения (1), принадлежащего отрезку , делим отрезок пополам, т. е. выбираем начальное приближение равным . Если , то является корнем уравнения. Если , то выбираем тот из отрезков или , на концах которого функция имеет противоположные знаки. Полученный отрезок снова делим пополам и проводим то же рассмотрение и т. д.

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

7. Алгоритм метода половинного деления

Методом половинного деления найти корень уравнения

(17)

на отрезке с абсолютной погрешностью .

Алгоритм нахождения корня уравнения (17) представляет следующую последовательность действия:

1 Полагаем и .

2 Вычисляем .

3 Вычисляем и значение функции в этой точке.

4 Проверяем условие . Если это условие выполняется, то считаем корнем и заканчиваем вычисления. Если условие не выполняется, то переходим к выбору отрезка, на концах которого функция имеет разные знаки, а именно:

5 Проверяем условие . Если это условие выполняется, то полагаем и переходим к пункту 6. Если условие не выполняется, то полагаем и переходим к пункту 6.

6 Проверяем условие . Если оно выполняется, то возвращаемся к процессу деления отрезков пополам, т.е. к пункту 3. Если условие не выполняется, т.е. , то за результат принимаем значение и заканчиваем вычисления.

8. Листинг - Текст программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var x,e,y,d:real; n:integer;

begin

x:=1.2; e:=0.0001; n:=0;

if abs(1/sqr(x)*cos(1/x))>=1 then

begin

x:=999;

edit1.text:=floattostr(x);

edit3.text:='Процесс расходится';

end

else

repeat

y:=2.5-sqrt(x)-exp(ln(x)/3);

d:=abs(y-x);

x:=y;

n:=n+1;

until d<=e;

edit1.text:=floattostr(n);

edit2.Text:=floattostr(x);

label1.caption:='Метод итераций';

edit3.text:='Процесс сходится';

end;

procedure TForm1.Button2Click(Sender: TObject);

var x,e,y,d,m1,m2,a,b:real; n:integer;

begin

x:=1.2; e:=0.0001; n:=0; a:=0.4; b:=1;

m1:=abs(1+0.5*exp(ln(b)*(-0.5))+exp(ln(b)*(-2/3))/3);

m2:=abs(-(9*exp(ln(a)*(-1.5))+8*exp(ln(a)*(-5/3)))/36);

if 2*m1/m2<=0.01 then

begin

x:=999;

edit1.text:=floattostr(x);

edit3.text:='Процесс расходится';

end

else

repeat

y:=x-(x+sqrt(x)+exp(ln(x)/3)-2.5)/(1+0.5*exp(ln(x)*(-0.5))+exp(ln(x)*(-2/3))/3);

d:=abs(y-x);

x:=y; n:=n+1;

until d<=e;

edit1.text:=floattostr(n);

edit2.Text:=floattostr(x);

edit3.text:='Процесс сходится';

end;

procedure TForm1.Button3Click(Sender: TObject);

var x,e,y,a,b,ya:real; n:integer;

begin

n:=0; a:=0.4; b:=1; e:=0.0001;

ya:=a+sqrt(a)+exp(ln(a)/3)-2.5;

repeat

x:=(a+b)/2;

y:=x+sqrt(x)+1/sqr(x)*cos(1/x);

if exp(x)-exp(-x)-2<>0 then

if y*ya<0 then begin b:=x; n:=n+1; end

else begin a:=x; ya:=y; n:=n+1; end;

until (b-a)<=e;

edit1.text:=floattostr(n);

edit2.Text:=floattostr(x);

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

edit1.Clear;

edit2.clear;

edit3.clear;

end;

end.

9. Листинг - Результаты работы программы

Рисунок 1 - Метод Ньютона

Рисунок 2 - Метод итераций

Рисунок 3 - Метод половинного деления

Вывод

В ходе выполнения данной лабораторной работы было разработано приложение, позволяющее решить трансцендентное уравнение методами итераций, Ньютона и половинного деления. Компоненты Edit используются для ввода данных пользователем, Label служит для размещения текста на форме, Button предназначены для выбора метода решения.

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

...

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

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

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

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

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

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

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

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

    реферат [95,0 K], добавлен 06.03.2011

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

    контрольная работа [2,4 M], добавлен 16.12.2011

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

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

  • Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.

    задача [163,4 K], добавлен 16.12.2009

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

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

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

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

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

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

  • Решение уравнения методом половинного деления. Программа в Matlab для уравнения (x-2)cos(x)=1. Решение нелинейных уравнений методом Ньютона. Интерполяция заданной функции. Решение системы линейных алгебраических и обыкновенных дифференциальных уравнений.

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

  • Метод половинного деления как один из методов решения нелинейных уравнений, его основа на последовательном сужении интервала, содержащего единственный корень уравнения. Алгоритм решения задачи. Описание программы, структура входных и выходных данных.

    лабораторная работа [454,1 K], добавлен 09.11.2012

  • Описание методов дихотомии (половинного деления) и касательных. Их применение для решения нелинейных уравнений. Графическое отделение корней. Блок-схемы алгоритмов. Тексты (листинги) программ на языке Delphi. Тестовый пример решения задачи с помощью ЭВМ.

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

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

    курсовая работа [939,4 K], добавлен 16.01.2014

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

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

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

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

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

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

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

    практическая работа [321,9 K], добавлен 24.06.2012

  • Исследование количества, характера и расположения корней. Определение их приближенных значений итерационными методами: половинного деления (дихотомии) и хорд. Тексты программ. Решение уравнений на языках программирования Borland Delfi и Turbo Pascal.

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

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

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

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