Программа для вычисления корней нелинейных уравнений итерационным методом
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
стоянии (Рисунок 3).
Рисунок 3 - Установка переключателя во включенное состояние
Подготовительная часть завершена, теперь можно запускать основную программу вычисления корня уравнения. Для этого нажимаем на кнопку Решить.
Над графиком появляется компонент TLabel, который отображает текущее состояние вычислительного процесса. Первый этап вычисления - рисование графика исходной функции (Рисунок 4).
Рисунок 4 - Рисование графика исходной функции
Вторым этапом является нахождение приближенного значения корня уравнения (Рисунок 5).
Рисунок 5 - Поиск приближенного значения корня
Далее следует рисование графиков биссектрисы и вспомогательной функции, пересечение которых и будет являться корнем уравнения (Рисунок 6, 7).
Рисунок 6 - Построение биссектрисы
Рисунок 7 - Построение графика вспомогательной функции
Заключительным и самым главным этапом вычисления является итеративный процесс нахождения пересечения графиков биссектрисы и вспомогательной функции (Рисунок 8).
Рисунок 8 - Поиск пересечения графиков
Когда точность найденного корня достигнет требуемой точности программа завершит свою работу и выведет результат в компонент TLabel, расположенный вверху окна приложения (Рисунок 9).
Рисунок 9 - Завершение вычислительного процесса
Как можно заметить, приближенное значение корня подтвердилось программно и корень был найден с достаточно большой степенью точности. Это говорит об успешной работе программы и, соответственно, правильной реализации алгоритма вычисления нелинейного уравнения методом простой итерации.
6. Применение программы
Разработанное мной приложение можно использовать в качестве учебного пособия для демонстрации вычисления корней нелинейных уравнений итерационным методом, т.к. весь процесс вычисления пошагово демонстрируется в программе с соответствующими пояснениями в виде описания текущего этапа вычисления.
Приложение
программа последовательный приближение
// Модуль UnitEquation.pasUnitEquation;Chart, Series, Forms, Windows, StdCtrls, SysUtils, Graphics;= class: extended;: extended;: boolean;: TLabel;: TLineSeries;: TLineSeries;: TPointSeries;Func(x: extended): extended;Phi(x: extended): extended;DrawMainFunc;FindApproxTrunc: extended;DrawBisector;DrawFuncPhi;FindCrossing(approxTrunc: extended): extended;DrawVertical(x0: extended): extended;DrawHorizontal(x0: extended): extended;DrawTrunc;ChangeAxes(leftMin, leftMax, bottomMin, bottomMax: extended);Create(Chart: TChart; labelPodskazka: TLabel);FindResult: extended;Accuracy: extended read fAccuracy write fAccuracy;ToAnimate: boolean read fToAnimate write fToAnimate;Result: extended read fResult;;TEquation.Create(Chart: TChart; labelPodskazka: TLabel);:= TLineSeries.Create(Chart);.Pen.Width := 2;.AddSeries(fLineSeriesFx);:= TLineSeries.Create(Chart);.Pen.Width := 2;.AddSeries(fLineBisector);:= TPointSeries.Create(Chart);.AddSeries(fPoint);:= labelPodskazka;;TEquation.FindResult: extended;approxTrunc: extended;.Clear;.Clear;.Clear;.Caption := Рисуем график исходной функции;;.Caption := Находим приближенное значение корня;:= FindApproxTrunc;.Caption := Приближенное значение: x = + FloatToStr(approxTrunc);.ProcessMessages;(3000);.Clear;.Caption := Строим биссектрису;;
fLabelPodskazka.Caption := Рисуем график вспомогательной функции;;.Caption := Ищем пересечение с биссектрисой;
3dofToAnimatethen.ProcessMessages;(500);;.Clear;.AddXY(x,Func(x));:=x+0.5;;:=x-0.5;;TEquation.DrawBisector;x:extended;.Clear;(1.5,4.5,1.5,4.5);:=2;x bound - step/2 + 2*step*(integer(toRight))) xor toRight dofToAnimate then.ProcessMessages;;.AddXY(x, bound);:= x - step + 2*step*(integer(toRight));;:= x + step - 2*step*(integer(toRight));;TEquation.DrawTrunc;;TEquation.ChangeAxes(leftMin, leftMax, bottomMin, bottomMax: extended);.ParentChart.Axes.Left.Minimum := leftMin;.ParentChart.Axes.Left.Maximum := leftMax;.ParentChart.Axes.Bottom.Minimum := bottomMin;.ParentChart.Axes.Bottom.Maximum := bottomMax;;TEquation.Func(x: extended): extended;:= exp(x) + ln(x) - 10*x;;TEquation.Phi(x: extended): extended;:= x - 0.07*Func(x);;.