- •Введение
- •Лабораторная работа №1. Создание простого приложения
- •1 ) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий):
- •3) Компиляция и выполнение приложения
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №2. Циклические программы. Многострочное поле memo
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №3. Работа с одномерными массивами
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 4. Работа с двумерными массивами
- •Контрольные вопросы
- •Лабораторная работа № 5. Процедуры и функции в delphi
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 6. Рекурсивные процедуры и функции
- •Контрольные вопросы
- •Лабораторная работа №7. Разработка приложения с несколькими модулями
- •2) Последовательность действий по программированию событий
- •Лабораторная работа №8. Работа со строками
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •3) Откомпилируйте приложение и проверьте его работу задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №9. Создание текстового редактора
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 10. Методы простой сортировки
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 11. Поиск данных в массиве
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №12. Работа с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №13. Работа с типизированными файлами (файлы записей)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 14. Динамические структуры данных . Стек и очередь
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 15. Практическое применение стека и очереди
- •Лабораторная работа №16. Линейные списки
- •Лабораторная работа №17. Работа с бинарными деревьями поиска
- •Задание для самостоятельной работы
- •Лабораторная работа №18. Основы объектно-ориентированного программирования
- •Задание для самостоятельной работы
- •Лабораторная работа №19. Графика в delphi. Компоненты shape и chart
- •Контрольные вопросы
- •Лабораторная работа №20. Графика в delphi. Рисование по пикселам и пером
- •Контрольные вопросы
- •Лабораторная работа № 21. Вычисление суммы ряда
- •Литература
- •Содержание
- •214013 Г. Смоленск, Энергетический проезд, 1
Контрольные вопросы
Рисование по пикселам в Delphi
Рисование с помощью пера Pen в Delphi
Компоненты Form, Image , возможности свойства Canvas
Рисование графиков пером и по пикселам.
Лабораторная работа № 21. Вычисление суммы ряда
ЦЕЛЬ РАБОТЫ: Ознакомиться с методом вычисления суммы ряда с помощью рекуррентных соотношений.
ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ
Если при вычислении суммы ряда, значение очередного слагаемого вычислять непосредственно по формуле общего члена ряда, то и сложность алгоритма, и время его выполнения оказываются большими, чем в случае, когда вычисления основываются на полученных ранее промежуточных результатах.
Алгоритм вычисления суммы сходящегося ряда с помощью рекуррентных соотношений состоит в следующем:
Определяется выражение, на которое следует умножить предыдущий член ряда, чтобы получить следующий член ряда. Для этого формула для общего члена ряда с номером к+1 делится на формулу для общего члена ряда с номером к;
Выполняется умножение предыдущего члена ряда на найденное число;
Полученное число прибавляется к уже вычисленной сумме ряда;
Вычисления продолжают до тех пор, пока очередной член ряда не станет меньше некоторого числа . Например, =10-5.
ЗАДАНИЕ: Разработать приложение для вычисления суммы ряда при различных значениях аргумента x. Суммирование выполнять до тех пор, пока абсолютное значение очередного члена ряда не станет меньше 10-5.
Вычисления производить для переменной x в диапазоне от 0.5 до 0.75 с шагом 0.05.
Для проверки корректности вычислений использовать формулу .
В данном примере формула для вычисления следующего члена ряда будет иметь вид:
Приложение для вычисления суммы ряда приведено на рисунке 21.1.
Последовательность действий по созданию приложения:
Для события OnActivate формы введите следующий программный код:
procedure TForm1.FormActivate(Sender: TObject);
begin
// начальное количество строк
Stringgrid1.RowCount:=2;
// Количество столбцов
StringGrid1.ColCount:=3;
// Заголовки столбцов
StringGrid1.Cells[0,0]:=' x ';
StringGrid1.Cells[1,0]:=' Формула 1 ';
StringGrid1.Cells[2,0]:=' Формула 2 ';
end;
Для события OnClick кнопки «Выполнить» введите следующий программный код:
procedure TForm1.Button1Click(Sender: TObject);
Const
E=0.00001; // Значение точности вычислений
xbeg=0.5; // Начальное значение х
xend=0.8; // Конечное значение х
h=0.05; // Шаг
Var
f1:Real; // Сумма ряда, вычисленная по формуле 1
f2:Real; // Сумма ряда, вычисленная по формуле 2
x:Real; // Переменная x
r:Real; // Очередной член ряда
t:Real; // коэффициент вычисления следующего члена ряда
k:Integer; // номер члена ряда
begin
x:=xbeg; // начальное значение х
repeat
k:=1; // номер члена ряда
r:=SQR(x)*SQR(x)/(2*3*4);// значение первого члена ряда
f1:=0;
f2:=0;
// формула для вычисления следующего члена ряда
t:= SQR(x)*SQR(x)/(4*k*(4*k-1)*(4*k-2)*(4*k-3));
// Вычисление суммы ряда при очередном значении х
While r>=E do
begin
f1:=f1+r;
r:=r*t;
k:=k+1;
end;
// Вывод результата
Stringgrid1.Cells[0,Stringgrid1.RowCount-1]:=FormatFloat('0.00',x);
Stringgrid1.Cells[1,Stringgrid1.RowCount-1]:=FormatFloat('0.0000',f1);
f2:=(exp(x)+exp(-x)+2*cos(x))/4-1;
Stringgrid1.Cells[2,Stringgrid1.RowCount-1]:=FormatFloat('0.0000',f2);
// установка следующего значения х
x:=x+h;
Stringgrid1.RowCount:=Stringgrid1.RowCount+1;
until x>xend;
end;
Проверьте работу приложения
ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
С помощью рекуррентных соотношений вычислите сумму ряда:
Для проверки используйте формулу 2*sin2x. При x=0.5 обе формулы должны принимать значение 0.45969.