Решения дифференциального уравнения для производной функции методом Хемминга и методом Адамса

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    158,67 Кб
  • Опубликовано:
    2015-07-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Решения дифференциального уравнения для производной функции методом Хемминга и методом Адамса

Содержание

Введение

. Постановка задачи

.1 Общая характеристика задачи

.2 Анализ литературных источников

. Проектирование программного модуля

.1 Расчетные формулы методов

.2 Описание данных, используемых для решения задачи

.3 Описание схемы программы

. Реализация программного модуля

.1 Описание структуры разрабатываемого пакета

.2 Описание используемых типов данных

.3 Создание основной формы программы

3.4 Написание кода ввода исходных данных

.5 Написание кода основных расчетов

.6 Вывод результата

.7 Проектирование интерфейса программы

4. Тестирование программного модуля

4.1 Тестирование решения задачи

4.2 Тестирование программы

5. Энерго-и ресурсосбережение

Заключение

Список литературы

Приложение А Текст программы

Введение

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

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

Шагом, кардинально изменившим жизнь программистов, было появление визуального программирования, которое позволило свести проектирование пользовательского интерфейса к простым и наглядным процедурам. Delphi − одна из самых мощных систем, позволяющих на самом современном уровне создавать отдельные прикладные программы Windows. Работа ведется в Интегрированной Среде Разработки (ИСР или Integrated developrated environment - IDE) Delphi. Среда представляет формы (оконные или невидимые), на которых размещаются компоненты. На форму с помощью мыши переносятся и размещаются пиктограммы компонентов, имеющихся в библиотеке Delphi. Во время проектирования формы и размещения на ней компонентов Delphi автоматически формирует коды программы, включая в нее соответствующие фрагменты, описывающие данный компонент. В соответствующих диалоговых окнах пользователь может изменить заданные по умолчанию значения каких-то свойств этих компонентов и, при необходимости, написать обработчики каких-то событий.

Обоснование и решение практической задачи на языке Delphi состоит в построении математической модели исследуемого явления, что позволяет свести решение практической задачи к решению математической задачи, представляющей собой, как правило, сложную задачу, которая не может быть решена непосредственными человеческими усилиями, с множеством данных, для решения которой необходимо выполнить большой объём вычислений. На современном этапе человеком уже разработано множество методов решения разного рода задач. Методы решения более сложных и громоздких задач находятся на этапе исследования.

1. Постановка задачи

.1 Общая характеристика задачи

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

Сохранить График;

Сохранить таблицу;

Выход;

Цвет (графика, таблиц, текста);

Режим построения (Мгновенный, Анимация);

Построение;

Расчет;

Очистка (очищение области ввода и вывода информации);

Справка (О программе, Справка).

Значения а задает пользователь, методы для вычисления производной функции - метод Адамса 3-го порядка точности, метод Хемминга 4-го порядка точности по схеме 1/3.

Атрибуты создаваемой программы позволяют выбор следующих возможностей: режим построения (анимация или мгновенный), изменение цвета графика, осей, сохранение полученного изображения.

Для реализации задачи используются возможности Borland Delphi7.

1.2 Анализ литературных источников

Различают три группы численных методов решения дифференциальных уравнений:

а) явные методы численного интегрирования;

б) неявные методы численного интегрирования;

в) методы прогноза и коррекции.

Различают следующие явные методы интегрирования:

а) одношаговые методы;

б) многошаговые методы.

Метод Хемминга 4-го порядка точности по схеме 1/3 относится к многошаговым методам. Для того чтобы в этом методе получить значения нужно знать четыре предыдущих значения. Явные методы интегрирования основаны на использовании разложения формулы в ряд Тейлора в окрестностях точки с координатами (хn,yn) для расчётов последующего значения функции на основании данных о её предыдущих значениях.

Метод Адамса 3-го порядка также относится к многошаговым методам. В этом методе чтобы рассчитать значения, нужно знать три предыдущих значения функции, рассчитанных по одношаговым методам.

2. Проектирование программного модуля

.1 Расчетные формулы метода

Данная функция рассчитывается методом Адамса 3-го порядка. Формула будет выглядеть так:

       ( 8 )

где yn -сама функция;

h-шаг;

(x,y)-производная.

Также данная функция рассчитывается методом Хемминга 4-го порядка по схеме 1/3. Формула будет выглядеть так:

,(9)

