Учебная работа. Контрольная работа: Решение нелинейных уравнений методом интераций
1. Теоретическая часть
2. Практическая реализация
2.1 Проектирование интерфейса
2.2 Программирование вычисления
2.3 Визуализация способа
2.4 Вычислительный программка написана на языке высочайшего уровня Delphi.
Объяснительная записка состоит из последующих разделов:
1 Теоретическая часть – теория, описывающая правила вычисления жеребцов нелинейного уравнения способом итераций, также блок-схема способа.
2 Практическая реализация:
2.1 Проектирование интерфейса – создание и описание частей (частей) из которых состоит данная программка.
2.2 Программирование вычисления – конечный результата работы.
2.3 Визуализация способа – поочередный показ работы проекта на вычисление корней уравнения способом итераций
2.4 Вычислительный часть
Нередко приходится отыскивать корешки уравнений вида , где f(x) определена и непрерывна на неком интервале.
Если f(x) представляет собой многочлен, то уравнение — алгебраическое, если в функцию входят функции типа: тригонометрических, логарифмических, показательных и т.п., то уравнение именуется непознаваемым.
Решение уравнения вида разбивается на два шага:
1. отделение корней, т.е. отыскание довольно малых областей, в каждой из которых заключен один и лишь один корень уравнения;
2. вычисление выделенного корня с данной точностью.
1-ый шаг наиболее непростой, в этом случае может посодействовать построение приближенного графика функции с анализом на монотонность, смену знака, неровность и т.д.
Для вычисления выделенного корня существует огромное количество способов, к примеру:
— способ итераций;
— способ половинного деления;
— способ Ньютона.
На рисунке 1 представлен график функции y=x-2+sin(1/x)
Рис. 1
В данной курсовой работе будет рассмотрено нахождение корней уравнения x-2+sin(1/x)=0 способом итераций.
Уравнение можно представить в виде: . Другими словами
x-2+sin(1/x)=0→ x=2-sin(1/x)
Дальше на отрезке [a,b], где функция имеет корень, выбирается случайная точка x0
и дальше поочередно рассчитывается:
процесс вычисления значений xk
именуется итерационным действием.
Если на отрезке [a,b] выполнено условие |φ΄(x)| ≤ q <1, то итерационный процесс сходится к корню уравнения .
Если нужно вычислить корень с точностью ε, то процесс итераций длится до того времени, пока для 2-ух поочередных приближений xn
и xn
-1
не будет выполнено:
,
где ε задается погрешностью корня x*.
Соответственно описанной чуть повыше методике составим блок–схему решения уравнения способом итераций[2].
2 Практическая реализация
2.1 Проектирование интерфейса
Поначалу сделаем основное окно программки, без которой нам никак недозволено обойтись [1]. Создадим в нем основное меню, состоящее из пт «Визуализация», «Исследование», «Титульный лист», «Выход». Дальше нам будет нужны поля для ввода и вывода данных, сделаем поля «Начало промежутка», «Конец промежутка», «Точность», а так же поле «Корень», в которое опосля нажатия клавиши «Решение» будет выводиться ответ. Это окно будет являться опорным пт для наших последующих действий. Обозначим его как Form1.(Рис. 2)
Рис. 2. Form1
Дальше, сделаем остальные «формы» для следующей работы, на которые в предстоящем просто будем ссылаться:
· окно для визуализации способа итераций – Form2. Выводится при выбирании пт меню «Визуализация»:
Рис. 3. Form2
При нажатии на клавишу «Итерации» покажется график, отражающий итерационный процесс
· окно заставки, появляющееся при запуске программки – Form3:
Рис.3. Form3
· окно титульного листа – Form4:
Рис.4. Form4
сейчас, опосля того как мы сделали все нужные формы, можем приступать к разработке программного кода, в каком будем ссылаться на каждую из их [4]. В этом коде нам нужно будет:
¾ для Form1 — обеспечить безошибочное подключение ко всем остальным формам.
¾ для Form2 -обеспечить вывод графика и визуализацию итерационного процесса.
¾ для Form3, Form4- включить в программку.
2.2 Программирование вычисления
Для вычисления корней уравнения употребляется подпрограмма – функция iter(x0,xk,eps:real): real. Она составлена по блок схеме представленной выше (1 теоритическая часть). Функции необходимо сказать начало и конец промежутка, итог функции корень уравнения;
function iter(x0,xk,eps:real): real;
var
x1,y,d,j:real;
begin
x1:=x0;
repeat
if (fnsh(x1)<1)then begin
y:=form1.fn(x1);
d:=абс(y-x1);
x1:=y;
end else begin
j:=messagedlg(‘Задайте другое начало промежутка’,mtinformation,[mbok],0);
break;
end;
until (d<=eps)or (x1>=xk);
if x1>=xk then
j:=messagedlg(‘На данном промежутке корней нет!’,mtinformation,[mbok],0)
else
iter:=y;
end;
Уравнение задано подпрограммой – функцией tform1.fn(x:real): real
function tform1.fn(x:real): real;
begin
fn:=2-sin(1/x);
end;
Производная задана подпрограммрй – функцией fnsh(x:real): real;
function fnsh(x:real): real;
begin
fnsh:=cos(1/x)/sqr(x);
end;
В обоих вариантах исходные данные это
2.3 Визуализация способа
В основном окне выберем пункт меню «Визуализация»;
Перед нами возникает окно, где показывается график функции, изоброженного красноватым цветом, при всем этом предусмотрена возможность визуализации итерационного процесса, зеленоватым цветом, средством нажатия клавиши «Итерации».
Построение графика осуществляется в ниже последующем программном коде:
procedure TForm2.FormCreate(Sender: TObject);
var
i:real;
begin
series1.Clear;
Series2.Clear;
i:=1;
While i<=1.5 do begin
if i<>0 then
series1.AddXY(i,i-2+sin(1/i),»,clred);
i:=i+0.0001;
end;
end;
График строится в момент сотворения Form2. Построение ведется на промежутке от 1 до 1,5. В цикле переменная i изменяется в этих границах с шагом 0,0001, и строится график от значения переменной i.
При нажатии клавиши итерации выполнятся последующий код:
procedure TForm2.Button1Click(Sender: TObject);
begin
x1:=strtofloat(form1.labelededit1.text);
xk :=strtofloat(form1.labelededit2.text);
eps:=strtofloat(form1.labelededit3.text);
series2.Clear;
Timer1.Enabled:=true;
end;
Опосля чего же запускается таймер, который повторяет свои деяния через определенный просвет времени.
procedure TForm2.Timer1Timer(Sender: TObject);
begin
y:=form1.fn(x1);
series2.AddXY(x1,y-x1,»,clgreen);
d:=абс(y-x1);
x1:=y;
if d<eps then timer1.Enabled:=false;
end;
тут строится итерационная кривая, показывающая последовательное приближение к корню уравнения до определенной точности. Основой кода построения итерационной кривой является блок – схема из теоретической части.
2.4 Вычислительный опыт
Запуская программку, возникает заставка:
Рис.5. Заставка
Спустя 2 секунды окно заставки запирается и возникает основное окно программки:
Рис.6. Основное окно
На нем, как и думало, обозначены: основное меню состоящее из пт «Визуализация», «Титульный лист», «Выход», также поля «Начало промежутка», «Конец промежутка», «Точность», также поле «Корень», в которое опосля нажатия клавиши «Решение» будет выводится ответ.
Выбирая «Титульный лист», раскрывается окно, из которого узнаем о предназначении программки, ее разрабе, а так же о проверяющем педагоге.
Рис. 7 Титульный лист.
В поля, расположенные в основном окне вводим надлежащие их наименованию данные, опосля чего же жмем клавишу «Решение» и получаем итог. В программном коде предусмотрена обработка исключительных ситуаций, при появлении которых выводится информационное окно с советами по устранению появившихся проблем.
Выбирая пункт меню «Исследование», мы открываем окно, где приведены результаты решения уравнения в математическом пакете Mathcad 14 и в сделанной мной программке, также разность этих значений:
Рис.16. исследование
Результаты записываются в текстовый Файл «issled.txt»
Выбирая пункт меню «Визуализация», отображается график уравнения и при нажатии клавиши итнрации отображается итерационная кривая:
Рис. 8 Визуализация.
Заключение
Разработан проект по вычислению корней нелинейных уравнений способом итераций, в среде программирования Delphi.
Спроектирован интерфейс программки и написан программный код на языке высочайшего уровня.
Проведена визуализация способа.
Также произведен вычислительный значения функции наиболее близки к нулю у корня, приобретенного в Mathcad 14, но необходимо отметить, что значения корня совпадают до данной точности.
Список применяемой литературы
1. Бобровский С.И.
Delphi7. Учебный курс. – СПб.: Питер, 2003. – 736 с.
2. Информатика. Базисный курс. 2-е издание/Под ред. С.В. Симоновича. – СПб.: Питер, 2005. – 640 с.
3. Пискунов Н.С. Дифференциальное и интегральное исчисления: Учебник для втузов. В 2-х т. Т.1: — М.: Интеграл – Пресс, 2001. – 416 с.
4. Фаронов В.В.
Delphi. Программирование на языке высочайшего уровня. Учебник для вузов. – СПб.: Питер, 2003. – 640 с.
]]>