Приложение для решения трансцендентного уравнения
Методические указания по алгоритмам решения алгебраических и трансцендентных уравнений. Разработка приложения в среде визуального программирования 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