где h-шаг;

(x,y)-производная

программный тестирование численный интегрирование

2.2 Описание данных используемых для решения задачи

Для исследования графика функции и вычисления значений функции и её производной требуются входные, промежуточные и выходные данные.

Входные данные:

значение параметра а, границы графика вводятся пользователем после запуска программы, если эти данные не введены, то программа не будет работать.

Исходные данные мы вводим с клавиатуры. Для ввода данных используется компонент Edit.

Промежуточные данные:

данные полученные для вычисления масштабов, которые используются для построения координатных осей Ox и Oy;

промежуточные значения функции и её производной, которые после используются для построения графика приближенного значения функции;

данные полученные и используемые для нанесения разметки и подписи координатных осей.

Промежуточные данные используются только в ходе выполнения программных расчетов, и они не выводятся.

Выходными данными являются:

полученные значения функции У и её производной У`, в ходе выполнения программы;

график функции, её производной и приближённого значения функции;

файл графического формата.

Для вывода выходных данных используется компонент Image и StringGrid, информация может выводится как в графическом виде на экран, так и в файл графического формата, что позволяет сохранять график в разных форматах, также это очень удобно.

2.3 Описание схемы программы

После запуска программы пользователю предоставляется возможность выбора дальнейших действий. До ввода данных для построений и расчетов возможен только просмотр Справки и О программе. Если все данные и параметры введены верно, то у пользователя появляются возможности выполнить расчеты, построение, сохранения полученного изображения.

Обобщенная блок-схема программы изображена на рисунке 1.

Рисунок 1 - Обобщенная блок-схема программы

3. Реализация программного модуля

.1 Описание структуры разрабатываемого пакета

Рисунок 2 - Структурная диаграмма программного модуля

В процессе выполнения курсового проекта использовались возможности Delphi7. Созданная программа хранится на диске в одной папке вместе со всеми необходимыми для ее корректной работы файлами (Unit, Project и др.).

В приложении можно видеть 3 формы, обеспечивающих его работу:- главная форма, используемая для всех основных операций (построение, расчеты, вывод результатов), на ней расположены все основные компоненты;- форма, которая служит для построения графика функции;- форма, которая служит для построения графика производной.- форма, выводящая на экран окно Справка.

Программный код разработанного приложения, написанный на языке Delphi 7, представлен в приложении А.

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

В данном курсовом проекте используются следующие типы данных:;;;.

Тип данных string используется для описания переменных строкового типа. В данной программе используется для хранения промежуточных результатов вводимых в поля ввода данных, таких как значения параметров функции, координаты вертикальных прямых и крайние точки графика, и вывода информации в различные поля вывода (в качестве примера можно привести значения которые мы переводили из численного типа в строковый , чтобы занести в StringGrid) .

Тип данных integer. Данный тип используется для хранения целых чисел в диапазоне от -32768 до 32767. В данной программе неоднократно используется в качестве счетчика, для проведения различных расчетов. В качестве примера можно привести цикл For.Примером являются переменные:f, N, i, dx, dy, k, m и др.

Тип данных real предназначен для хранения вещественных чисел в диапазоне от -2,9×1039 до 1,7×1038. В программе используется для хранения дробных значений, таких как масштаб, значения точек для построения графиков, рассчитанные значения функции, её производной и по методам. Примером являются переменные:x1, xn, h, Fmax, Fmin, g и др.

Тип данных tcolor используется для оформления программы, для настройки цвета осей при построении графика и непосредственно для настройки цвета графика.

3.3 Создание основной формы программы

Главная форма приложения, используемая для основных операций, содержит следующие компоненты: Главное меню, Контекстное меню, поля ввода/вывода данных, поле построения.

Главное меню содержит следующие пункты и команды:

Файл - Закрыть (закрывает программу), Очистить (Очистить значения, Очистить таблицу 1, Очистить Таблицу 2);

Правка - Заполнить (Заполнить 1-ую таблицу, Заполнить 2-ую таблицу, Метод Адамса 3-го порядка, Метод Хемминга 4-го порядка);

Справка-Об авторе(отображает информацию об авторе);

Вид главной формы при запуске приложения показан на рисунке 3.

Рисунок 3 - Главная форма программы

3.4 Написание кода для ввода исходных данных

Для ввода исходных данных, описанных в таблице 1, используются компоненты Delphi 7 Edit, которые расположены на главной форме. При вводе данных в поля данных компонентов, программа получает информацию строкового типа. Для расчетов и построений необходим числовой тип, для этого введенную пользователем информацию переводим посредством команды StrToInt (переводит в целые числа) или StrToFloat (переводит в дробные числа). Для обратного преобразования используют команды FloatToStr и IntToStr.

В приложении имеется защита от некорректного ввода, срабатывающая при выполнении расчетов и построения. Если введены некорректные данные, пользователь получит об этом сообщение.

3.5 Написание кода основных расчетов

Курсовой проект выполнен в Delphi 7, программный код показан в Приложении А.

Для начала ведется ввод данных независимых переменных «а» , устанавливается размер таблицы n, и область определения от «X1» до «Xn». Рассчитывается шаг (h=(xn-x1)/n), строится таблица. Затем ведется расчет по методам.

Адамса 3 порядка:

procedure TForm1.Button4Click(Sender: TObject);i,n:integer; x1,xn,h,a,b:real;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');:=strtofloat(edit5.Text);:=strtofloat(edit1.Text);:=strtofloat(edit2.Text);:=strtoint(edit3.Text);:=(xn-x1)/n;i:=1 to (n+1) do.Cells[i,3]:=floattostr(Cos(a*strtofloat(stringgrid1.Cells[i+2,1])*strtofloat(stringgrid1.Cells[i+2,1]))+h*(23*(-sin(a*strtofloat(stringgrid1.Cells[i+2,1])*strtofloat(stringgrid1.Cells[i+2,1])))*(2*a*strtofloat(stringgrid1.Cells[i+2,1]))-16*(-sin(a*strtofloat(stringgrid1.Cells[i+1,1])*strtofloat(stringgrid1.Cells[i+1,1]))*(2*a*strtofloat(stringgrid1.Cells[i+1,1])))+5*(-sin(a*strtofloat(stringgrid1.Cells[i,1])*strtofloat(stringgrid1.Cells[i,1]))*(2*a*strtofloat(stringgrid1.Cells[i,1]))))/12);;

Хемминга 4 порядка по схеме 1/3:TForm1.Button8Click(Sender: TObject);i,n:integer; x1,xn,a,b,h:real;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверте правильность введённых значений');:=strtofloat(edit5.Text);:=strtoint(edit3.Text)-1;:=strtofloat(edit1.Text);:=strtofloat(edit2.Text);:=(xn-x1)/n;i:=1 to (n+1) do.Cells[i,3]:=floattostr((cos(a*strtofloat(stringgrid2.Cells[i+3,1])*strtofloat(stringgrid2.Cells[i+3,1]))+cos(a*strtofloat(stringgrid2.Cells[i+2,1])*strtofloat(stringgrid2.Cells[i+2,1]))+cos(a*strtofloat(stringgrid2.Cells[i+1,1])*strtofloat(stringgrid2.Cells[i+1,1])))/3+h*(91*(-sin(a*strtofloat(stringgrid2.Cells[i+3,1])*strtofloat(stringgrid2.Cells[i+3,1]))*(2*a*strtofloat(stringgrid2.Cells[i+3,1])))-63*(-sin(a*strtofloat(stringgrid2.Cells[i+2,1])*strtofloat(stringgrid2.Cells[i+2,1]))*(2*a*strtofloat(stringgrid2.Cells[i+2,1])))+57*(-sin(a*strtofloat(stringgrid2.Cells[i+1,1])*strtofloat(stringgrid2.Cells[i+1,1]))*(2*a*strtofloat(stringgrid2.Cells[i+1,1])))-13*(-sin(a*strtofloat(stringgrid2.Cells[i,1])*strtofloat(stringgrid2.Cells[i,1]))*(2*a*strtofloat(stringgrid2.Cells[i,1]))))/36).

3.6 Вывод результата

Для вывода результатов на экран использованы компоненты stringgrid (для текстовой информации) и Image(для графической информации). Для этого числовую информацию переводят в строковую.

Приведенный ниже фрагмент программного кода показывает, как выводятся результаты вычислений функции:.stringgrid1.Cells[i+1,3]:=currtostr(y);

3.7 Проектирование интерфейса программы

Представленный пользователю интерфейс программы обеспечивают следующие компоненты Delphi 7:главное меню (отображает пункты главного меню);контекстное меню (дублирует пункты главного меню при щелчке правой кнопкой мыши в любом месте формы);текстовое окно (используется для ввода различной информации с последующей возможностью ее редактирования);метка (используется для вывода информации без возможности ее редактирования);компонент для создания таблиц, а если точнее сама таблица;используется для вставки изображений на форму;используется для выбора цвета различных элементов;используется для сохранения графической информации в файл;таймер (используется для реализации построения в режиме анимации).

Вид основной формы представлен на рисунке 4.

Рисунок 4 - Главная форма программы с расчетами

Построенный график функции показан на рисунке 5

Рисунок 5-Выполнение построения графика функции

Построенный график производной показан на рисунке 6

Рисунок 6-Выполнение построения графика производной

4. Тестирование программного модуля

Для проверки корректности работы программы, она успешно прошла тестирование. Все команды выполняются правильно, задержек в работе программы не наблюдалось. Каждый пункт меню соответствует назначению и выполняется четко.

При неполном заполнении ячеек ввода, выводится сообщение об ошибке (рисунок 9).

Рисунок 7-Сообщение об ошибке (1)

5. Энерго- и ресурсосбережение

Стандарт управления энергопотреблением компьютеров, описывает три различных режима работы компьютера. Эти режимы отличаются потребляемой мощностью электроэнергии.

Ждущий режим - позволяет экономить энергию, за счет отключения всех периферийных устройств, кроме ЦПУ, ОЗУ и материнской платы.

Спящий режим - позволяет экономить электроэнергию на 100%, так как отключаются все периферийные устройства.

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

= Тпк /(8-tрп),                                                      (5)

где Тпк - время работы компьютера, ч;

Тпк =105 ч.рп - суммарное время регламентированных перерывов, в течение

рабочего дня, ч;рп =50 мин=5/6 часа.=105/(8-0,83)=15дн.

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

Трп = n ´ tрп,                                                      (6)

где Трп - суммарная продолжительность регламентированных перерывов в течение всего времени разработки программного модуля;рп=15×0,83=12,45ч.

Экономия электроэнергии рассчитывается по формуле:

Сэн=Трп´(Wпк-Wсп)´ 376,7,                                      (7)

где Wпк - потребляемая мощность ПК, кВт-ч;пк = 0,4 кВт;сп - потребляемая мощность компьютера в ждущем режиме;сп = 0,16 кВт;

Сэн=12,45*(0,4-0,16)*376,7=1130руб.

Заключение

В результате выполнения курсового проекта была разработана и реализована программа для построения графика функции расчета данной функции по методу Адамса 3-го порядка и Хемминга 4-го порядка по схеме 1/3.

Так же была разработана защита программы от некорректного ввода. Закреплены знания по тестированию и разработке приложений. Получен опыт при оформлении основных расчетов и построений в виде процедур и функций.

Список литературы

Котов В.М., Павловский А.И. Информатика. Методы алгоритмизации: Учеб. пособие для 10-11-х кл. общеобразоват. шк. с углубл. изучением информатики. - Мн.: Нар. Асвета, 2000 - 221 с.; ил.

Архангельский А.Я. Программирование в Delphi 7. - М.: ООО «Бином-Пресс», 2003 - 1152 с.; ил.

Баженова И.Ю. Delphi7. Самоучитель программиста. - М.: КУДИЦ-ОБРАЗ, 2003 - 448 с.; ил.

Васильков Ю.В., Василькова Н.Н. Компьютерные технологии вычислений в математическом моделировании; Учеб. Пособие. - М.: Финансы и статистика, 2004 - 256 с.; ил

Методические указания по выполнению курсового проекта по дисциплине Основы алгоритмизации и программирования.

СТП 7-2005. Дипломные (курсовые) проекты). Общие требования оформления текстовых документов.

Приложение А

(обязательное)

Текст программыUnit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, Menus, XPMan, ExtCtrls;= class(TForm): TButton;: TStringGrid;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TLabel;: TLabel;: TButton;: TLabel;: TLabel;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TPopupMenu;: TMenuItem;: TMenuItem;: TButton;: TLabel;: TEdit;: TXPManifest;: TMenuItem;: TButton;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TStringGrid;: TButton;: TLabel;: TLabel;: TButton;: TButton;: TButton;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TButton;: TButton;: TColorDialog;: TPopupMenu;: TMenuItem;: TMenuItem;: TColorDialog;: TColorDialog;: TMenuItem;: TMenuItem;: TMenuItem;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);FormCreate(Sender: TObject);Button4Click(Sender: TObject);Button1KeyPress(Sender: TObject; var Key: Char);FormClose(Sender: TObject; var Action: TCloseAction);Button5Click(Sender: TObject);Button6Click(Sender: TObject);Button7Click(Sender: TObject);Button8Click(Sender: TObject);N41Click(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit2KeyPress(Sender: TObject; var Key: Char);Edit3KeyPress(Sender: TObject; var Key: Char);Edit5KeyPress(Sender: TObject; var Key: Char);Edit4KeyPress(Sender: TObject; var Key: Char);N23Click(Sender: TObject);N20Click(Sender: TObject);N24Click(Sender: TObject);N25Click(Sender: TObject);N26Click(Sender: TObject);F1Click(Sender: TObject);F2Click(Sender: TObject);N9Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;Unit2, Unit3, Unit4;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);.close;;TForm1.Button2Click(Sender: TObject);:integer;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');:=strtoint(edit3.Text);.Text:='';.Text:='';.Text:='';.Text:='';;TForm1.Button3Click(Sender: TObject);x1,xn,t,h,a,b:real; N,i:integer;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');.Button4.Enabled:=true;:=strtofloat(edit1.Text);:=strtofloat(edit2.text);:=strtofloat(edit5.Text);:=strtoint(edit3.Text);:=(xn-x1)/N;.cells[1,1]:=floattostr(x1);i:=1 to (N+2) do.ColCount:=(N+2);.cells[i+1,1]:=floattostr(strtofloat(stringgrid1.cells[i,1])+h);:=strtofloat(stringgrid1.cells[i,1]);.Cells[i,2]:=floattostr(-sin(a*t*t)*(2*a*t));;i:=1 to (N+2) do.Cells[i,0]:='x'+inttostr(i);;;TForm1.FormCreate(Sender: TObject);.Cells[0,1]:='X';.Cells[0,2]:='y-пр.';.Cells[0,3]:='y-по методу';.Cells[0,4]:='y';.Cells[0,1]:='X';.Cells[0,2]:='y-пр.';.Cells[0,3]:='y-по методу';.Cells[0,4]:='y';;TForm1.Button4Click(Sender: TObject);i,n:integer; x1,xn,h,a,b:real;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');:=strtofloat(edit5.Text);:=strtofloat(edit1.Text);:=strtofloat(edit2.Text);:=strtoint(edit3.Text);:=(xn-x1)/n;i:=1 to (n+1) do.Cells[i,3]:=floattostr(Cos(a*strtofloat(stringgrid1.Cells[i+2,1])*strtofloat(stringgrid1.Cells[i+2,1]))+h*(23*(-sin(a*strtofloat(stringgrid1.Cells[i+2,1])*strtofloat(stringgrid1.Cells[i+2,1])))*(2*a*strtofloat(stringgrid1.Cells[i+2,1]))-16*(-sin(a*strtofloat(stringgrid1.Cells[i+1,1])*strtofloat(stringgrid1.Cells[i+1,1]))*(2*a*strtofloat(stringgrid1.Cells[i+1,1])))+5*(-sin(a*strtofloat(stringgrid1.Cells[i,1])*strtofloat(stringgrid1.Cells[i,1]))*(2*a*strtofloat(stringgrid1.Cells[i,1]))))/12);;TForm1.Button1KeyPress(Sender: TObject; var Key: Char);i:integer;i:=250 to 0 do.AlphaBlendValue:=i;;;TForm1.FormClose(Sender: TObject; var Action: TCloseAction);i:integer;{i:=250 downto 0 do.AlphaBlendValue:=i;; };TForm1.Button5Click(Sender: TObject);x1,xn,t,h,a,b:real; f,N,i:integer;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');.Button8.Enabled:=true;:=strtofloat(edit1.Text);:=strtofloat(edit2.text);:=strtofloat(edit5.Text);:=strtoint(edit3.Text);:=(xn-x1)/N;.cells[1,1]:=floattostr(x1);i:=1 to (N+2) do.ColCount:=(N+2);.cells[i+1,1]:=floattostr(strtofloat(stringgrid2.cells[i,1])+h);:=strtofloat(stringgrid2.cells[i,1]);.Cells[i,2]:=floattostr(-Sin(a*t*t)*(2*a*t));;i:=1 to (N+2) do.Cells[i,0]:='x'+inttostr(i);;;TForm1.Button6Click(Sender: TObject);r:integer; N:integer;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');:=strtoint(edit3.Text);r:=1 to (N+2) do.Cells[r,1]:='';.Cells[r,2]:='';.Cells[r,3]:='';;;TForm1.Button7Click(Sender: TObject);r:integer; N:integer;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверьте правильность введённых значений');:=strtoint(edit3.Text);r:=1 to (N+2) do.Cells[r,1]:='';.Cells[r,2]:='';.Cells[r,3]:='';;;TForm1.Button8Click(Sender: TObject);i,n:integer; x1,xn,a,b,h:real;(edit1.text='') or (edit2.text='') or (edit3.text='') or (edit5.text='') then('Проверте правильность введённых значений');:=strtofloat(edit5.Text);:=strtoint(edit3.Text)-1;:=strtofloat(edit1.Text);:=strtofloat(edit2.Text);:=(xn-x1)/n;i:=1 to (n+1) do.Cells[i,3]:=floattostr((cos(a*strtofloat(stringgrid2.Cells[i+3,1])*strtofloat(stringgrid2.Cells[i+3,1]))+cos(a*strtofloat(stringgrid2.Cells[i+2,1])*strtofloat(stringgrid2.Cells[i+2,1]))+cos(a*strtofloat(stringgrid2.Cells[i+1,1])*strtofloat(stringgrid2.Cells[i+1,1])))/3+h*(91*(-sin(a*strtofloat(stringgrid2.Cells[i+3,1])*strtofloat(stringgrid2.Cells[i+3,1]))*(2*a*strtofloat(stringgrid2.Cells[i+3,1])))-63*(-sin(a*strtofloat(stringgrid2.Cells[i+2,1])*strtofloat(stringgrid2.Cells[i+2,1]))*(2*a*strtofloat(stringgrid2.Cells[i+2,1])))+57*(-sin(a*strtofloat(stringgrid2.Cells[i+1,1])*strtofloat(stringgrid2.Cells[i+1,1]))*(2*a*strtofloat(stringgrid2.Cells[i+1,1])))-13*(-sin(a*strtofloat(stringgrid2.Cells[i,1])*strtofloat(stringgrid2.Cells[i,1]))*(2*a*strtofloat(stringgrid2.Cells[i,1]))))/36);;;TForm1.N41Click(Sender: TObject);.Button8.Click;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);(key in['0'..'9',#8,'-']) thenkey:=#0;;TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);(key in['0'..'9',#8,'-']) thenkey:=#0;;TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);(key in['0'..'9',#8,'-']) thenkey:=#0;;TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);(key in['0'..'9',#8,'-']) thenkey:=#0;;TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);(key in['0'..'9',#8,'-']) thenkey:=#0;;TForm1.N23Click(Sender: TObject);Form1.ColorDialog2.Execute then.Image1.Canvas.Pen.Color:=Form1.ColorDialog2.Color;;TForm1.N20Click(Sender: TObject);Form1.ColorDialog1.Execute then.Image1.Canvas.Brush.Color:=Form1.ColorDialog1.Color;;TForm1.N24Click(Sender: TObject);Form1.ColorDialog3.Execute then;TForm1.N25Click(Sender: TObject);.Checked:=true;.Checked:=false;.ComboBox1.Visible:=false;.Timer1.Enabled:=true;.ShowModal;;TForm1.N26Click(Sender: TObject);.Checked:=true;.Checked:=false;.ComboBox1.Visible:=false;.Timer1.Enabled:=true;.ShowModal;;TForm1.F1Click(Sender: TObject);.Checked:=true;.Checked:=false;.ComboBox1.Visible:=true;.Image1.Picture.LoadFromFile('1.bmp');.ShowModal;;TForm1.F2Click(Sender: TObject);.Checked:=true;.Checked:=false;.Timer1.Enabled:=true;.ComboBox1.Visible:=true;.Image1.Picture.LoadFromFile('122.bmp');.ShowModal;;TForm1.N9Click(Sender: TObject);.show;;.Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Buttons, Menus, StdCtrls;= class(TForm): TSaveDialog;: TImage;: TPopupMenu;: TMenuItem;: TTimer;: TMenuItem;: TTimer;: TComboBox;FormPaint(Sender: TObject);N1Click(Sender: TObject);FormCloseQuery(Sender: TObject; var CanClose: Boolean);Timer1Timer(Sender: TObject);Image1Click(Sender: TObject);Timer2Timer(Sender: TObject);ComboBox1Change(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;Unit1;,x2:real; // границы изменения аргумента функции,y2:real; // границы изменения значения функции:real; // аргумент функции:real; // значение функции в точке х:real; // приращение аргумента,b:integer; // левый нижний угол области вывода графика,h:integer; // ширина и высота области вывода графика,my:real; // масштаб по осям X и Y,y0:integer; // точка - начало координатbegin

// область вывода графика "

{$R *.dfm}f(x:real):real;a,b:real ;,n:integer;:=strtofloat(Form1.edit5.Text);:=cos(a*x*x);; // строит трафик функцииTForm2.FormPaint(Sender: TObject);;// изменился размер окна программыTForm2.N1Click(Sender: TObject);Form2.SaveDialog1.Execute then.Image1.Picture.SaveToFile(form2.SaveDialog1.FileName);;;TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);MessageDlg('Сохранить изображение?',mtwarning,mbYesNoCancel,0) of:if Form2.SaveDialog1.Execute then.Image1.Picture.SaveToFile(form2.SaveDialog1.FileName+'.bmp');.Close;;:form2.Close;;;TForm2.Timer1Timer(Sender: TObject);:=10; // X - координата левого верхнего

// угла:=Form2.ClientHeight-20; // Y - координата левого верхнего

// угла:=Form2.ClientHeight-40; // высота:=Form2.Width-40; // ширина xl:=0; // нижняя граница диапазона аргумента:=25; // верхняя граница диапазона аргумента:=0.01; // шаг аргумента // найдем максимальное и минимальное значения

// функции на отрезке [xl,x2]:=f(xl); // минимум:=f(xl); //максимум:=xl;.Canvas.TextOut(12,5,'y');.Canvas.TextOut(640,80,'x');.Canvas.TextOut(7,20,'^');.Canvas.TextOut(650,71,'>');:= f(x);y < yl then yl:=y;y > y2 then y2:=y;:=x+dx;(x>=x2);

// вычислим масштаб:=h/abs(y2-yl); // масштаб по оси Y:=w/abs(x2-xl)+50; // масштаб по оси X // оси:=1;:=b-Abs(Round(yl*my)); with form2.Image1.Canvas do

// оси(l,b);LineTo(l,b-h);(x0,y0);LineTo(x0+w, y0) ;(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3) ) ;(1+5,b,FloatToStrF(yl,ffGeneral, 6,3) ) ;

// построение графика:=xl;form1.F1.Checked=true then begin.Enabled:=true;.Enabled:=false; end;form1.N25.Checked=true then begin:=f(x) ;[x0+Round(x*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;:=x+dx;(x>=x2) ;;;;TForm2.Image1Click(Sender: TObject);.Timer1.Enabled:=true;;TForm2.Timer2Timer(Sender: TObject);x<=x2 then begin:=f(x);.Image1.Canvas.Pixels[x0+Round(x*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;.Image1.Canvas.Pixels[x0+Round((x+0.005)*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;.Image1.Canvas.Pixels[x0+Round((x+0.005)*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;.Image1.Canvas.Pixels[x0+Round((x+0.005)*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;;:=x+0.05;;TForm2.ComboBox1Change(Sender: TObject);Form2.ComboBox1.ItemIndex=0 then begin.Image1.Picture.LoadFromFile('1.bmp');.Interval:=1000; Form2.Timer2.Enabled:=false;.Timer1.Enabled:=true; end;Form2.ComboBox1.ItemIndex=1 then begin.Image1.Picture.LoadFromFile('1.bmp');.Interval:=500; Form2.Timer2.Enabled:=false;.Timer1.Enabled:=true; end;Form2.ComboBox1.ItemIndex=2 then begin.Image1.Picture.LoadFromFile('1.bmp');.Interval:=1; Form2.Timer2.Enabled:=false;.Timer1.Enabled:=true; end;;.Unit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Menus, StdCtrls;= class(TForm): TImage;: TPopupMenu;: TTimer;: TSaveDialog;: TMenuItem;: TMenuItem;: TTimer;: TComboBox;N1Click(Sender: TObject);FormCloseQuery(Sender: TObject; var CanClose: Boolean);Timer1Timer(Sender: TObject);Timer2Timer(Sender: TObject);ComboBox1Change(Sender: TObject);Image1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm3;Unit1, Unit2;,x2:real; // границы изменения аргумента функции,y2:real; // границы изменения значения функции:real; // аргумент функции:real; // значение функции в точке х:real; // приращение аргумента,b:integer; // левый нижний угол области вывода графика,h:integer; // ширина и высота области вывода графика,my:real; // масштаб по осям X и Y,y0:integer; // точка - начало координатbegin

// область вывода графика "

{$R *.dfm}f(x:real):real;a,b:real ;,n:integer;:=strtofloat(Form1.edit5.Text);:=-Sin(a*x*x)*(2*a*x);; // строит трафик функцииTForm3.N1Click(Sender: TObject);Form3.SaveDialog1.Execute then.Image1.Picture.SaveToFile(form3.SaveDialog1.FileName);;;TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean);MessageDlg('Сохранить изображение?',mtwarning,mbYesNoCancel,0) of:if Form3.SaveDialog1.Execute then.Image1.Picture.SaveToFile(form3.SaveDialog1.FileName+'.bmp');.Close;;:form3.Close;;;TForm3.Timer1Timer(Sender: TObject);:=10; // X - координата левого верхнего

// угла:=Form3.ClientHeight-20; // Y - координата левого верхнего

// угла:=Form3.ClientHeight-40; // высота:=Form3.Width-40; // ширина xl:=0; // нижняя граница диапазона аргумента:=25; // верхняя граница диапазона аргумента:=0.01; // шаг аргумента // найдем максимальное и минимальное значения

// функции на отрезке [xl,x2]:=f(xl); // минимум:=f(xl); //максимум:=xl;.Canvas.TextOut(12,5,'y');.Canvas.TextOut(400,80,'x');.Canvas.TextOut(7,20,'^');.Canvas.TextOut(400,70,'>');:= f(x);y < yl then yl:=y;y > y2 then y2:=y;:=x+dx;(x>=x2);

// вычислим масштаб:=h/abs(y2-yl); // масштаб по оси Y:=w/abs(x2-xl)+20; // масштаб по оси X // оси:=1;:=b-Abs(Round(yl*my)); with form3.Image1.Canvas do

// оси(l,b);LineTo(l,b-h);(x0,y0);LineTo(x0+w, y0) ;(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3) ) ;(1+5,b,FloatToStrF(yl,ffGeneral, 6,3) ) ;

// построение графика:=xl;form1.F2.Checked=true then begin.Enabled:=true;.Enabled:=false; end;form1.N26.Checked=true then begin:=f(x) ;[x0+Round(x*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;:=x+dx;(x>=x2) ;;;;TForm3.Timer2Timer(Sender: TObject);x<=x2 then begin:=f(x);.Image1.Canvas.Pixels[x0+Round(x*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;.Image1.Canvas.Pixels[x0+Round((x+0.005)*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;.Image1.Canvas.Pixels[x0+Round((x+0.005)*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;.Image1.Canvas.Pixels[x0+Round((x+0.005)*mx),y0-Round(y*my)]:=Form1.ColorDialog3.Color;;:=x+0.05;;TForm3.ComboBox1Change(Sender: TObject);If Form3.ComboBox1.ItemIndex=0 then begin.Image1.Picture.LoadFromFile('122.bmp');.Interval:=100; Form3.Timer2.Enabled:=false;.Timer1.Enabled:=true; end;Form3.ComboBox1.ItemIndex=1 then begin.Image1.Picture.LoadFromFile('122.bmp');.Interval:=50; Form3.Timer2.Enabled:=false;.Timer1.Enabled:=true; end;Form3.ComboBox1.ItemIndex=2 then begin.Image1.Picture.LoadFromFile('122.bmp');.Interval:=1; Form3.Timer2.Enabled:=false;.Timer1.Enabled:=true; end;;TForm3.Image1Click(Sender: TObject);;.Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls;= class(TForm): TImage;: TLabel;: TLabel;: TLabel;: TLabel;

{ Private declarations }

{ Public declarations };: TForm4;

{$R *.dfm}.

Похожие работы на - Решения дифференциального уравнения для производной функции методом Хемминга и методом Адамса

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!