Решение нелинейных алгебраических
И ТРАНСЦЕНДЕНТНЫХ УРАВНЕНИЙ
Цель:
- изучить правила описания и определения процедур и функций языка Object Pascal;
- получить практические навыки программирования с использованием процедур и функций на языке Object Pascal и создания оконного приложения в среде Delphi.
Общие сведения
Решение нелинейных алгебраических и трансцендентных уравнений f(x)=0, где функция непрерывна на некотором интервале, методом деления отрезка пополам: 1) устанавливают, что на интервале [a,b] выполняются условия f(a)f(b)<0 и f'(x)>0 или f'(x)<0 (сохраняет свой знак для всех xÎ[a,b]). Значение корня x* необходимо найти с точностью e>0.
Решение нелинейных алгебраических и трансцендентных уравнений f(x)=0, где функция непрерывна на некотором интервале, методом касательных: небольшой участок дуги кривой y=f(x) заменяем касательной. Касательную необходимо проводить: через точку x=b, если: 1) f(a)>0; f(b)<0; f''(x)<0 для всех a≤x≤b и f(b)f''(b)>0; 2) f(a)<0; f(b)>0; f''(x)>0 для всех a≤x≤b и f(b)f''(b)>0; : через точку x=a, если: 1) f(a)>0; f(b)<0; f''(x)<0 для всех a≤x≤b и f(a)f''(a)>0; 2) f(a)<0; f(b)>0; f''(x)<0 для всех a≤x≤b и f(a)f''(a)>0. Дополнительные условия: непрерывными должны быть производные f'(x) и f''(x).
Блок-схемы алгоритмов решения задачи методом деления отрезка пополам и методом касательных приведены на рис.15.1 и 15.2, соответственно.
Программа решения задачи методом деления отрезка пополам: program zad_1; Uses SysUtils; {$APPTYPE CONSOLE} Const Eps=0.0001; Var a,b,c,y:real; function f(x:real):real; begin f:=x*x*x+x-3; end; Begin Write('Vvedite a,b '); Readln(a,b); Repeat c:=(a+b)/2; y:=f(c); if abs(y)<Eps then break else begin if f(a)*y<0 then b:=c else a:=c; end; until (abs(b-a)<Eps); Writeln('x=',c:5:4,' y=',y:5:4); Readln; End. | Программа решения задачи методом касательных: program zad_2; Uses SysUtils; {$APPTYPE CONSOLE} Label 1; Const Eps=0.0001; Var a,b,c,x,x1:real; function f(t:real):real; begin f:=t*t*t+t-3; end; function f_1(t:real):real; begin f_1:=3*Sqr(t); end; function f_2(t:real):real; begin f_2:=6*t; end; Begin Write('Vvedite a,b '); Readln(a,b); x:=a; if f(a)*f_2(a)<=0 then x:=b; 1:x1:=x-f(x)/f_1(x); if (abs(x-x1)>=Eps) then begin x:=x1; goto 1; end; Writeln('x=',x:5:4); Readln; End. |
Решение уравнений (неравенств) и систем уравнений (неравенств) с помощью пакета Mathcad
Решение таких уравнений с помощью встроенной функции
Root(f(x),x);
Root(f(x),x,a,b);
где f(x) – скалярная функция, определяющая уравнения вида F(x)=0; х – скалярная переменная, относительно которой решается уравнение; a, b – границы интервала, внутри которого происходит поиск корня.
Перед использованием функции “root” само уравнение должно быть приведено к виду F(x)=0. Второй аргумент функции должен быть определен. Пакет использует его значение (x0) в качестве первого приближения при вычислении нулевого корня (применяется метод секущих, TOL=0.001). Перед применением функции “root” для определения нулевых корней уравнения желательно исследовать функцию F(x) на минимакс и точки разрыва, число нулевых корней, их типов, или построить график функции Y=F(x).
В случае близлежащих корней можно применить метод отделения корней:
Если уже известен один нулевой корень X=A уравнения F(x)=0, то второй корень можно вычислять с помощью функции :
Пример. Найти корень нелинейного алгебраического уравнения sin(x)=0
Задание
1. Составьте блок-схему алгоритма и программу решения задачи (задание взять у преподавателя, ведущего занятие).
2. Решить задачу с помощью пакета Mathcad.
Контрольные вопросы
1. Сформулируйте задачу.
2. Опишите методы поиска корней алгебраических и трансцендентных уравнений и их геометрический смысл.
3. Какие преимущества и недостатки методов?
4. Какие преимущества и недостатки методов?
5. Как решить задачу с помощью пакета MathСad?
Лабораторная работа №16
СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ (MS ACCESS)
Цель: научиться разрабатывать базы данных с использованием СУБД MS ACCESS;
Задание:
1. Создайте таблицу базы данных (исходные данные согласуйте с преподавателем).
2. Создайте межтабличные связи.
3. Создайте запрос на выборку, основанный на связанных таблицах; сформируйте структуру запроса путем выбора базовых таблиц и полей, а также сформулируйте условие отбора.
4. Создайте запрос «с параметром».
5. Создайте итоговый запрос.
Пример:
Разработать базу данных (БД) для выполнения сборки ПК из готовых компонентов, основанную на двух таблицах комплектующих. Одна таблица содержит данные, которые могут отображаться для клиентов при согласовании спецификации изделия, — в ней указаны розничные цены на компоненты. Вторая таблица предназначена для анализа результатов деятельности предприятия — в ней содержатся оптовые цены на компоненты и краткая информация о поставщиках (клиенты предприятия не имеют доступа к данным этой таблицы).
Создание базовых таблиц
1. Запустите программу MS Access (Пуск / Программы / Microsoft Access).
2. Включите переключатель Новая база данных в окне MS Access и щелкните на кнопке ОК.
3. Создайте папку на диске D: в окне Файл новой базы данных, присвойте файлу имя: Комплектующие и щелкните на кнопке Создать. Откроется окно новой базы — Комплектующие: база данных.
4. Откройте панель Таблицы.
5. Дважды щелкните на значке Создание таблицы в режиме конструктора — откроется бланк создания структуры таблицы.
6. Введите для первой таблицы следующие поля:
Имя поля | Тип поля |
Компонент | Текстовый |
Модель | Текстовый |
Основной параметр | Числовой |
Цена | Числовой |
7. Щелкните на поле Цена. В нижней части бланка задайте свойство Число десятичных знаков, равным 2.
8. Задайте ключевое поле для связи с будущей таблицей поставщиков. Т.к. ни одно поле не является «уникальным», используйте комбинацию полей Компонент и Модель. Выделите оба поля в верхней части бланка (с нажатой клавишей SHIFT). Щелчком правой кнопки мыши откройте контекстное меню и выберите в нем пункт Ключевое поле.
9. Закройте окно Конструктора. При закрытии окна присвойте таблице имя Комплектующие.
10. Создайте таблицу Поставщики, повторив действия пунктов 5 – 9, со следующими полями.
Имя поля | Тип поля |
Компонент | Текстовый |
Модель | Текстовый |
Цена оптовая | Числовой |
Поставщик | Текстовый |
Телефон | Текстовый |
Адрес | Текстовый |
Примечание | Поле MEMO |
Ключевое поле можно не задавать.
11. Откройте в окне Комплектующие: база данных по очереди созданные таблицы и заполните их экспериментальным содержанием (10…15 записей).
Создание межтабличных связей
1. Откройте в окне Комплектующие: база данных панель Таблицы. На ней должны присутствовать значки созданных таблиц Комплектующие и Поставщики. Выберите на панели инструментов кнопку Схема данных (или команды строки меню: Сервис / Схема данных). Одновременно откроются окно Схема данных и диалоговое окно Добавление таблицы.
2. Выберите щелчком на кнопке Добавить таблицы Комплектующие и Поставщики - в окне Схема данных откроются списки полей этих таблиц.
3. Выделите при нажатой клавише SHIFT в таблице Комплектующие два поля — Компонент и Модель.
4. Перетащите эти поля на список полей таблицы Поставщики. При отпускании кнопки мыши автоматически откроется диалоговое окно Изменение связей.
5. Выберите на правой панели окна Изменение связей поля Компонент и Модель таблицы Поставщики, включаемые в связь. Не устанавливайте флажок Обеспечение целостности данных (в данном задании не требуется).
6. Закройте окно Изменение связей и в окне Схема данных рассмотрите образовавшуюся связь. Убедитесь в том, что линию связи можно выделить щелчком левой кнопки мыши, а щелчком правой кнопки мыши открывается контекстное меню, позволяющее разорвать связь или отредактировать ее.
7. Закройте окно Схема данных.
Создание запроса на выборку
Создание запроса на выборку жестких дисков, имеющих емкость не менее x Гбайт при цене менее z у.е. Результирующая таблица должна содержать также адрес поставщика и номер его телефона.
1. Откройте панель Запросы в окне Комплектующие: база данных. Дважды щелкните на значке Создание запроса в режиме Конструктора — откроется бланк запроса по образцу и диалоговое окно Добавление таблицы.
2. Выберите таблицу Поставщики в окне Добавление таблицы и щелкните на кнопке Добавить. Закройте окно Добавление таблицы.
3. Выберите в списке полей таблицы Поставщики поля, включаемые в результирующую таблицу: Компонент, Модель, Цена оптовая, Поставщик, Телефон, с помощью двойных щелчков на именах полей.
4. Задайте условие отбора для поля Компонент. Введите в соответствующую строку: Жесткий диск. Из таблицы будут выбраны только жесткие диски.
5. Задайте условие отбора для поля Цена оптовая. Введите в соответствующую строку: < z. Из таблицы будут выбираться только изделия с ценой менее z условных единиц.
6. Задайте условие отбора по емкости жесткого диска. В таблице Поставщики такого поля нет, но есть поле Модель, которое однозначно определяет параметры изделия. Т.к. по полю Модель установлена связь с таблицей Комплектующие, то можно ввести в запрос поле Основной параметр, взяв его из другой таблицы.
Добавьте список полей таблицы Комплектующие в верхнюю часть бланка запроса по образцу. Для этого щелкните правой кнопкой мыши в верхней области бланка и в открывшемся контекстном меню выберите пункт Добавить таблицу — откроется окно Добавление таблицы. Выберите в нем таблицу Комплектующие.
7. Введите в бланк запроса по образцу поле Основной параметр двойным щелчком на нем в списке полей таблицы Комплектующие.
8. Введите условие >х в строку Условие отбора столбца Основной параметр (емкость диска более х Гбайт).
9. Закройте бланк запроса по образцу. Введите при его закрытии имя - Выбор комплектующих.
10. Откройте в окне Комплектующие: база данных только что созданный запрос и исследуйте содержание итоговой таблицы. Если ни одно изделие не соответствует условию отбора и получившаяся итоговая таблица не имеет данных, откройте базовые таблицы и заполните их модельными данными, позволяющими проверить работу запроса.
Создание запросов «с параметром»
Критерии отбора данных вводятся на этапе запуска запроса.
1. Откройте панель Запросы в окне Комплектующие: база данных. Дважды щелкните на значке Создание запроса в режиме Конструктора — откроется бланк запроса по образцу.
2. Создайте запрос на выборку, основанный на таблице Поставщики, в который войдут следующие поля: Компонент; Модель; Цена оптовая; Поставщик; Телефон (см. Создание запроса на выборку).
3. Введите: Процессор в строку Условие отбора поля Компонент.
4. Заполнить строку Условие отбора для поля Цена оптовая надо таким образом, чтобы при запуске запроса предлагалось ввести нужное значение. Текст должен быть заключен в квадратные скобки. Если необходимо отобрать процессоры, цена которых больше 100 единиц, то необходимо написать: >100. Если нужны процессоры дешевле 80 единиц, то необходимо написать <80. Если хотите дать возможность выбора, то должны написать: < [Введите максимальную цену].
5. Закройте запрос, сохранив его под именем Выбор комплектующих.
6. Откройте панель Запросы в окне Комплектующие: база данных и запустите запрос Выбор комплектующих — на экране появится диалоговое окно Введите значение параметра.
7. Введите какое-либо число и щелкните на кнопке ОК. По результатам запроса будет сформирована итоговая таблица с учетом содержания в таблице Поставщики.
Создание итогового запроса
В итоговом запросе может рассчитываться сумма значений или величина среднего значения по всем ячейкам поля, может выбираться максимальное или минимальное значение данных в поле, может также исполняться иная итоговая функция. Итоговые запросы, как и запросы на выборку, готовятся с помощью бланка запроса по образцу.
Предположим, что собирают компьютеры трех классов; «Элитный», «Деловой» и «Экономичный». Несмотря на то что архитектура у всех компьютеров близка, их компоненты заметно отличаются по цене и техническим параметрам. Соответственно, имеются значительные отличия в цене этих трех моделей. Задача — подготовить итоговый отчет, с помощью которого можно определять цену каждой из модели компьютеров и динамично ее отслеживать при изменении входящих компонентов или их поставщиков.
1. Откройте панель Таблицы в окне Комплектующие: база данных. Выберите таблицу Комплектующие.
2. Откройте таблицу в режиме проектирования щелчком на значке Конструктор для создания дополнительного поля Класс, в котором будут храниться данные о том, для какого класса изделий предназначены компоненты.
3. Вставьте новое поле в начало структуры таблицы: выделите первое поле (Компонент) и нажмите клавишу INSERT.
4. Введите имя нового поля — Класс и определите его тип — Текстовый.
5. Закройте окно Конструктора, подтвердите необходимость изменить структуру таблицы.
6. Откройте таблицу Комплектующие и заполните ее содержанием, введя для каждого класса данные по следующим изделиям: Материнская плата; Процессор; Оперативная память; Жесткий диск; Корпус; Дисковод CD-ROM; Дисковод гибких дисков; Видеоадаптер; Звуковая карта; Клавиатура; Мышь.
Проставьте произвольно цены на эти изделия для каждого класса. Другие поля таблицы можно не заполнять, т.к. в формировании итогового запроса они не будут участвовать.
7. Закройте таблицу Комплектующие.
8. Откройте панель Запросы щелчком на кнопке окна Комплектующие: база данных.
9. Выполните двойной щелчок на значке Создание запроса в режиме конструктора и затем выберите таблицу Комплектующие, на основе которой будет разрабатываться итоговый запрос. Закройте окно Добавление таблицы.
10. Введите в бланк запроса по образцу следующие поля таблицы Комплектующие: Класс, Компонент, Цена.
11. Включите сортировку по возрастанию для поля Класс и сортировку по убыванию для поля Цена.
12. Щелкните на кнопке Групповые операции на панели инструментов или Вид / Групповые операции строки меню для создания в нижней части бланка строки Групповые операции. На ее основе создаются итоговые вычисления. Все поля, отобранные для запроса, получают в этой строке значение Группировка.
13. Оставьте в строке Групповые операции значение Группировка для поля, по которому производится группировка записей (в данном случае — Класс). Щелкните для остальных полей в этой строке — появится кнопка раскрывающегося списка, из которого можно выбрать итоговую функцию для расчета значений в данном поле.
14. Выберите итоговую функцию Sum для поля Цена, чтобы определить стоимость изделия как суммы стоимостей комплектующих.
15. Выберите итоговую функцию Count для поля Компонент, чтобы определить общее количество записей, вошедших в группу. В данном случае это количество узлов, из которых собран компьютер.
16. Закройте бланк запроса по образцу и дайте ему имя: Расчет стоимости изделия.
Запустите запрос и убедитесь, что он правильно работает.
Контрольные вопросы
1. Как создать таблицу базы данных?
2. Как создать межтабличные связи?
3. Как создать запрос на выборку?
4. Как создать запрос «с параметром»?
5. Как создать итоговый запрос?
ЛИТЕРАТУРА
1. Информатика: Базовый курс / С.В. Симонович и др. – СПб.: Питер, 2002. – 640 с.: ил.
2. Дьяконов В. П. Руководство по применению системы MathCad. — Смоленск : СФМЭИ, 1991 г. — 114 с.
3. Дьяконов В. П. Автоматизация математических расчетов с помощью системы MathCad. — Мир ПК., 1991 г. — 43 с.
4. Крушевский А.В., Беликов Н.И., Тищенко В.Д. и др. Вычислительная техника в инженерных и экономических расчетах. - Киев: Вища шк., 1985.- 295с.
5. Послед Б.С. Access 2002. Приложения баз данных. Лекции и упражнения. – СПб: ООО «ДиаСофтЮП», 2002. – 656 с.
6. Дьяконов В.П. Справочник по алгоритмам на языке Pascal для персональных ЭВМ: Справочник. - М.: Наука, 1987.-240с.