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

Г.

Байконур 2016г.

Цель работы:

Освоить:

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

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

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

Краткий теоретический материал

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (1)

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

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

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

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

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

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

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

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

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

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

При изложении этих методов считаем, что нам известен отрезок Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , внутри которого существует и располагается один и только один из корней уравнения (1).

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

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

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (2)

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

При этом Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

Выберем на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru произвольную точку Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - нулевое приближение, и примем в качестве следующего приближения

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

далее

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

и вообще пусть Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru получается из Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru по формуле

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru . (3)

Этот процесс последовательного вычисления чисел Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru по формуле (3) называется методом итераций.

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (4)

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (5)

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

где Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - заданная предельная абсолютная погрешность корня х*.

Если Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru то Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru и вместо (5) можно пользоваться более простым соотношением

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (6)

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

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

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

Пусть

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (7)

при Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , где Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - наименьшее значение производной Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , а Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - наибольшее значение производной Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

Если производная Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru отрицательна, то вместо уравнения Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru рассматриваем уравнение Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

Подберем параметр Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru таким образом, чтобы выполнялось неравенство

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru при Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

Учитывая условие (7), можно выбрать Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru и Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , при этом условие сходимости метода итераций будет выполнено.

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

Пусть уравнение Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru имеет один корень на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , причем Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru и Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru определены, непрерывны и сохраняют постоянные знаки на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

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

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

Полагая Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , находим абсциссу Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru точки пересечения касательной с осью Ox:

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (12)

где Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - наименьшее значение Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru ; Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - наибольшее значение Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

где Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru - заданная предельная абсолютная погрешность корня Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

Заметим, что если Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru не больше, чем на два порядка превышает Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , то неравенство (12) заведомо выполняется, если

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru (13)

Например, при Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru в этом случае можно вместо (12) пользоваться более простым условием:

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

Начальное приближение Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru целесообразно выбирать так, чтобы было выполнено условие

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru . (14)

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

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

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

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

Пусть дано уравнение Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru , где функция Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru непрерывна на отрезке Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru и Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

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

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

Процесс деления отрезков пополам продолжаем до тех пор, пока длина отрезка, на концах которого функция имеет противоположные знаки, не будет меньше наперед заданного числа Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru .

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

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

· итераций;

· Ньютона;

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

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

Вариант 1

Уравнение:

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

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

Проектирование формы показано на рисунке 1.

Краткое описание всех компонентов, которые использовались при разработке приложения, представлено в таблице 1.

Текст программы представлен в приложении А.

Результат выполнения программы представлен в приложении Б.

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

Рисунок 1. Проектирование формы

Таблица 1- Краткое описание всех компонентов

Название Компонент Назначение
  «Выполнить»   Button1 Используется для создания кнопок, которыми пользователь выполняет команды в приложении
    « »   Edit1 Edit2 Edit3 Edit4 Edit5 Edit6 Отображение, ввод и редактирование однострочных текстов. Имеется возможность оформления объемного бордюра. Основное свойство - Text
«Начало» Label1 Отображение текста, который не изменяется пользователем. Никакого оформления текста не предусмотрено, кроме цвета метки и текста. Основное свойство – Caption.
«Конец» Label2
«Точность вычислений» Label3
«Результат» Label4
«Количество итераций» Label5
«X0» Label6

Продолжение таблицы 1-Краткое описание всех компонентов

  «Отрезок, содержащий корень»   GroupBox1 Служит для объединения нескольких компонентов с целью удобства пользования программой.
«Метод итераций» RadioButton1 Предлагают пользователю набор альтернатив, из которого выбирается одна. Набор реализуется требуемым количеством радиокнопок, размещенных в одном контейнере
«Метод Ньютона» RadioButton2
«Метод половинного деления» RadioButton3
  «Выбор метода вычислений»   RadioGroup1 Это панель, которая может содержать регулярно расположенные столбцами и строками радиокнопки.

Вывод:

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

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

Приложение А

Текст программы

(обязательное)

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

RadioGroup1: TRadioGroup;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

GroupBox1: TGroupBox;

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit3: TEdit;

Label3: TLabel;

Button1: TButton;

Edit4: TEdit;

Edit5: TEdit;

Label4: TLabel;

Label5: TLabel;

Edit6: TEdit;

Label6: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure uravnenie;

var x,x0,a,b,e,z,g,d: real;

n: integer;

function f(x:real):real;

begin

f:=3*sin(sqrt(x))+0.35*x-3.8;

end;

function y(x:real):real;

begin

y:=(3.8-3*sin(sqrt(x)))/0.35;

end;

function y1(x:real):real;

begin

y1:=(3*cos(sqrt(x)))/(0.35*2*sqrt(x));

end;

function f1(x:real):real;

begin

f1:=(3*cos(sqrt(x))/2*sqrt(x))+3.5;

end;

function f2(x:real):real;

begin

f2:=(-3*sin(sqrt(x))-(3*cos(sqrt(x))/sqrt(x)))/4*x;

end;

begin

a:=strtofloat(form1.edit1.text);

b:=strtofloat(form1.Edit2.Text);

e:=strtofloat(form1.edit3.Text);

x0:=strtofloat(form1.Edit6.Text);

if form1.RadioButton1.Checked then

begin

n:=0;

x:=x0;

if y1(x0)<1 then

begin

repeat

z:=y(x);

g:=abs(z-x);

x:=z;

n:=n+1;

until g<e;

form1.Edit4.Text:=floattostr(x);

form1.Edit5.Text:=inttostr(n);

end

else MessageDLG('Условие сходимости не выпонено. Выберите другое значение X0',mtError,[mbOK],0);

end;

if form1.radiobutton2.Checked then

begin

n:=0;

x:=x0;

if f(x0)*f2(x0)>0 then

begin

repeat

z:=x-(f(x)/f1(x));

g:=abs(z-x);

x:=z;

n:=n+1;

until g<e;

form1.Edit4.Text:=floattostr(x);

form1.Edit5.Text:=inttostr(n);

end

else MessageDLG('Условие сходимости не выпонено. Выберите другое значение X0',mtError,[mbOK],0);

end;

if form1.RadioButton3.Checked then

begin

x0:=a; n:=0;

form1.Edit6.Text:=floattostr(x0);

z:=f(a);

repeat

x:=(a+b)/2;

d:=f(x); inc(n);

if d=0 then

exit

else

if z*d<0 then b:=x

else

begin a:=x; z:=d;

end;

until b-a<=e;

form1.Edit4.Text:=floattostr(x);

form1.Edit5.Text:=inttostr(n);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

uravnenie;

end;

end.

Приложение Б

Результат выполнения программы

(обязательное)

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

Метод Ньютона-ошибка

Краткий теоретический материал. · работы в среде визуального программирования Delphi; - student2.ru

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

Наши рекомендации