Построение графика временной функции

Разработка программы для построения графика временной функции в машинном и в реальном времени. Методы решения нелинейного уравнения: бисекции, хорд, простой итерации и Ньютона. Нахождение корней квадратного уравнения с применением алгоритма Горнера.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.