Главная страница

Программирование delphi. Использование компьютерных технологий в медицине


Скачать 2.83 Mb.
НазваниеИспользование компьютерных технологий в медицине
АнкорПрограммирование delphi.doc
Дата28.01.2017
Размер2.83 Mb.
Формат файлаdoc
Имя файлаПрограммирование delphi.doc
ТипДокументы
#795
страница6 из 16
1   2   3   4   5   6   7   8   9   ...   16

3.2. Создание программы «Степенные ряды»


Задача. Необходимо рассчитать значения функций ex и ln(x), заданных с помощью рядов, с определенной точностью. Точность и аргумент функции вводятся с клавиатуры. Результат работы сравнить со значениями стандартных функций.

Формулы разложения в ряд экспоненты и логарифма представлены в табл. 3.4.

Таблица 3.4

Функция

Разложение в ряд

Стандартная
функция


Замечания

exp(x)



Exp(x)



ln(x)



Lnxp1(x+1)

Необходим модуль Math

|x|<1

Примерный вид окна программы представлен на рис. 3.4.

Процесс создания программы происходит по следующему алгоритму:

  1. Запустить Delphi.

  2. Сохранить проект как «Work3», модуль – «Main».

  3. Изменить свойства окна: заголовок «Степенные ряды»  Caption.

  4. С
    оздать поля ввода для значений X и погрешности Е. Считать, что все числа целые, порядок чисел задавать программно:

    • взять 2 элемента SpinEdit, вкладка Samples, значок ;

    • назвать (свойство Name) один SEValueX – для ввода X, другой SEValueEввод E;

    • настроить минимальные значения элементов на 0  MinValue;

    • настроить максимальное значение для элемента SEValueX9, для SEValueE – 14  MaxValue;

    • изменить шаг дискретизации на 1  Increment.

  1. Добавить 2 элемента для вывода результатов – функция, рассчитанная с помощью ряда, и функция, рассчитанная с помощью стандартной функции:

    • добавить 2 элемента Edit, вкладка Standard, значок ;

    • назвать элементы (свойство Name) для вывода рассчитанной функции ERFun, для стандартной ESFun. Изменить свойство Text на 0 (по умолчанию результат равен «0»);

    • добавить метки для обозначения вводимых и выводимых величин:

    • изменить заголовки (Caption) меток:

    • для поля ввода X – «Введите Х»;

    • для ввода погрешности «Введите погрешность 10^-Е» (погрешность вводить как количество знаков после запятой, например, число 3 будет обозначать погрешность 0.001);

    • для вывода расчетного значения – «Рассчитанная функция»;

    • для вывода стандартного значения функции – «Стандартная функция».

  1. Так как будут рассчитываться 2 функции, добавить переключатель – какая функция рассчитывается:

  • добавить элемент RadioGroup, вкладка Standard, значок ;

  • изменить название на RGName;

  • изменить заголовок на «Функция»  Caption;

  • добавить названия функций «Экспонента» и «Логарифм», запустив мастер свойства Items:

    • ввести 2 строки: «Экспонента» и «Логарифм»;

    • установить активным первый элемент (нумерация начинается с 0)  ItemIndex установить в 0.

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

    • добавить элемент Button, вкладка Standard, значок ;

    • кнопки назвать: кнопка выхода BQuit, кнопка расчета BOkName;

    • изменить заголовки на «Выход» и «Ok»  Caption.

  1. Окно готово!

  2. Запрограммировать выход на кнопку BQuit (команда Close);

  3. Запрограммировать расчет на кнопке BOk: расчет будет осуществлен для функции, которая отмечена элементом RG. Первой является функция «экспонента»:

  • проанализировать ряд, по которому осуществляется расчет функции, и выявить, как получить элемент ряда an, зная элемент an-1. Для расчета экспоненты необходимо элемент ряда умножить на «x / n»;

  • для расчета функции потребуются следующие переменные: для хранения значения функции – переменная Func вещественного типа (тип Real); переменные а и а1 для хранения соответственно n-го и n+1-го членов ряда (также тип Real); переменная е (тип Real) для хранения точности расчета; переменная x (тип Real) для удобства записи формул; переменная n (тип Integer) – счетчик цикла. Эти переменные необходимо описать в разделе var процедуры нажатия на кнопку «Оk». Текст процедуры примет вид:

procedure TForm1.BOkClick(Sender: TObject);

var

Func : real;

A,A1 : real;

e : real;

x : real;

n : integer;

  • присвоить значению переменной x значение элемента SEValueX (свойство Value). При расчете точности необходимо в цикле умножать переменную e на число 0.1 столько раз, сколько требуется знаков после запятой (данное число содержит элемент SEValueE). Для этого после начала процедуры (оператор begin) ввести следующие строки:

x := SEValueX.Value;

e := 1;

For n := 1 to SEValueE.value do e := e * 0.1;

  • выяснить, какая функция рассчитывается, можно по переменной RG.ItemIndex: если она равна 0, то рассчитывается функция «экспонента», а 1 – «логарифм». Для решения такой задачи удобно использовать оператор выбора Case. После расчета точности необходимо добавить:

case RG.ItemIndex of

0 : begin

{Расчетэкспоненты}

end;

1 : begin

{Расчетлогарифма}

end;

end; {Case}

    • для расчета функции можно использовать оператор цикла с постусловием, так как данная функция может быть рассчитана как минимум один раз. Условием выхода из цикла будет тот факт, что значение очередного члена ряда станет меньше заданной точности. После комментария {Расчет экспоненты} добавить строки:

Func := 1;

a := 1;

n := 1;

repeat

a1 := a * x /n;

Func := Func + a1;

a := a1;

Inc(n);

until(a

  • для вывода результатов расчета необходимо преобразовать числа в строки, так как полем ввода/вывода элемента Edit является строка. После окончания цикла (строка end {Case}) необходимо добавить следующие строки:

ERFun.Text := FloatToStr(Func);

ESFun.Text := FloatToStr(Exp(x));

  1. Расчет экспоненты окончен! Запустить программу, нажав <F9>.

  2. Для улучшения программы:

    • необходимо написать текст расчета функции «логарифм». Так как ряд использует в качестве аргумента x+1, удобно использовать функцию Lnxp1, которая также возвращает натуральный логарифм числа (х+1). Для этого требуется подключить к программе модуль Math. Это можно сделать в разделе описания модулей после слова implementation. Необходимо добавить:

Uses

Math;

    • для автоматического расчета после ввода значений в поля ввода (без нажатия на кнопку «Ok») необходимо назначить элементам SEValueX и SEValueE событие onChange кнопки BOk и сделать невидимой кнопку BOk (эти задачи рассмотрены в 2.2).
1   2   3   4   5   6   7   8   9   ...   16


написать администратору сайта