Построение графика временной функции
Разработка программы для построения графика временной функции в машинном и в реальном времени. Методы решения нелинейного уравнения: бисекции, хорд, простой итерации и Ньютона. Нахождение корней квадратного уравнения с применением алгоритма Горнера.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 16.02.2016 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство образования республики Беларусь
Белорусский национальный технический университет
Кафедра «Тепловые электрические станции»
КУРСОВАЯ РАБОТА
по дисциплине «Информатика»
Тема:
Построение графика временной функции
Исполнитель: Напреев Роман
студент группы 10606114
Руководитель: доц. Тарасевич Л.А.
Минск - 2015
Содержание
Введение
1. Методы расчёта
1.1 Метод бисекции
1.2 Метод хорд
1.3 Метод простой итерации
1.4 Метод Ньютона
1.5 Алгоритм Горнера
2. Код программы
3. Вид программы
4. Результаты расчётов
Вывод
Список использованных источников
Введение
Данная курсовая работа выполнена на языке Borland C++ Builder 6.
Borland C++Builder, сегодня является наиболее совершенной визуальной средой быстрой разработки на Си++ для Windows. В ее состав входит около 200 самых разных компонентов, а создание законченной программы требует минимума усилий. Ближайший конкурент Borland C++Builder -- это не система Microsoft Visual C++, которая построена по другой схеме, a Microsoft Visual Basic. Однако эффективность программ, создаваемых с помощью C++Builder, в десятки раз превосходит быстродействие программ, написанных на MS Visual Basic. Да и по числу свободных доступных компонентов равных среде C++Builder сегодня не найти.
Вместо отдельного инструментария, оперирующего визуальными элементами управления, в C++ Builder интегрирована так называемая Палитра компонент, разделенная картотечными вкладками на несколько функциональных групп. Функциональные возможности поставляемых компонент можно достаточно просто модифицировать, а также разрабатывать компоненты, обладающие совершенно новым оригинальным поведением.
Система содержит Библиотеку из более 100 повторно используемых визуальных компонент, которые перетаскиваются мышью на форму и сразу становятся элементами управления прототипа вашей программы. Помимо известных элементов управления Windows (кнопки, линейки прокрутки, поля редактирования, простые и комбинированные списки и т.д.) Библиотека содержит новые компоненты поддержки диалогов, обслуживания баз данных и многие другие.
После размещения компонент на форме, Инспектор объектов поможет вам устанавливать их свойства и предписывать событиям коды обработки. Ваш проект будет строиться постепенно, на фоне производимых вами изменений в свойствах, событиях и функциях используемых элементов. Хорошо продумано разделение и редактирование программного модуля по двум его частям: интерфейсной и собственно кодовой.
C++Builder поддерживает основные принципы объектно-ориентированного программирования -- инкапсуляцию, полиморфизм и множественное наследование, а также нововведенные спецификации и ключевые слова в стандарте языка C++.
C++Builder обеспечивает высокое быстродействие при компиляции и сборке 32-разрядных приложений для современных операционных систем Windows 95 и Windows NT, включая OLE взаимодействие клиент-сервер. Система даже отображает время, затраченное на основные этапы построения программ. Результирующие программы хорошо оптимизированы по скорости исполнения и затратам памяти. Хотя отладочный режим низкого уровня полностью интегрирован в среду C++Builder, к отладке также пришлось привыкать. Дизайнер форм, Инспектор объектов и другие средства остаются доступными во время работы программы, поэтому вносить изменения можно в процессе отладки.
Благодаря средствам управления проектами, двусторонней интеграции приложения и синхронизации между средствами визуального и текстового редактирования, а также встроенному отладчику (с ассемблерным окном прокрутки, пошаговым исполнением, точками останова, трассировкой и т.п.) -- C++ Builder корпорации Borland предоставляет собой впечатляющую среду разработки.
1. Методы расчёта
1.1 Метод бисекции
Постановка задачи: дано уравнение f(x) = 0. На отрезке [a; b] имеем корень. Требуется найти его с заданной точностью ?. Функция на заданном отрезке определена и непрерывна.
Рис. 1. Метод бисекции
Суть метода: делим отрезок пополам и получаем точку c = (a+b)/2. Далее определяем, на каком из полученных отрезков [a; c] или [c; b] находится корень. Если f(a)*f(с)<0, то дальше продолжаем искать корень на отрезке [a; c], иначе на отрезке [c; b]. Далее отрезок, на котором находится корень, снова делим пополам и определяем на каком из полученных отрезков находится корень. И так продолжаем до тех пор, пока не получим настолько малый отрезок, что каждая точка его будет подходить в качестве корня.
Алгоритм метода:
1. f(a)*f(b) <0-проверка условия;
2. c = (a+b)/2- делим отрезок пополам;
3. Если f(a)*f(c) <0, то b = c;
Если f(b)*f(c) <0, то а = с;
4. Критерий окончания счёта:
Блок-схема метода бисекции
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Метод обладает линейной скоростью сходимости. За одну итерацию точность возрастает в 2 раза.
1.2 Метод хорд
Постановка задачи: дано уравнение f(x) = 0. На отрезке [a; b] имеем корень. Требуется найти его с заданной точностью ?. Функция на заданном отрезке определена и непрерывна.
Рис. 2
1-ый способ получения формулы: из рис.2 видно, что первое приближение корня x1 = a+h1. h1 можно найти из подобных треугольников ABC и Aax1:
Далее применяя этот приём к отрезку [a; x1] или [x1; b], на котором находится корень, находим следующее приближение и т.д.
2-й способ получения формулы: геометрически, метод хорд эквивалентен замене дуги y = f(x) хордой проходящей через точки А и B. В этом случае уравнение хорды можно записать как:
Принимаем, что х = х1 и у = 0, и тогда из уравнения хорды можно получить:
Алгоритм нахождения корня:
1) - то на отрезке [a; b] имеем корень;
2) Если f(a)<0, то x0 = a;
иначе x0 = b;
3) Если f(a)<0, то
;
иначе; ;
4) Счёт заканчиваем, когда
Блок-схема метода хорд
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Данный метод является быстрым способом нахождения корня уравнения f(x) = 0 в сравнении с методом биссекции.
1.3 Метод простой итерации
Постановка задачи: дано уравнение f(x) = 0. На отрезке [a; b] имеем корень. Требуется найти его с заданной точностью ?. Функция на заданном отрезке определена и непрерывна.
Суть метода: исходное уравнение f(x) = 0 заменим эквивалентным x = ?(x), выбрав начальное приближение ( любое число из отрезка[a; b] ).
1. Если , то = b, если < 0, то = а ;
2. Уравнение (х) = 0 преобразуем к виду:
или , где
3. Условие сходимости метода простой итерации:
4. Критерий окончания счета:
Условие выбора начального приближения определяет следующая теорема: если отрезок [a; b] является отрезком изоляции корня уравнения x = ?(x) и во всех точках этого отрезка производная < 1, то интерполяционный процесс будет сходящимся.
1.4 Метод Ньютона
Постановка задачи: дано уравнение f(x) = 0. На отрезке [a; b] имеем корень. Требуется найти его с заданной точностью ?. Функция на заданном отрезке определена и непрерывна
Блок-схема метода простой итерации
a x0 x1 b x
Геометрический метод Ньютона эквивалентен замене некоторой дуги y = f(x) касательной, проведенной в некоторой точке кривой . И тогда из уравнения касательной:
Для y = 0 и получим:
.
Начальное приближение необходимо выбирать из условия в противном случае сходимость метода Ньютона не гарантируется . Скорость сходимости квадратичная.
Алгоритм метода:
1. За начальное приближение принимается такое значение для которого выполняется условие Фурье: *
2. Находим последующее приближение по формуле
.
Затем и находим следующее приближение.
3. Критерий окончания счета:
1.5 Алгоритм Горнера
Пусть имеем полином следующего вида:
Блок-схема метода Ньютона
Если обозначить внутри скобок выражение через y_i, то рекуррентная формула вычисления полинома будет иметь следующий вид:
Данное разложение полинома удобно тем, что в нём отсутствует возведение в степень, что значительно ускоряет вычисление полинома.
Блок-схема алгоритма схемы Горнера
временный функция линейный алгоритм горнер
2 Код программы
#include <vcl.h>
#include<math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//Описание переменных;
double k,v,p,t0,tkon,tk,Y,L[4];
float g;
int i;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MediaPlayer1->FileName = "1.mp3";
MediaPlayer1->Open();
}
// Функция f. Нелинейное уравнение 0.4+atan(sqrt(p))-p. (исходное
уравнение)
double f(double p)
{
return 0.4+atan(sqrt(p))-p;
}
// Функция fp. Производная от функции f. (для метода Ньютона)
double f1(double p)
{
return (1/((1+p)*2*sqrt(p)))-1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
//Описание переменных;
{ float z,q,q1,q2,k,v,a1 = 4,a2 = 5,b1 = 3,b2 = 1,d1 = 6,d2 = -2,n = 1,h = 2,e
= 0.001,p0 = 1.23;
t0 = StrToFloat(Edit1->Text);
tkon = StrToFloat(Edit2->Text);
tk = StrToFloat(Edit3->Text);
ListBox1->Clear(); //Очистка ListBox1;
Series1->Clear(); //Очистка графика
if (RadioButton1->Checked = = true)
//Метод бисекции;
{
while(true)
{
p = (n+h)/2;
if(fabs(f(p))< = e) break;
else
if(f(n)*f(p)<0) h = p;
else n = p;
}
}
if(RadioButton2->Checked = = true)
//Метод хорд;
{
while(true)
{
if(f(n)<0) p = p0-(h-p0)*f(p0)/(f(h)-f(p0));
else p = p0-(n-p0)*f(p0)/(f(n)-f(p0));
if(fabs(p-p0)< = e) break;
else p0 = p;
}
}
if(RadioButton3->Checked = = true)
//Метод простой итерации;
{
while(true)
{
p = f(p0);
if(fabs(p-p0)< = e) break;
else p0 = p;
}
}
if(RadioButton4->Checked = = true)
//Метод Ньютона;
{
while(true)
{
p = p0-f(p0)/f1(p0);
if(fabs(p-p0)< = e) break;
else p0 = p;
}
}
ListBox1->Items->Add("p = "+FloatToStr(p));
//находим значение корней СЛАУ
z = ((d1*b2)-(b1*d2))/((a1*b2)-(b1*a2));
v = ((a1*d2)-(d1*a2))/((a1*b2)-(b1*a2));
if(z>v) g = z; else g = v;
ListBox1->Items->Add("z = "+FloatToStr(z));
ListBox1->Items->Add("v = "+FloatToStr(v));
v = tan(0.6109);
k = 23;
ListBox1->Items->Add("g = "+FloatToStr(g));
ListBox1->Items->Add("v = "+FloatToStr(v));
ListBox1->Items->Add("k = "+FloatToStr(k));
//Задание коэффициентов в массив L;
L[1] = k;
L[2] = v;
L[3] = p-g;
if(RadioButton5->Checked = = true)
//Алгоритм Горнера;
{
for(t0;t0< = tkon;t0 = t0+tk)
{Y = L[1];
for(i = 2;i< = 3;i++)
{Y = Y*t0+L[i];}
ListBox1->Items->Add("fabs(Y)("+FloatToStr(t0)+") =
"+FloatToStr(fabs(Y)));
Series1->AddXY(t0,fabs(Y),"",clRed); //построение графика
}
}
if(RadioButton6->Checked = = true)Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Series1->Clear();
ListBox1->Items->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
//выбор построения графика в реальном времени
{
Y = L[1];
for(i = 2;i< = 3;i++)
{Y = Y*t0+L[i]; }
ListBox1->Items->Add("fabs(Y)("+FloatToStr(t0)+") =
"+FloatToStr(fabs(Y)));
Series1->AddXY(t0,fabs(Y),"",clBlue);
t0 = t0+tk;
if(t0>tkon) Timer1->Enabled = false;
}
3. Вид программы
4. Результаты расчётов
Таблица значений
Время |
Значение функции |
|
0 |
2.2157 |
|
1 |
21.4844 |
|
2 |
91.1847 |
|
3 |
206,8850 |
|
4 |
368.5852 |
|
5 |
576.2855 |
|
6 |
829.9857 |
|
7 |
1129.6860 |
|
8 |
1475.3862 |
|
9 |
1867.0865 |
|
10 |
2304.7868 |
|
11 |
2788.4870 |
|
12 |
3318.1873 |
|
13 |
3893.8875 |
|
14 |
4515.5878 |
|
15 |
5183.2881 |
|
16 |
5896.9883 |
|
17 |
6656.6886 |
|
18 |
7462.3888 |
|
19 |
8314.0891 |
|
20 |
9211.7894 |
|
21 |
10155.4896 |
|
22 |
11145.1899 |
|
23 |
12180.8901 |
|
24 |
13262.5904 |
|
25 |
14390.2907 |
Вывод
При создании программы для построения графика временной функции работающую как в машинном, так и в реальном времени мной были использованы 4 метода решения нелинейного уравнения (метод бисекции, метод хорд, метод простой итерации и метод Ньютона), были найдены корни квадратного уравнения, а также использован алгоритм Горнера.
При сравнении методов решения нелинейного уравнения каждый из них имеет свои положительные и отрицательные стороны.
Список использованных источников
1. Архангельский А.Я. «C++ Builder 6. Справочное пособие. Книга 1. Язык С++»
2. Рейхсдорф К., Хендерсон К. «Borland C++ Builder. Освой самостоятельно»
3. Бобровский С., «Самоучитель программирования на языке C++ в системе Borland C++ Builder 5.0»
Размещено на Allbest.ru
...Подобные документы
Создание программ в Borland C++ Builder 6.0. Разработка программы для построения графика временной функции, работающей, как в машинном, так и в реальном времени. Использование алгоритма Горнера для вычисления корня квадратного и нелинейного уравнений.
контрольная работа [925,2 K], добавлен 05.01.2016Общие сведения об алгоритмическом языке PASCAL. Схема алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Применение метода простой итерации, метода решения полинома на языке PASCAL.
курсовая работа [41,5 K], добавлен 15.03.2012Построение схемы алгоритма и программы для создания графика временной функции, работающей в машинном и реальном времени. Выбор методов решения и их обоснование. Значение коэффициентов и временной функции. Реализация временных задержек в программе.
курсовая работа [6,2 M], добавлен 09.03.2012Выбор и обоснование методов составления схемы алгоритма и разработки программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Алгоритм Горнера. Программа на языке Quick BASIC (с распечаткой листинга).
курсовая работа [55,1 K], добавлен 21.11.2012Понятие машинного и реального времени, дискретизация времени. Реализация временных задержек в программе. Вычисление значения многочлена методом Горнера. Разработка схем алгоритмов, основной программы и подпрограмм. Построение графика временной функции.
курсовая работа [40,7 K], добавлен 18.04.2012Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Пример вычисления степенного ряда с помощью схемы Горнера. Описание переменных программы, листинг, процедуры и функции.
курсовая работа [67,6 K], добавлен 20.11.2012Использование повторяющегося процесса. Нахождение решения за определенное количество шагов. Применение метода хорд и метода простой итерации. Методы нахождения приближенного корня уравнения и их применение. Построение последовательного приближения.
курсовая работа [849,1 K], добавлен 15.06.2013Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Выбор и обоснование методов расчета. Разработка основной программы. Блок-схемы алгоритмов. Распечатка листинга.
курсовая работа [1,5 M], добавлен 21.11.2013Методика реализации решения нелинейного уравнения в виде процедуры-подпрограммы следующими методами: хорд, касательных (Ньютона), простой итерации, половинного деления. Основные методы уточнения корней уравнения. Программное решение задачи, алгоритм.
курсовая работа [4,0 M], добавлен 27.03.2011Отделение действительных корней нелинейного уравнения. Метод хорд и касательных (Ньютона), геометрическая интерпретация. Графическая схема алгоритма. Описание реализации базовой модели в MathCAD. График сравнения числа итераций в зависимости от точности.
курсовая работа [2,0 M], добавлен 16.05.2013Разработка с использованием приложения Mathcad алгоритма и программы решения нелинейного уравнения методами касательных, половинного деления и хорд. Решение с помощью ее заданных нелинейных уравнений. Создание графической иллюстрации полученных решений.
курсовая работа [665,7 K], добавлен 22.08.2013Программирование на алгоритмическом языке Turbo Pascal на примере разработки алгоритма и программы расчета временной функции. Выбор, обоснование методов решения. Схемы алгоритмов основной программы и подпрограмм. Распечатка исходных и вычисленных величин.
реферат [154,8 K], добавлен 15.03.2012Изучение численных методов решения нелинейных уравнений, используемых в прикладных задачах. Нахождение корня уравнения методом простой итерации и методом касательных (на примере уравнения). Отделение корней графически. Программная реализация, алгоритм.
курсовая работа [1,7 M], добавлен 15.06.2013Определение корней заданного уравнения графическим методом с применением прикладного программного средства MathCAD. Построение графика при помощи программы MS Excel. Геометрическая интерпретация метода для данного уравнения, определение интервалов.
контрольная работа [93,0 K], добавлен 20.08.2013Методы решения нелинейных уравнений: прямые и итерационные. Методы решения трансцендентных, алгебраических уравнений. Метод деления отрезка пополам, Ньютона, простой итерации. Поиск корня уравнения методом простой итерации с помощью электронных таблиц.
контрольная работа [2,4 M], добавлен 16.12.2011Изучение способов решения линейных и квадратных уравнений методом простой итерации: доказательство теоремы о сходимости и геометрическая интерпретация. Анализ математического решения задачи, ее функциональной модели, блок-схемы и программной реализации.
реферат [411,5 K], добавлен 25.01.2010Выполнение заданий на вычисление функции на указанном диапазоне и построение графика функции. Нахождение суммы числового ряда. Нахождение корней уравнения командой "Подбор параметра". Описание технологии работы со списками в электронной таблице Excel.
контрольная работа [35,3 K], добавлен 15.11.2010Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.
задача [163,4 K], добавлен 16.12.2009Нахождение с заданной погрешностью корней уравнения. Оценка скорости сходимости. Нахождение промежутка, в котором содержится какой-либо корень уравнения для методов итераций и Ньютона. Разработка текста компьютерных программ для решения данных уравнений.
лабораторная работа [253,9 K], добавлен 19.12.2012Применение методов касательных (Ньютона) и комбинированного (хорд и касательных) для определения корня уравнения. Разработка алгоритма решения и его описание его в виде блок-схем. Тексты программ на языке Delphi. тестовый пример и результат его решения.
курсовая работа [923,7 K], добавлен 15.06.2013