Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Уточнение корней. 
Windows-приложение для решения специализированных уравнений

РефератПомощь в написанииУзнать стоимостьмоей работы

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

Уточнение корней. Windows-приложение для решения специализированных уравнений (реферат, курсовая, диплом, контрольная)

Уточнение корней методом касательных

На рисунке 2.7 представлена блок-схема алгоритма уточнения корней методом касательных.

В начале осуществляется ввод исходных данных: значения левого и правого концов отрезка локализации корня а и b, начальное приближение корня х (выбранное в соответствии с условием (2)), допустимая погрешность уточнения корня е и предварительно найденное минимальное значение модуля производной функции f (x) на отрезке локализации корня М.

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

Уточнение корней. Windows-приложение для решения специализированных уравнений.

.

Буквами f и p обозначены функция f (x) и её производная соответственно.

Далее осуществляется проверка условия достижения заданной точности, которое и является условием выхода из цикла (прекращения вычислений). После завершения выполнения цикла выводится уточнённое значение корня.

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

procedure TForm1. MetKas (beg, eps, ms: Extended);

{Описание функции}.

function getf (xs: Extended):Extended;

var f, a: Extended;

begin.

a:= ValA;

f:= ln (abs (ln (abs (xs*a))))+a*exp (ln (xs)*0.75)+a*sqr (ln (xs))*ln (xs) — sqrt (xs*a)+a;

getf:= f;

end;

{Описание производной функции}.

function getp (xs:real):real;

var a, p: Extended;

begin.

a:= ValA;

p:= 1/(xs*ln (xs*a))+0.75*a/(exp (ln (xs)*0.25))+(3*a*sqr (ln (xs)))/xs-a/(2*sqrt (xs*a));

getp:= p;

end;

function MK (x, e, M: Extended):Extended;

var x0, x1, x2: Extended;

begin.

repeat.

x0:=x;

x1:= getf (x0);

x2:= getp (x0);

x:=x0-getf (x0)/getp (x0);

until abs (getf (x))/M<=e;

MK:=x;

end;

{Раздел операторов}.

begin.

{Находим с помощью функции МК уточненное значение корня и при-сваиваем его переменной х}.

x:= 0;

x:=MK (beg, eps, ms);

Memo1. Lines. Add ('Уточненное значение корня x='+FloatToStr (x)); end;

Уточнение корней методом деления отрезка пополам

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

Блок-схема алгоритма уточнения корней методом деления отрезка пополам приведена на рисунке 2.8.

После ввода значений концов отрезка и допустимой погрешности в теле цикла с постусловием вычисляется приближение корня. Затем в блоках 4 и 6 выполняется поиск отрезка, содержащего корень. Если выполняется условие f (a) f (x)<0, то корень лежит на отрезке [a; х] и значение правого конца этого отрезка х заносится в переменную b; если это условие не выполняется, то проверяется условие f (b) f (x)<0. Если оно выполняется, корень лежит на отрезке [х; b] и значение левого конца этого отрезка х заносится в переменную a. Если же ни одно из этих условий не выполняется, то, очевидно, f (x)=0, т. е. х — точный корень уравнения, который и выводится.

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

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

procedure TForm1. MetDOP (beg, ends: Extended);

var a, b, x: Extended;

{Описываем функцию}.

function f (xs: Extended):real;

begin.

a:= ValA;

f:= ln (abs (ln (abs (xs*a))))+a*exp (ln (xs)*0.75)+a*sqr (ln (xs))*ln (xs) — sqrt (xs*a)+a;

end;

{Описываем функцию, реализующую основной алгоритм}.

function DOP (a, b: Extended):real;

label 1;

var x: real;

begin.

repeat.

x:=(a+b)/2;

if f (a)*f (x)<0 then b:=x.

else.

if f (b)*f (x)<0 then a:=x.

else goto 1;

until (b-a)<=2*Eps;

1:

DOP:=x;

end;

{Раздел операторов}.

begin.

a:= beg;

b:= ends;

x:=DOP (a, b);

MemoDOP. Lines. Add ('Уточненное значение корня x='+FloatToStr (x));

end;

Уточнение корней методом хорд

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

Уточнение корней. Windows-приложение для решения специализированных уравнений.

где с — значение конца отрезка, для которого выполняется условие.

Уточнение корней. Windows-приложение для решения специализированных уравнений.

В качестве начального приближения выбирается конец отрезка, оставшийся после выбора с. То есть если с = a, то начальным приближением корня выбирают b и наоборот.

Блок-схема алгоритма уточнения корней этим методом отличается от уточнения корней методом касательных лишь списком вводимых исходных значений (блок 2) и рекуррентной формулой (блок 3).

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

Program MetChord;

var c, x, e, M: real;

{Описание функции}.

function f (x:real):real;

begin.

f:=3*sin (sqrt (x))+x/15−1.8.

end;

{Описание функции, реализующей алгоритм метода уточнения корней}.

function MCh (c, x, e, M: real):real;

var x0: real;

begin.

repeat.

x0:=x;

x:=(c*f (x0) — x0*f (c))/(f (x0) — f (c));

until abs (f (x))/M<=e;

MCh:=x;

end;

{Раздел операторов}.

begin.

writeln ('Введите исходные данные c, x, e, M');

readln (c, x, e, M);

{Находим с помощью функции МCh уточненное значение корня и присваиваем его переменной х}.

x:=MCh (c, x, e, M);

writeln ('Уточненное значение корня x=', x:7:4);

readln;

end.

Разработка программного продукта в среде Delphi

При разработке данной программы используются Form1 (главная форма), используется для выполнения основных функций программы.

Описание используемых компонентов:

  • 1) Label — компонент на форме, который предоставляет не изменяемую текстовую информацию на форме;
  • 2) Edit — стандартный управляющий элемент Windows для ввода. Используется для ввода и отображения данных;
  • 3) Memo — компонент на форме, который предоставляет возможность вывода информации в ограниченной на форме области, виде строк текста;
  • 4) Button — компонент, выполняющий функцию кнопок, при нажатии на которые выполняется заданное программой действие;
  • 5) Chart — компонент предназначен для графического отображения числовых данных.

Внешний вид разработанного приложения представлен на рисунке 2.9.

Внешний вид разработанного приложения.

Рисунок 2.9. Внешний вид разработанного приложения.

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

После нажатия на копку выбранного метода вызываются подпрограммы решения нелинейных уравнений, результаты которых помещаются в компоненты «TMemo». (рисунок 2.10).

Результат работы разработанного приложения.

Рисунок 2.10. Результат работы разработанного приложения.

Показать весь текст
Заполнить форму текущей работой