Вероятностные процессы и математическая статистика в автоматизированных системах
Классы решаемых задач: анализ и статистическая обработка полнофакторного эксперимента с ортогональными планами второго порядка, в которую входят нахождение коэффициентов регрессии, оценка из значимости, проверка адекватности и воспроизводимости модели; поиск сочетаний факторов в кодовых и натуральных переменных; построения графиков отклика от изменения каждого параметра; построения кривых равного… Читать ещё >
Вероятностные процессы и математическая статистика в автоматизированных системах (реферат, курсовая, диплом, контрольная)
Министерство образования и науки Украины
Кафедра КИТ
«ВЕРОЯТНОСТНЫЕ ПРОЦЕССЫ И МАТЕМАТИЧЕСКАЯ СТАТИСТИКА В АВТОМАТИЗИРОВАННЫХ СИСТЕМАХ»
2008
РЕФЕРАТ
Пояснительная записка к расчетно-графической работе: 29 стр., 9 рис., 1 прил., 5 источников.
Объект исследования — оптимальный предел прочности алюминиевых деформируемых сплавов при испытании на растяжение.
Метод исследования — применение математико-статистических методов в автоматизированных системах, реализация программ статистической обработки эксперимента на ЭВМ.
Многие детали и конструкции испытывают нагрузки на растяжение. При чем эти нагрузки часто являются основным фактором, влияющим на выход из строя деталей и конструкций. Поэтому очень важной и актуальной является задача нахождения оптимального состава материала, в течение длительного времени испытующего нагрузки на растяжение.
ДЕФОРМИРУЕМЫЙ АЛЮМИНИЕВЫЙ СПЛАВ, ЛИТИЙ, ТЕМПЕРАТУРА СТАРЕНИЯ, ВРЕМЯ СТАРЕНИЯ, МНОГОФАКТОРНЫЙ ЭКСПЕРИМЕНТ.
1 Постановка задачи
2 Этапы планирования и статической обработки результатов эксперимента для построения модели 2-го порядка
2.1 Построение модели плана II порядка
- 2.2 Кодирование факторов
- 2.3 Составление план — матрицы
- 2.4 Проверка воспроизводимости опытов
- 2.5 Расчет коэффициентов регрессии
- 2.6 Определение значимости коэффициентов
- 2.7 Проверка адекватности модели
- 3 Выбор и описание метода условной оптимизации
- 3.1 Выбор метода условной оптимизации
- 3.2 Описание метода условной оптимизации (Фиако-МакКормика)
- 4 Описание программы
- 4.1 Общие сведения
- 4.2 Функциональное назначение
- 4.3 Описание логической структуры программы
- 4.4 Используемые технические средства
- 4.5 Вызов и загрузка
- 4.6 Входные данные
- 4.7 Выходные данные
- 5 Результаты обработки данных эксперимента
- 6 Графики зависимости отклика
- 7 Кривые равного выхода
- Заключение
- Список использованных источников
- Приложение
Введение
Развитие современной техники связано с созданием новых и постоянным совершенствованием существующих технологических процессов. Основой их разработки и оптимизации является эксперимент. Заметное повышение эффективности экспериментальных исследований и инженерных разработок достигается использованием математических методов планирования экспериментов. Использование математико-статистических методов при постановке задач. В процессе экспериментирования и при обработке полученных данных существенно сокращает сроки решения, снижает затраты на исследования и повышает качество полученных результатов.
Встречающиеся на практике реальные задачи весьма разнообразны. Достаточно грубо их можно разделить на три основных задачи:
1 Выявление количественных зависимостей между параметрами процесса — задачи описания;
2 Определение оптимальных условий протекания процесса — экстремальные задачи;
3 Выбор оптимального состава многокомпонентных смесей.
Часто, приступая к изучению какого-либо процесса экспериментатор не имеет исчерпывающих сведений о механизме процесса. Можно только указать параметры определяющие условия протекания процесса, и, возможно требования к его результатам. Поставленная проблема является задачей кибернетики. Действительно, если считать кибернетику «наукой, изучающей системы любой природы, способные воспринимать, хранить и перерабатывать информацию для целей оптимального управления» [1], то такую систему можно представить в виде черного ящика.
Черный ящик — объект исследования, имеющий (k+p) входов и m выходов.
- X — управляемые параметры, Z — неуправляемые параметры.
- Зависимость между выходными параметрами (откликом) и входными параметрами (факторами) называется функцией отклика.
- Математическая запись функции отклика представлена в виде формулы (1):
- (1)
- Этому уравнению в многомерном пространстве соответствует гипперповерхность, которая называется поверхностью отклика, а само пространство — факторным пространством.
- Эксперимент можно проводить по разному. В случае, когда исследователь наблюдает за каким-то неуправляемым процессом, не вмешиваясь в него, или выбирает экспериментальные точки интуитивно, на основании каких-то привходящих обстоятельств, эксперимент считают пассивным. В настоящее время пассивный эксперимент считается неэффективным.
- Гораздо более продуктивно проводится эксперимент, когда исследователь применяет статистические методы на всех этапах исследования, и, прежде всего, перед постановкой опытов, разрабатывая схему эксперимента, а также в процессе экспериментирования, при обработке результатов и после эксперимента, принимая решение о дальнейших действиях. Такой эксперимент считают активным, и он предполагает планирование эксперимента.
- Под планированием эксперимента понимают процедуру выбора числа и условий проведения опытов, необходимых и достаточных для решения поставленной задачи с требуемой точностью. Основные преимущества активного эксперимента связаны с тем, что он позволяет:
- Минимизировать общее число опытов;
- Выбирать четкие логически обоснованные процедуры, последовательно выполняемые экспериментатором при проведении исследования;
- Использовать математический аппарат, формализующий многие действия экспериментатора;
- Одновременно варьировать всеми переменными и оптимально использовать факторное пространство;
- Организовать эксперимент таким образом, чтобы выполнялись многие исходные предпосылки регрессионного анализа;
- Получать математические модели, имеющие лучшие в некотором смысле свойства по сравнению с моделями, построенными из пассивного эксперимента;
- Рандомизировать условия опытов, то есть многочисленные мешающие факторы превратить в случайные величины;
- Оценивать элемент неопределенности, связанный с экспериментом, что дает возможность сопоставлять результаты, полученные разными исследователями.
- Целью данной работы является освоение анализа плановых экспериментов и анализ данных, полученных при выполнении этих экспериментов.
1. Постановка задачи
Изучали механические свойства одного из алюминиевых деформируемых сплавов в зависимости от содержания в нем лития Х1 (основной уровень 1%, интервал варьирования 0,5%), температуры старения Х2 (основной уровень 175 гр. С, интервал варьирования 25 гр. С) и времени старения Х3 (основной уровень 4 ч., интервал варьирования 2 ч.). В качестве отклика выбран предел прочности сплавов, определяющийся при испытании на растяжение (Y, кгс/кв.мм).
Задание на расчетно-графическую работу:
1) Найти уравнение регрессии 2-го порядка и выполнить статистический анализ модели.
2) Исследовать модель 2-го порядка на выпуклость и вогнутость методами дифференциального исчисления.
3) Определить тип поверхности отклика.
4) Построить графики зависимости отклика от каждого из факторов Y=f (Xi) при фиксированных значениях остальных факторов (каждый рисунок должен содержать 3−4 кривые).
5) Применяя один из методов оптимизации, найти в исследованной области оптимальные сочетания факторов, обеспечивающие максимальное и минимальное значения отклика.
6) Построить двумерные сечения поверхности отклика, соответствующие пересечению поверхности с плоскостями Xi=Ximax. Для этого в уравнение регрессии необходимо подставить значение этого фактора, и по полученным двухфакторным уравнениям рассчитать, а потом построить изолинии поверхности отклика (кривые равного выхода).
7) Определить типы кривых равного выхода.
8) Используя двумерные сечения поверхности, выполнить анализ влияния факторов в изученных интервалах их изменения на функцию отклика.
2. Этапы планирования и статической обработки результатов эксперимента для построения модели 2-го порядка
2.1 Построение модели плана II порядка
Для построения плана II порядка можно использовать следующую модель:
(2)
Для этого необходимо провести эксперимент так, чтобы каждый фактор варьировался на трех уровнях. Простейшим решением этой задачи является план типа 3k. Реализация этого плана для k>3 требует большого числа опытов.
Для построения модели второго порядка обычно используют ортогональный план первого порядка в качестве ядра, на котором достраивается план второго порядка, поэтому такие планы называются композиционными и соответствуют шаговой идее построения планов.
Для удобства работы с приведенной моделью II порядка, с помощью обозначений (3) преобразуем ее к виду (2'):
(3)
(2')
Задача заключается в том, чтобы по результатам наблюдений определить значения коэффициентов bi, дисперсии и доверительные границы для них, а также определить их значимость.
Согласно МНК, для нахождения коэффициентов bi, необходимо минимизировать функцию:
(4)
где N — количество опытов;
xui -значение i-й переменной в u-м опыте;
yu — значение экспериментальных y в u-м опыте;
Из условия минимизации функции ss, можно получить систему нормальных уравнений МНК:
(5)
Представив все результаты в матричной форме, получим:
, , (6)
где X — матрица условий эксперимента; Y — матрица результатов опытов; B — матрица коэффициентов.
Умножив транспонированную матрицу X на матрицу X, получим матрицу системы нормальных уравнений, которая называется информационной матрицей Фишера (матрицей моментов):
(7)
Умножив транспонированную матрицу X на матрицу Y, получим:
(8)
Используя данные обозначения, систему нормальных уравнений можно записать в матричной форме:
(9)
Обозначая обратную матрицу моментов как:
(10)
получим выражение для матрицы коэффициентов:
(11)
Все статистические свойства коэффициентов линии регрессии определяется матрицей дисперсий ковариаций.
(12)
где cov (bi, bj) — ковариации коэффициентов bi, и bj;
S2(bi) — дисперсия коэффициента bi;
S2(y) — дисперсия опыта.
Дисперсию опыта можно определить по формулам:
(13)
(14)
где m — количество параллельных опытов.
Если параллельные опыты не проводятся, то для оценки дисперсии опыта ставятся эксперименты в центре плана. Тогда дисперсия определяется по формуле:
(15)
где — количество опытов в центре плана.
Так как ядро плана ортогонально, то для сохранения ортогональности композиционного плана необходимо при построении матрицы планирования обеспечить условия:
Величина зависит от фактора и от плеча d:
;
Для k=3 ядро =15, =11/15=0.7303, d=1.2154
2.2 Кодирование факторов
Кодирование факторов используется для перевода натуральных факторов в безразмерные величины, чтобы построить стандартную план — матрицу эксперимента.
Для перевода заполняется таблица кодирования факторов на двух уровнях. В качестве 0-го уровня обычно выбирается центр интервала, в котором предполагается вести эксперимент.
Связь между кодовым и натуральным значениями фактора:
(16)
где Xi — натуральное значение фактора;
Xi0 -значение этого фактора на нулевом уровне;
I — интервал варьирования факторов.
Составим таблицу кодирования факторов, используя исходные данные.
Таблица 1 — Таблица кодирования факторов
2.3 Составление план — матрицы
В план — матрице должны быть указаны все возможные комбинации уровней факторов.
Таблица 2 — Расширенная план — матрица ортогонального плана
2.4 Проверка воспроизводимости опытов
При одинаковом числе параллельных этапов воспроизводимость опытов определяется по критерию Кохрена.
Для этого сначала считаются дисперсии, характеризующие рассевание результатов на каждом u-м опыте.
Проверка воспроизводимости опытов показана на рисунке 2.
Рисунок 2- Воспроизводимость опытов
2.5 Расчет коэффициентов регрессии
Поскольку план ортогонален, то коэффициенты регрессии будут определяться независимо друг от друга по формулам:
Значения при ядре плана :
Матрица дисперсий (ковариаций) коэффициентов регрессии рассчитывается по формуле (10).
2.6 Определение значимости коэффициентов
Значимость коэффициентов регрессии проверяют по критерию Стьюдента:
(17)
Дисперсия коэффициентов определяется по формуле
2.7 Проверка адекватности модели
Адекватность модели проверяется с помощью критерия Фишера:
(17)
(18)
где Sад2 — дисперсия адекватности, рассчитываемая по формуле (18);
Sy2 — дисперсия опыта;
=0.05;
fад=N-l, число свободы дисперсии адекватности;
fy=N (m-1), число свободы дисперсии опыта;
l — количество значимых коэффициентов.
Если неравенство (17) выполняется, значит модель адекватна.
3. Выбор и описание метода условной оптимизации
3.1 Выбор метода условной оптимизации
При решении поставленной задачи оптимизации был использован метод Фиако-МакКормика, который относится к непрямым методам решения задач нелинейного программирования. Непрямые методы преобразуют задачи с ограничениями в последовательность задач безусловной оптимизации путем введения в целевую функцию штрафных функций.
3.2 Описание метода условной оптимизации (Фиако-МакКормика)
Алгоритм метода Фиако-Маккормика
Задание, .
Нахождение методом прямого поиска минимума вспомогательной функции, т. е. .
Проверка условий окончания поиска. Если условие выполняется по переход на этап 6, иначе переход на этап 4.
Уменьшение значения, , .
Увеличение. Переход на этап 2.
Оптимальное решение, .
4. Описание программы
4.1 Общие сведения
Обозначение программы — vpRgr.exe.
Наименование программы — «Расчетно — графическая работа № 1 по дисциплине «ВПиМСвАС».
Программное обеспечение, необходимое для функционирования программы — Windows 95/98/NT/2000/ME.
Для написания программы была использована интегрированная среда разработки приложений (IDE-Integrated Development Environment) — Delphi 6.0.
4.2 Функциональное назначение
1 Назначение программы: определение оптимального состава алюминиевых деформируемых сплавов из условия получения максимального предела прочности при испытаниях на растяжения
2 Классы решаемых задач: анализ и статистическая обработка полнофакторного эксперимента с ортогональными планами второго порядка, в которую входят нахождение коэффициентов регрессии, оценка из значимости, проверка адекватности и воспроизводимости модели; поиск сочетаний факторов в кодовых и натуральных переменных; построения графиков отклика от изменения каждого параметра; построения кривых равного выхода при фиксировании одного из параметров.
3 Сведения о функциональных ограничениях на ее применение: данная программа корректно функционирует при количестве параметров равном 3. При небольшой модификации программы (замены названий факторов на новые) можно решать общую задачу анализа и статистической обработки полнофакторного эксперимента с ортогональными планами второго порядка.
4.3 Описание логической структуры программы
При программировании с использованием средств визуального программирования (Delphi, Visual Basic и др.), приложение становится событийно — управляемым, поэтому невозможно построить алгоритм программы, как это имело место при традиционном программировании на Pascal, C++. В связи с этим наиболее полное представление о программе дает ее укрупненная структурная схема с описанием функций составных частей и связи между ними.
Для того, чтобы разделить фазы «конструирования пользовательского интерфейса» и «непосредственного программирования математической модели», была использована блочно — модульная структура. При этом каждый структурный элемент выносился в отдельный модуль, поддерживающий интерфейс с пользователем и между собой.
Рисунок 1.-логическая связь процедур модуля
Описание структурных элементов программы
type mas=array[1.3] of real;
var x: array[0.9,1.15] of real; //переменные
x2:array[1.3,1.15] of real;//квадраты переменных
x0,ix, //нулевые уровни и интервалы варьирования
xc, //значения координат центра
la, //канонические козффициенты
m, l, n, ml, nl, //направляющие косинусы углов поворота осей и их частные
xp1,xp2,xp3,xh,
xlocmax, xlocmin: mas; //координаты локальных максимума и минимума
y, ys: array[1.2,1.20] of real; //значения функции отклика
x12,x23,x13, //попарные произведения переменных
yc, ycs, //усредненная функция отклика
s2u:array[1.15] of real; //дисперсии эксперементив
b, //коэффициенты модели
s2b, //дисперсии коэффициентов
db:array[0.9] of real; //пределы значимости коэффициентов
kk: d, xc2,
S2UMax, //максимальное значение дисперсии эксперемента
s2y, //дисперсия опыта
ycen, //функция отклика в центре
ylocmax, ylocmin: real;
4.4 Используемые технические средства
Для оптимальной работы программы необходима следующая конфигурация компьютера:
процессор Intel Pentium III|| 500;
ОЗУ 64 Мб;
SVGA монитор (разрешение 800×600);
свободное место на жестком диске не менее 2 Mb;
4.5 Вызов и загрузка
Для инсталляции программы необходимо выполнить следующие шаги:
убедиться в том, что компьютер, на который устанавливается система, отвечает всем требованиям, изложенным в разделе «Минимальные системные требования»;
убедиться в исправности накопителей на гибких магнитных носителях;
перекопировать программу на жесткий диск компьютера;
запустить файл Rgr.exe.
4.6 Входные данные
Входными данными к программе являются:
1) таблица кодирования (таблица 1);
2) результаты экспериментов.
Входные данные заданы в программе.
4.7 Выходные данные
Выходными данными являются:
1) дисперсии опытов;
2) коэффициенты линии регресии;
3) расчетные значения выходов;
4) заключения о воспроизводимости опытов, значимости коэффициентов модели, адекватности модели;
5) графики отклика при двух постоянных значениях факторов;
6) кривые равного выхода при одном постоянном факторе;
7) наилучшие и наихудшие сочетания факторов.
5. Результаты обработки данных эксперимента
В результате работы программы были получены следующие результаты:
Расширенная план-матрица эксперимента Нахождение коэффициентов, проверка их значимости и анализ полученной модели показано на рисунке 3.
Рисунок 3 — Результат работа программы
6. графики зависимости отклика
Графики зависимости отклика от каждого из параметров представлены на рисунка 4−6.
Рисунок 4 — зависимость отклика от изменения параметра x1. Зависимость отклика от X1
- y= 30,60 + 0,00*x1 + 2,97*x12×2=0×3=0
- y= 25,60 + 3,87*x1 + 2,97*x12×2=1×3=0
- y= 22,73 + 1,02*x1 + 2,97*x12×2=1×3=1
Рисунок 5 — зависимость отклика от изменения параметра x2. Зависимость отклика от X2
- y= 30,60 + -1,94*x2 + -3,05*x22 x1=0×3=0
- y= 33,57 + 1,92*x2 + -3,05*x22×1=1×3=0
- y= 34,35 + -4,57*x2 + -3,05*x22×1=1×3=1
Рисунок 6 — зависимость отклика от изменения параметра x3. Зависимость отклика от X3
y= 30,60 + 3,63*x3 + 0,00*x32×1=0×2=0
y= 33,57 + 0,78*x3 + 0,00*x32×1=1×2=0
y= 32,44 + -5,71*x3 + 0,00*x32×1=1×2=1
7. кривые равного выхода
Графики зависимости отклика от каждого из параметров представлены на рисунках 7−9
Рисунок 7 — Линии уровня отклика при фиксированном x3
Рисунок 8 — Линии уровня отклика при фиксированном x2
Рисунок 9 — Линии уровня отклика при фиксированном x1
Заключение
В ходе выполнения данной расчетно-графической работы был определен оптимальный предел прочности алюминиевых деформируемых сплавов, определяющийся при испытании на растяжение.
Оптимальный параметры прочности:
Содержание Li (%) = 0.6
Температура старения (град.С)=25
Время старения (час.)=2
Содержание Li (%) = 0.6
Температура старения (град.С)=25
Время старения (час.)=2
Содержание Li (%) = 1.5
Температура старения (град.С)=200
Время старения (час.)=6
список использованных источников
1) Конспект лекций по дисциплине «ВП и МСАС».
2) Конспект лекций по дисциплине «ТА и МОПЗ».
3) Конспект лекций по дисциплине «Методы синтеза и оптимизации».
4) Методические указания к лабораторным и расчетно-графической работе по дисциплине «Вероятностные процессы и математическая статистика в автоматизированных системах» / Сост.:Г. Б. Билык, О. В. Веремей, В. И. Кравченко. — ДГМА, 2006. — 24 с. (файл VPLAB).
5) Применение математических методов и ЭВМ. Планирование и обработка результатов эксперимента / Под ред. А. Н. Останина. — Мн.: Выш. шк., 2005. — 218 с.
приложение
Листинг модуля Metod. pas — подпрограммы общего назначения
type mas=array[1.3] of real;
var x: array[0.9,1.15] of real;
x2:array[1.3,1.15] of real;
x0,ix, xc, la, m, l, n, ml, nl,
xp1,xp2,xp3,xh, xlocmax, xlocmin: mas;
y, ys: array[1.2,1.20] of real;
x12,x23,x13,yc, ycs, s2u: array[1.15] of real;
b, s2b, db: array[0.9] of real;
kk:integer;
d, xc2, S2UMax, s2y, ycen, ylocmax, ylocmin: real;
{$R *.dfm}
function sx (l:integer):real;
var s: real; i: integer;
begin s:=0;
for i:=1 to 15 do
s:=s+sqr (x[l, i]);
sx:=s;
end;
function sxy (l:integer):real;
var s: real; i: integer;
begin s:=0;
for i:=1 to 15 do
s:=s+x[l, i]*yc[i];
sxy:=s;
end;
function f (l:integer):real;
var xx1, xx2,xx3:real;
begin
xx1:=x[1,l]; xx2:=x[2,l]; xx3:=x[3,l];
f:=b[0]+b[1]*xx1+b[2]*xx2+b[3]*xx3
+b[4]*xx1*xx2+b[5]*xx1*xx3+b[6]*xx2*xx3+
b[7]*xx1*xx1+b[8]*xx2*xx2+b[9]*xx2*xx2;
end;
function fy (xx1,xx2,xx3:real):real;
begin
fy:=b[0]+b[1]*xx1+b[2]*xx2+b[3]*xx3
+b[4]*xx1*xx2+b[5]*xx1*xx3+b[6]*xx2*xx3+
b[7]*xx1*xx1+b[8]*xx2*xx2+b[9]*xx2*xx2;
end;
function dlambda (lam:real):real;
begin dlambda:=(b[7]-lam)*((b[8]-lam)*(b[9]-lam)-0.25*b[6]*b[6]);
0.5*b[4]*(0.5*b[4]*(b[9]-lam)-0.25*b[5]*b[6])+
0.5*b[5]*(0.25*b[4]*b[6]-0.5*b[5]*(b[8]-lam))
end;
function findl (xa, xb: real):real;
var c: real;
begin
repeat
c:=(xa+xb)/2;
if dlambda (xa)*dlambda (c)<0 then xb:=c
else xa:=c;
until abs (dlambda (xa)-dlambda (xb))<=0.001;
findl:=(xa+xb)/2;
end;
procedure maximminim;
var yt: array[1.2,1.2,1.2] of real; i, j, w:integer;
minim, maxim: real;
begin minim:=fy (1,1,1);
maxim:=fy (1,1,1);
for i:=-10 to 10 do
for j:=-10 to 10 do
for w:=-10 to 10 do
begin if fy (i/10,j/10,w/10)>=maxim then begin
maxim:=fy (i/10,j/10,w/10); xlocmax[1]: =i/10;
xlocmax[2]:=j/10; xlocmax[3]: =w/10; end;
if fy (i/10,j/10,w/10)<=minim then begin
minim:=fy (i/10,j/10,w/10);xlocmin[1]: =i/10;
xlocmin[2]:=j/10; xlocmin[3]: =w/10; end;
end;
ylocmin:=minim;
ylocmax:=maxim;
end;
procedure minmax;
type arr=array [1.3,1.3] of real;
var d, d1, d2,d3:arr; i: integer; bd: mas;
function delta (a:arr):real;
begin delta:=a[1,1]*(a[2,2]*a[3,3]-a[2,3]*a[3,2]);
a[1,2]*(a[2,1]*a[3,3]-a[2,3]*a[3,1])+
a[1,3]*(a[2,1]*a[3,2]-a[2,2]*a[3,1]); end;
begin d[1,1]: =2*b[7]; d[1,2]: =b[4]; d[1,3]: =b[5];
d[2,1]:=b[4]; d[2,2]: =2*b[8]; d[2,3]: =b[6];
d[3,1]:=b[5]; d[3,2]: =b[6]; d[3,3]: =2*b[9];
bd[1]:=-b[1]; bd[2]: =-b[2]; bd[3]: =-b[3];
for i:=1 to 3 do
begin d1[i, 2]: =d[i, 2]; d1[i, 3]: =d[i, 3];
d2[i, 1]:=d[i, 1]; d2[i, 3]: =d[i, 3];
d3[i, 2]:=d[i, 2]; d3[i, 1]: =d[i, 1];
d1[i, 1]:=bd[i];d2[i, 2]:=bd[i];d3[i, 3]:=bd[i]; end;
xc[1]: =delta (d1)/delta (d);
xc[2]:=delta (d2)/delta (d);
xc[3]:=delta (d3)/delta (d);
ycen:=fy (xc[1], xc[2], xc[3]);
la[1]:=findl (-6,-2);
la[2]:=findl (-2,2);
la[3]:=findl (2,6);
for i:=1 to 3 do begin
ml[i]: =(b[6]*(b[7]-la[i])-0.5*b[4]*b[5])/(b[5]*(b[8]-la[i])-0.5*b[4]*b[6]);
nl[i]:=(-2*(b[7]-la[i])*(b[8]-la[i])+0.5*b[4]*b[4])/(b[5]*(b[8]-la[i])-0.5*b[4]*b[6]);
l[i]:=1/sqrt (1+sqr (ml[i])+sqr (nl[i]));
m[i]:=ml[i]*l[i];
n[i]:=nl[i]*l[i];
maximminim; end; end;
procedure TForm1. FormCreate (Sender: TObject);
var i, j: integer;
begin
x0[1]: =1; x0[2]: =175; x0[3]: =4;
ix[1]:=0.5; ix[2]: =25; ix[3]: =2;
y[1,1]:=24.99; y[1,2]: =22.61;y[1,3]:=26.99; y[1,4]: =39.61;
y[1,5]:=49.8; y[1,6]: =37.8; y[1,7]: =26.61; y[1,8]: =28.99;
y[1,9]:=35.8; y[1,10]: =37.61;y[1,11]:=27.99;y[1,12]:=24.18;
y[1,13]:=26.8; y[1,14]: =34.99;y[1,15]:=32.8;
y[2,1]:=25.51;y[2,2]:=23.89; y[2,3]: =26.89; y[2,4]: =39.51;
y[2,5]:=53.7; y[2,6]: =37.51; y[2,7]: =26.7; y[2,8]: =28.7;
y[2,9]:=38.89;y[2,10]:=37.32;y[2,11]:=33.51;y[2,12]:=28.7;
y[2,13]:=30.7; y[2,14]: =38.7;y[2,15]:=31.51;
xc2:=sqrt (8/15); d:=sqrt ((15*xc2−8)/2);
ys:=y;
sgcod.Cells[0,1]: ='Ioeaaie o? iaaiu';
sgcod.Cells[0,2]: ='Eioa?aae aa? ue?iaaiey';
sgcod.Cells[0,3]: ='Ie?iee o? iaaiu';
sgcod.Cells[0,4]: ='Aa?oiee o? iaaiu';
sgcod.Cells[0,5]: ='Eiaiaia iaicia? aiea';
sgcod.Cells[1,0]: ='Niaa??. Li,% ';
sgcod.Cells[2,0]: ='T noa?., a?.N ';
sgcod.Cells[3,0]: =' t noa?., ?. ';
for i:=1 to 3 do
begin sgcod. Cells[i, 1]: =' '+floattostr (x0[i]);
sgcod.Cells[i, 2]: =' '+floattostr (ix[i]);
sgcod.Cells[i, 3]: =' '+floattostr (x0[i]-ix[i]);
sgcod.Cells[i, 4]: =' '+floattostr (x0[i]+ix[i]);
end;
sgcod.Cells[1,5]: =' x1';
sgcod.Cells[2,5]: =' x2';
sgcod.Cells[3,5]: =' x3';
sgplan.Cells[1,0]: =' x0'; sgplan. Cells[2,0]: =' x1';
sgplan.Cells[3,0]: =' x2'; sgplan. Cells[4,0]: =' x3';
sgplan.Cells[5,0]: ='x12-'+floattostrf (xc2,fffixed, 3,2);
sgplan.Cells[6,0]:='x22-'+floattostrf (xc2,fffixed, 3,2);
sgplan.Cells[7,0]:='x32-'+floattostrf (xc2,fffixed, 3,2);
sgplan.Cells[8,0]:='x1x2'; sgplan. Cells[9,0]: ='x1x3';
sgplan.Cells[10,0]:='x2x3'; sgplan. Cells[11,0]: =' y1';
sgplan.Cells[12,0]: =' y2'; sgplan. Cells[13,0]: =' yc';
for i:=1 to 15 do begin
if i<=8 then begin
if i mod 2 = 0 then x[1,i]: =1 else x[1,i]: =-1;
if ((i+1) div 2) mod 2 = 0 then x[2,i]: =1 else x[2,i]: =-1;
if ((i+3) div 4) mod 2 = 0 then x[3,i]: =1 else x[3,i]: =-1;
end
else begin
for j:=1 to 3 do
if i=7+2*j then x[j, i]: =-d
else if i=8+2*j then x[j, i]: =d
else x[j, i]: =0;
end;
x12[i]:=x[1,i]*x[2,i];
x23[i]:=x[2,i]*x[3,i];
x13[i]:=x[1,i]*x[3,i];
x[4,i]:=x12[i]; x[5,i]: =x13[i];
x[6,i]:=x23[i];
x[0,i]:=1;
for j:=1 to 3 do
x2[j, i]: =sqr (x[j, i])-xc2;
x[7,i]:=x2[1,i];
x[8,i]:=x2[2,i];
x[9,i]:=x2[3,i];
end;
for i:=1 to 15 do
begin sgplan. Cells[0,i]: =inttostr (i);
sgplan.Cells[1,i]:=' 1';
for j:=1 to 3 do begin
sgplan.Cells[j+1,i]: =' '+floattostr (x[j, i]);
sgplan.Cells[j+4,i]: =' '+floattostrf (x2[j, i], fffixed, 5,3); end;
sgplan.Cells[8,i]: =' '+floattostr (x12[i]);
sgplan.Cells[9,i]: =' '+floattostr (x13[i]);
sgplan.Cells[10,i]: =' '+floattostr (x23[i]);
end;
xh[1]: =-1; xh[2]: =-1; xh[3]: =-1;
kk:=0;
end;
procedure TForm1. Button2Click (Sender: TObject);
var i: integer;
begin
kk:=kk+1;
for i:=1 to 15 do
sgplan.Cells[10+kk, i]: =floattostr (ys[kk, i]);
if kk>=2 then begin button2. Enabled:=false;
for i:=1 to 15 do begin
yc[i]: =(y[1,i]+y[2,i])/2;
ycs[i]:=(y[1,i]+y[2,i])/2;
sgplan.Cells[13,i]:=floattostr (ycs[i]);
end;
end;
end;
procedure TForm1. Button1Click (Sender: TObject);
var k1, k2:integer; yk: real;
begin
randomize;
k1:=random (14)+1;
k2:=random (14)+1;
sgplan.Rows[16]: =sgplan.Rows[k1];
sgplan.Rows[k1]:=sgplan.Rows[k2];
sgplan.Rows[k2]:=sgplan.Rows[16];
yk:=ys[1,k1];
ys[1,k1]:=ys[1,k2];
ys[1,k2]:=yk;
yk:=ys[2,k1];
ys[2,k1]:=ys[2,k2];
ys[2,k2]:=yk;
end;
procedure TForm1. PageControl1Change (Sender: TObject);
var u, i, j, li: integer; sums, g, s2ad, fp, xx: real;
begin
if button2. Enabled=false then begin
sgvos.Cells[0,0]: =' u';
sgvos.Cells[1,0]: =' S2u';
sums:=0;
for u:=1 to 15 do
begin s2u[u]: =sqr (yc[u]-y[1,u])+sqr (yc[u]-y[2,u]);
sgvos.Cells[1,u]:=floattostrf (s2u[u], fffixed, 5,3);
sgvos.Cells[0,u]:=inttostr (u);
sums:=sums+s2u[u];
end;
s2umax:=s2u[1];
for i:=1 to 15 do
if s2u[i]>s2umax then s2umax:=s2u[i];
label5.Caption:=floattostrf (s2umax, fffixed, 7,3);
g:=s2umax/sums;
label7.Caption:=floattostrf (g, fffixed, 7,3);
label9.Caption:=floattostrf (0.47,fffixed, 7,3);
if g<=0.47 then begin
label10.Caption:=' Iiuou'+#13+'aini?iecaiaeiu';
s2y:=0;
for i:=1 to 15 do
s2y:=s2y+s2u[i]/15;
if b[0]=0 then begin
for i:=0 to 9 do
b[i]: =sxy (i)/sx (i);
sgb.Cells[i, 1]:=floattostrf (b[i], fffixed, 5,3);
for j:=1 to 3 do
b[0]: =b[0]-b[6+j]*xc2;
sgb.Cells[0,1]:=floattostrf (b[0], fffixed, 5,3);
sgb.Cells[0,0]:='b0'; sgb. Cells[1,0]: ='b1';
sgb.Cells[2,0]:='b2'; sgb. Cells[3,0]: ='b3';
sgb.Cells[4,0]:='b12'; sgb. Cells[5,0]: ='b13';
sgb.Cells[6,0]:='b23'; sgb. Cells[7,0]: ='b11';
sgb.Cells[8,0]:='b22'; sgb. Cells[9,0]: ='b33';
for i:=0 to 9 do
begin s2b[i]: =s2y/(2*sx (i));
db[i]:=1.76*s2b[i];
sgsb.Cells[i+1,1]:=floattostrf (s2b[i], fffixed, 7,3);
sgsb.Cells[i+1,2]:=floattostrf (db[i], fffixed, 7,3);
end;
sgsb.Cells[1,0]:='b0'; sgsb. Cells[2,0]: ='b1';
sgsb.Cells[3,0]:='b2'; sgsb. Cells[4,0]: ='b3';
sgsb.Cells[5,0]:='b12'; sgsb. Cells[6,0]: ='b13';
sgsb.Cells[7,0]:='b23'; sgsb. Cells[8,0]: ='b11';
sgsb.Cells[9,0]:='b22'; sgsb. Cells[10,0]: ='b33';
sgsb.Cells[0,1]:='S2bi'; sgsb. Cells[0,2]: ='|bi|';
label16.Caption:=floattostrf (s2y, fffixed, 7,3);
label18.Caption:=floattostrf (1.76,fffixed, 7,3);
label21.Caption:='Iacia?eiua eiyooeoeaiou:';
li:=0;
for i:=0 to 9 do
if abs (b[i])<=db[i] then begin
li:=li+1;
label21.Caption:=label21.Caption+' b['+
inttostr (i)+']='+floattostrf (b[i], fffixed, 7,4);
b[i]: =0;
end;
s2ad:=0;
for i:=1 to 15 do
s2ad:=s2ad+sqr (yc[i]-f (i))+2/(li*15);
fp:=s2ad/s2y;
label12.Caption:=floattostrf (s2y, fffixed, 7,3);
label20.Caption:=floattostrf (s2ad, fffixed, 7,3);
label25.Caption:=floattostrf (2.96,fffixed, 7,3);
label26.Caption:=floattostrf (fp, fffixed, 7,3);
if fp<=2.96 then
label27.Caption:=' Iiaaeu aaaeaaoia'
else
label27.Caption:=' Iiaaeu ia aaaeaaoia';
minmax;
memo2.lines.add ('Eii?aeieou oaio? a iiaa? oiinoe');
memo2.lines.add (' xc1='+floattostrf (xc[1], fffixed, 5,3)+
' xc2='+floattostrf (xc[2], fffixed, 5,3)+
' xc3='+floattostrf (xc[3], fffixed, 5,3)+
' yc='+floattostrf (ycen, fffixed, 5,3));
if ((la[1]<0) and (la[2]<0) and (la[3]<0)) or
((la[1]>0) and (la[2]>0) and (la[3]>0))
then memo2.lines.add (' Iiaa? oiinou, eia? uay yeno? aioi')
else memo2.lines.add (' Iiaa? oiinou oeia ieieiaena');
memo2.lines.add (' Eieaeuiue yeno? aioi');
memo2.lines.add (' xmax1='+floattostrf (xlocmax[1], fffixed, 5,1)+
' xmax2='+floattostrf (xlocmax[2], fffixed, 5,1)+
' xmax3='+floattostrf (xlocmax[3], fffixed, 5,1)+
' Ymax='+floattostrf (ylocmax, fffixed, 5,4));
memo2.lines.add (' xmin1='+floattostrf (xlocmin[1], fffixed, 5,1)+
' xmin2='+floattostrf (xlocmin[2], fffixed, 5,1)+
' xmin3='+floattostrf (xlocmin[3], fffixed, 5,1)+
' Ymin='+floattostrf (ylocmin, fffixed, 5,4));
end; end
else label10. Caption:=' Iiuou ia'+#13+'aini?iecaiaeiu';
for i:=0 to 9 do
sgb.Cells[i, 1]: =floattostrf (b[i], fffixed, 5,3);
end; end;
procedure TForm1. RadioGroup1Click (Sender: TObject);
var xxx: real;
begin series1. Clear; series2. Clear; series3. Clear;
case radiogroup1. ItemIndex of
0: begin groupbox7. Visible:=true;
label28.Caption:='x2='; label29. Caption:='x3=';
label30.Caption:='x2='; label31. Caption:='x3=';
label32.Caption:='x2='; label33. Caption:='x3=';
label34.Caption:='x1=';
xp2[1]: =strtofloat (edit1.text); xp3[1]: =strtofloat (edit2.text);
xp2[2]:=strtofloat (edit3.text); xp3[2]: =strtofloat (edit4.text);
xp2[3]:=strtofloat (edit5.text); xp3[3]: =strtofloat (edit6.text);
xxx:=-1;
while xxx<=1 do
begin series1. AddXY (xxx, fy (xxx, xp2[1], xp3[1]));
series2.AddXY (xxx, fy (xxx, xp2[2], xp3[2]));
series3.AddXY (xxx, fy (xxx, xp2[3], xp3[3]));
xxx:=xxx+0.01; end;
memo3.Clear;
memo3.Lines.Add ('Eeiee ?aa?annee:');
memo3.Lines.Add ('y= '+floattostrf (fy (0,xp2[1], xp3[1]), fffixed, 4,2)+
' + '+floattostrf (b[1]+b[4]*xp2[1]+b[5]*xp3[1], fffixed, 4,2)+
'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');
memo3.Lines.Add ('y= '+floattostrf (fy (0,xp2[2], xp3[2]), fffixed, 4,2)+
' + '+floattostrf (b[1]+b[4]*xp2[2]+b[5]*xp3[2], fffixed, 4,2)+
'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');
memo3.Lines.Add ('y= '+floattostrf (fy (0,xp2[3], xp3[3]), fffixed, 4,2)+
' + '+floattostrf (b[1]+b[4]*xp2[3]+b[5]*xp3[3], fffixed, 4,2)+
'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');
end;
1: begin groupbox7. Visible:=true;
label28.Caption:='x1='; label29. Caption:='x3=';
label30.Caption:='x1='; label31. Caption:='x3=';
label32.Caption:='x1='; label33. Caption:='x3=';
label34.Caption:='x2=';
xp1[1]: =strtofloat (edit1.text); xp3[1]: =strtofloat (edit2.text);
xp1[2]:=strtofloat (edit3.text); xp3[2]: =strtofloat (edit4.text);
xp1[3]:=strtofloat (edit5.text); xp3[3]: =strtofloat (edit6.text);
xxx:=-1;
while xxx<=1 do
begin series1. AddXY (xxx, fy (xp1[1], xxx, xp3[1]));
series2.AddXY (xxx, fy (xp1[2], xxx, xp3[2]));
series3.AddXY (xxx, fy (xp1[3], xxx, xp3[3]));
xxx:=xxx+0.01;
end;
memo3.Clear;
memo3.Lines.Add ('Eeiee ?aa?annee:');
memo3.Lines.Add ('y= '+floattostrf (fy (xp1[1], 0, xp3[1]), fffixed, 4,2)+
' + '+floattostrf (b[2]+b[4]*xp1[1]+b[6]*xp3[1], fffixed, 4,2)+
'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');
memo3.Lines.Add ('y= '+floattostrf (fy (xp1[2], 0, xp3[2]), fffixed, 4,2)+
' + '+floattostrf (b[2]+b[4]*xp1[2]+b[6]*xp3[2], fffixed, 4,2)+
'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');
memo3.Lines.Add ('y= '+floattostrf (fy (xp1[3], 0, xp3[3]), fffixed, 4,2)+
' + '+floattostrf (b[2]+b[4]*xp1[3]+b[6]*xp3[3], fffixed, 4,2)+
'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');
end;
2: begin groupbox7. Visible:=true;
label28.Caption:='x1='; label29. Caption:='x2=';
label30.Caption:='x1='; label31. Caption:='x2=';
label32.Caption:='x1='; label33. Caption:='x2=';
label34.Caption:='x3=';
xp1[1]: =strtofloat (edit1.text); xp2[1]: =strtofloat (edit2.text);
xp1[2]:=strtofloat (edit3.text); xp2[2]: =strtofloat (edit4.text);
xp1[3]:=strtofloat (edit5.text); xp2[3]: =strtofloat (edit6.text);
xxx:=-1;
while xxx<=1 do
begin series1. AddXY (xxx, fy (xp1[1], xp2[1], xxx));
series2.AddXY (xxx, fy (xp1[2], xp2[2], xxx));
series3.AddXY (xxx, fy (xp1[3], xp2[3], xxx));
xxx:=xxx+0.01; end;
memo3.Clear;
memo3.Lines.Add ('Eeiee ?aa?annee:');
memo3.Lines.Add ('y= '+floattostrf (fy (xp1[1], xp2[1], 0), fffixed, 4,2)+
'+'+floattostrf (b[3]+b[5]*xp1[1]+b[6]*xp2[1], fffixed, 4,2)+
x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32');
memo3.Lines.Add ('y= '+floattostrf (fy (xp1[2], xp2[2], 0), fffixed, 4,2)+
+ '+floattostrf (b[3]+b[5]*xp1[2]+b[6]*xp2[2], fffixed, 4,2)+
x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32');
memo3.Lines.Add ('y= '+floattostrf (fy (xp1[3], xp2[3], 0), fffixed, 4,2)+
' + '+floattostrf (b[3]+b[5]*xp1[3]+b[6]*xp2[3], fffixed, 4,2)+
'*x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32'); end;
else groupbox7. Visible:=false;
end;
end;
procedure TForm1. RadioGroup2Click (Sender: TObject);
var px, yy, ymax, ymin: real;
xxx, xmax, xmin: mas;
begin series4. Clear; series5. Clear; series6. Clear;
px:=strtofloat (edit13.Text);
case radiogroup2. ItemIndex of
0:begin yy:=10; ymax:=0; ymin:=48;
label40.Caption:='x3=';
label41.Caption:='x1min='; label42. Caption:='x2min=';
label44.Caption:='x1max='; label45. Caption:='x2max=';
while yy<=48 do
begin xxx[1]: =-1;
while xxx[1]<=1 do
begin xxx[2]: =-1;
while xxx[2]<=1 do
begin if abs (fy (xxx[1], xxx[2], px)-yy)<=0.02
then series4. AddXY (xxx[1], xxx[2]);
if fy (xxx[1], xxx[2], px)<=ymin then
begin xmin[1]: =xxx[1]; xmin[2]: =xxx[2];
ymin:=fy (xxx[1], xxx[2], px);end;
if fy (xxx[1], xxx[2], px)>=ymax then
begin xmax[1]: =xxx[1]; xmax[2]: =xxx[2];
ymax:=fy (xxx[1], xxx[2], px);end;
xxx[2]:=xxx[2]+0.005; end;
xxx[1]: =xxx[1]+0.005; end;
yy:=yy+1.5; end;
series5.AddXY (xmax[1], xmax[2]); series6. AddXY (xmin[1], xmin[2]);
edit14.Text:=floattostrf (xmin[1], fffixed, 5,2);
edit15.Text:=floattostrf (xmin[2], fffixed, 5,2);
edit16.Text:=floattostrf (ymin, fffixed, 5,2);
edit17.Text:=floattostrf (xmax[1], fffixed, 5,2);
edit18.Text:=floattostrf (xmax[2], fffixed, 5,2);
edit19.Text:=floattostrf (ymax, fffixed, 5,2); end;
1: begin yy:=10; ymax:=0; ymin:=48;
label40.Caption:='x2=';
label41.Caption:='x1min='; label42. Caption:='x3min=';
label44.Caption:='x1max='; label45. Caption:='x3max=';
while yy<=48 do
begin xxx[1]: =-1;
while xxx[1]<=1 do
begin xxx[3]: =-1;
while xxx[3]<=1 do
begin if abs (fy (xxx[1], px, xxx[3])-yy)<=0.02
then series4. AddXY (xxx[1], xxx[3]);
if fy (xxx[1], px, xxx[3])<=ymin then
begin xmin[1]: =xxx[1]; xmin[3]: =xxx[3];
ymin:=fy (xxx[1], px, xxx[3]);end;
if fy (xxx[1], px, xxx[3])>=ymax then
begin xmax[1]: =xxx[1]; xmax[3]: =xxx[3];
ymax:=fy (xxx[1], px, xxx[3]);end;
xxx[3]:=xxx[3]+0.005; end;
xxx[1]: =xxx[1]+0.005; end;
yy:=yy+1.5; end;
series5.AddXY (xmax[1], xmax[3]); series6. AddXY (xmin[1], xmin[3]);
edit14.Text:=floattostrf (xmin[1], fffixed, 5,2);
edit15.Text:=floattostrf (xmin[3], fffixed, 5,2);
edit16.Text:=floattostrf (ymin, fffixed, 5,2);
edit17.Text:=floattostrf (xmax[1], fffixed, 5,2);
edit18.Text:=floattostrf (xmax[3], fffixed, 5,2);
edit19.Text:=floattostrf (ymax, fffixed, 5,2); end;
2: begin yy:=10;
ymax:=0; ymin:=48;
label40.Caption:='x1=';
label41.Caption:='x2min='; label42. Caption:='x3min=';
label44.Caption:='x2max='; label45. Caption:='x3max=';
while yy<=48 do
begin xxx[2]: =-1; while xxx[2]<=1 do begin xxx[3]: =-1;
while xxx[3]<=1 do begin if abs (fy (px, xxx[2], xxx[3])-yy)<=0.02
then series4. AddXY (xxx[2], xxx[3]);
if fy (px, xxx[2], xxx[3])<=ymin then
begin xmin[3]: =xxx[3];xmin[2]:=xxx[2];
ymin:=fy (px, xxx[2], xxx[3]);end;
if fy (px, xxx[2], xxx[3])>=ymax then
begin xmax[3]: =xxx[3]; xmax[2]: =xxx[2];
ymax:=fy (px, xxx[2], xxx[3]);end;
xxx[3]:=xxx[3]+0.005; end;
xxx[2]: =xxx[2]+0.005; end;
yy:=yy+1.5; end;
series5.AddXY (xmax[2], xmax[3]); series6. AddXY (xmin[2], xmin[3]);
edit14.Text:=floattostrf (xmin[2], fffixed, 5,2);
edit15.Text:=floattostrf (xmin[3], fffixed, 5,2);
edit16.Text:=floattostrf (ymin, fffixed, 5,2);
edit17.Text:=floattostrf (xmax[2], fffixed, 5,2);
edit18.Text:=floattostrf (xmax[3], fffixed, 5,2);
edit19.Text:=floattostrf (ymax, fffixed, 5,2);
end; end;end;
procedure TForm1. Button3Click (Sender: TObject);
var i: integer; max, min: mas;
maxy, miny: real;
begin series7. Clear;
for i:=1 to 3 do
xh[i]: =xh[i]+0.02;
max[1]:=series1.MaxYValue;max[2]:=series2.MaxYValue;
max[3]:=series3.MaxYValue; min[1]: =series1.MinYValue;
min[2]:=series2.MinYValue; min[3]: =series3.MinYValue;
maxy:=max[1]; miny:=min[1];
for i:=2 to 3 do begin
if max[i]>=maxy then maxy:=max[i];
if min[i]<=miny then miny:=min[i];
end;
case radiogroup1. ItemIndex of
0: begin
edit9.Text:=floattostr (xh[1]);
edit10.Text:=floattostr (fy (xh[1], strtofloat (edit1.Text), strtofloat (edit2.Text)));
edit11.Text:=floattostr (fy (xh[1], strtofloat (edit3.Text), strtofloat (edit4.Text)));
edit12.Text:=floattostr (fy (xh[1], strtofloat (edit5.Text), strtofloat (edit6.Text)));
series7.AddXY (xh[1], maxy); series7. AddXY (xh[1], miny); end;
1: begin
series7.AddXY (xh[2], maxy); series7. AddXY (xh[2], miny);
edit9.Text:=floattostr (xh[2]);
edit10.Text:=floattostr (fy (strtofloat (edit1.Text), xh[2], strtofloat (edit2.Text)));
edit11.Text:=floattostr (fy (strtofloat (edit3.Text), xh[2], strtofloat (edit4.Text)));
edit12.Text:=floattostr (fy (strtofloat (edit5.Text), xh[2], strtofloat (edit6.Text))) end;
2: begin series7. AddXY (xh[3], maxy); series7. AddXY (xh[3], miny);
edit9.Text:=floattostr (xh[3]);
edit10.Text:=floattostr (fy (strtofloat (edit1.Text), strtofloat (edit2.Text), xh[3]));
edit11.Text:=floattostr (fy (strtofloat (edit3.Text), strtofloat (edit4.Text), xh[3]));
edit12.Text:=floattostr (fy (strtofloat (edit5.Text), strtofloat (edit6.Text), xh[3]))
end; end;end;
procedure TForm1. Button4Click (Sender: TObject);
var i: integer; max, min: mas;
maxy, miny: real;
begin series7. Clear;
for i:=1 to 3 do
xh[i]: =xh[i]-0.02;
max[1]:=series1.MaxYValue; max[2]: =series2.MaxYValue;
max[3]:=series3.MaxYValue; min[1]: =series1.MinYValue;
min[2]:=series2.MinYValue; min[3]: =series3.MinYValue;
maxy:=max[1]; miny:=min[1];
for i:=2 to 3 do begin
if max[i]>=maxy then maxy:=max[i];
if min[i]<=miny then miny:=min[i]; end;
case radiogroup1. ItemIndex of
0: begin edit9. Text:=floattostr (xh[1]);
edit10.Text:=floattostr (fy (xh[1], strtofloat (edit1.Text), strtofloat (edit2.Text)));
edit11.Text:=floattostr (fy (xh[1], strtofloat (edit3.Text), strtofloat (edit4.Text)));
edit12.Text:=floattostr (fy (xh[1], strtofloat (edit5.Text), strtofloat (edit6.Text)));
series7.AddXY (xh[1], maxy); series7. AddXY (xh[1], miny); end;
1: begin series7. AddXY (xh[2], maxy); series7. AddXY (xh[2], miny);
edit9.Text:=floattostr (xh[2]);
edit10.Text:=floattostr (fy (strtofloat (edit1.Text), xh[2], strtofloat (edit2.Text)));
edit11.Text:=floattostr (fy (strtofloat (edit3.Text), xh[2], strtofloat (edit4.Text)));
edit12.Text:=floattostr (fy (strtofloat (edit5.Text), xh[2], strtofloat (edit6.Text))) end;
2: begin series7. AddXY (xh[3], maxy); series7. AddXY (xh[3], miny);
edit9.Text:=floattostr (xh[3]);
edit10.Text:=floattostr (fy (strtofloat (edit1.Text), strtofloat (edit2.Text), xh[3]));
edit11.Text:=floattostr (fy (strtofloat (edit3.Text), strtofloat (edit4.Text), xh[3]));
edit12.Text:=floattostr (fy (strtofloat (edit5.Text), strtofloat (edit6.Text), xh[3])) end; end;end;
end.