Решение нелинейных уравнений методом интераций
Разработка проекта по вычислению корней нелинейных уравнений методом итераций, в среде программирования Delphi. Интерфейс программы и ее программный код, визуализация метода. Сравнение результатов решения, полученных в Mathcad 14 и методом итераций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 10.12.2010 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
16
Оглавление
- Введение
- 1. Теоретическая часть
- 2. Практическая реализация
- 2.1 Проектирование интерфейса
- 2.2 Программирование вычисления
- 2.3 Визуализация метода
- 2.4 Вычислительный эксперимент
- Заключение
- Перечень используемой литературы
Введение
Данный проект разработан для вычисления коней нелинейного уравнения методом итераций. Программа написана на языке высокого уровня Delphi.
Пояснительная записка состоит из следующих разделов:
1 Теоретическая часть - теория, описывающая правила вычисления коней нелинейного уравнения методом итераций, а также блок-схема метода.
2 Практическая реализация:
2.1 Проектирование интерфейса - создание и описание элементов (частей) из которых состоит данная программа.
2.2 Программирование вычисления - конечный результата работы.
2.3 Визуализация метода - последовательный показ работы проекта на вычисление корней уравнения методом итераций
2.4 Вычислительный эксперимент - сравнение результатов программы с решением в математическом пакете Mathcad 14.
3 Заключение о проделанной работе.
1. Теоретическая часть
Часто приходится находить корни уравнений вида , где f(x) определена и непрерывна на некотором интервале.
Если f(x) представляет собой многочлен, то уравнение - алгебраическое, если в функцию входят функции типа: тригонометрических, логарифмических, показательных и т.п., то уравнение называется трансцендентным.
Решение уравнения вида разбивается на два этапа:
1. отделение корней, т.е. отыскание достаточно малых областей, в каждой из которых заключен один и только один корень уравнения;
2. вычисление выделенного корня с заданной точностью.
Первый этап более сложный, в этом случае может помочь построение приближенного графика функции с анализом на монотонность, смену знака, выпуклость и т.д.
Для вычисления выделенного корня существует множество методов, например:
- метод итераций;
- метод половинного деления;
- метод Ньютона.
На рисунке 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, то итерационный процесс сходится к корню уравнения .
Если необходимо вычислить корень с точностью е, то процесс итераций продолжается до тех пор, пока для двух последовательных приближений xn и xn-1 не будет выполнено:
,
где е задается погрешностью корня x*.
Соответственно описанной выше методике составим блок-схему решения уравнения методом итераций[2].
16
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:=abs(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;
В обоих случаях начальные данные это значение переменной x. В первом случае результат значение функции, во втором значение производной функции.
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:=abs(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 и методом итераций. При подстановке в уравнение полученных корней значения функции более близки к нулю у корня, полученного в Mathcad 14, но стоит отметить, что значения корня совпадают до заданной точности.
Перечень используемой литературы
1. Бобровский С.И. Delphi7. Учебный курс. - СПб.: Питер, 2003. - 736 с.
2. Информатика. Базовый курс. 2-е издание/Под ред. С.В. Симоновича. - СПб.: Питер, 2005. - 640 с.
3. Пискунов Н.С. Дифференциальное и интегральное исчисления: Учебник для втузов. В 2-х т. Т.1: - М.: Интеграл - Пресс, 2001. - 416 с.
4. Фаронов В.В. Delphi. Программирование на языке высокого уровня. Учебник для вузов. - СПб.: Питер, 2003. - 640 с.
Подобные документы
Решение нелинейных уравнений методом простых итераций и аналитическим, простым и модифицированным методом Ньютона. Программы на языке программирования Паскаль и С для вычислений по вариантам в порядке указанных методов. Изменение параметров задачи.
лабораторная работа [191,0 K], добавлен 24.06.2008Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Разработка программы для нахождения корней нелинейных уравнений несколькими методами: методом хорд, касательных, половинного деления, итераций. Реализации программы с помощью системы программирования Delphi 7. Методика работы пользователя с программой.
курсовая работа [1,3 M], добавлен 11.02.2013Способы отделения корней. Решение задачи методами Ньютона уточнения корней и простых итераций. Формула нахождения погрешностей. Геометрическая интерпретация методов. Составление блок-схем и текстов программ. Результаты их работы на тестовом примере.
курсовая работа [3,1 M], добавлен 15.06.2013Особенности решения уравнений с одной переменной методом половинного деления. Оценка погрешности метода простой итерации. Суть решения уравнений в пакете Mathcad. Векторная запись нелинейных систем. Метод Ньютона решения систем нелинейных уравнений.
курсовая работа [2,1 M], добавлен 12.12.2013Математический алгоритм вычисления корней нелинейного уравнения и его решение методом касательных. Особенности программной реализации решения таких уравнений. Процедура подготовки и решения задачи на ЭВМ, характеристика алгоритма и структуры программы.
курсовая работа [96,6 K], добавлен 02.06.2012Решение нелинейного уравнения шаговым методом, методом половинного деления, методом Ньютона и простой итерации с помощью программы Mathcad. Разбиение промежутка на число n интервалов. Условия сходимости корня. Составление программы для решения на С++.
лабораторная работа [207,5 K], добавлен 10.05.2012Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.
курсовая работа [423,0 K], добавлен 17.02.2010Отделение корней методом простых интеграций. Дифференцирование и аппроксимация зависимостей методом наименьших квадратов. Решение нелинейного уравнения вида f(x)=0 методом Ньютона. Решение системы линейных уравнений методом Зейделя и методом итераций.
курсовая работа [990,8 K], добавлен 23.10.2011