Программная реализация методов решения системы линейных уравнений

Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 25.04.2012
Размер файла 144,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • Раздел 1. Специальная часть
    • 1.1 Системы линейных алгебраических уравнений
    • 1.2 Решение линейных алгебраических систем
    • 1.3 Матричный метод решения систем линейных уравнений
    • 1.4 Решение задачи математическим методом
    • 1.5 Блок-схема алгоритма
    • 1.6 Характеристика ЭВМ, ОС и алгоритмического языка программирования
    • 1.7 Листинг программы
  • Раздел 2. Охрана труда
    • 2.1 Требования безопасности перед началом работы на персональном компьютере
    • 2.2 Требования безопасности во время работы на персональном компьютере
    • 2.3 Требования безопасности после окончания работы на персональном компьютере
  • Раздел 3. Экономическая часть
    • 3.1 Расчет трудоемкости разработки программы
    • 3.2 Расчет себестоимости программы
      • 3.2.1 Расчет расходных материалов
      • 3.2.2 Расчет заработной платы с начислениями
      • 3.2.3 Расчет расходов на электроэнергию
      • 3.2.4 Расчет цеховых, общехозяйственных и внепроизводственных расходов
      • 3.2.5 Расчет полной себестоимости программы, составление калькуляции и определение структуры затрат на разработку программного продукта
    • 3.3 Расчет отпускной цены
    • 3.4 Расчет показателей экономической эффективности программного продукта
  • Заключение
  • Иллюстрация работы программы
  • Список литературы

Введение

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

Дипломный проект состоит из трех частей:

1. Специальная часть;

2. Охрана труда;

3. Экономическая часть;

В специальной части изложены основные аспекты теории по теме линейная алгебра, блок-схема алгоритма программы, результаты ручного просчёта, листинг программы и результаты тестирования программы.

Во второй части изложены основные аспекты охраны труда при работе на персональном компьютере.

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

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

Любой численный метод линейной алгебры можно рассматривать как некоторую последовательность выполнения арифметических операций над элементами входных данных. Если при любых входных данных численный метод позволяет найти решение задачи за конечное число арифметических операций, то такой метод называется прямым. В противоположном случае численный метод называется итерационным. Прямые методы - это такие, как метод Гаусса, метод окаймления, метод пополнения, метод сопряжённых градиентов и др.

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

Итерационные методы - это метод простой итерации, метод вращений, метод переменных направлений, метод релаксации и др. Здесь будут рассматриваться матричный метод, метод Гаусса и метод Крамера. Способ итераций дает возможность получить последовательность приближенных значений, сходящихся к точному решению системы, подобно тому, как это делается для одного уравнения.

Условие итерационного процесса:

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

Раздел 1. Специальная часть

1.1 Системы линейных алгебраических уравнений

Многие задачи экономического характера сводятся к решению систем линейных уравнений. Систему [1] вида

принято называть системой n линейных алгебраических уравнений (СЛАУ) с n неизвестными. При этом произвольные числа aij (i = 1, 2,…, n; j = 1, 2,…, n) называются коэффициентами системы (коэффициентами при неизвестных), а числа bi (i = 1, 2,…, n) - свободными членами. Такая форма записи (1) алгебраической линейной системы называется нормальной. Решением СЛАУ (1) называется совокупность чисел xi (i = 1, 2,…, n), при подстановке которых в систему каждое из ее уравнений обращается в тождество.

Систему (1) можно записать в матричной форме

A X = B,

где A - матрица коэффициентов при неизвестных (матрица системы):

X - вектор-столбец неизвестных X = (x1, x2, …, xn)T:

B - вектор-столбец свободных членов:

или B = (b1, b2,..., bn)T. Целое число n называется размерностью системы.

Система (2) может быть записана в развернутом виде

Система уравнений (6) называется совместной, если она имеет хотя бы одно решение, и несовместной - в противном случае. Совместная система (6) называется определенной, если она имеет единственное решение, и неопределенной, если она имеет больше одного решения.

1.2 Решение линейных алгебраических систем

Вопросы исследования СЛАУ (6) на совместность оставим за пределами нашего рассмотрения. Все же методы решения линейных алгебраических систем принято делить на два класса: прямые и итерационные. Прямыми называются методы решения СЛАУ, которые приводят к решению за конечное число арифметических операций. В случае точной реализации операций решение будет точным, поэтому и прямые методы иногда называют точными. Итерационными методами называют такие методы, в которых точное решение может быть получено за счет реализации многократно повторяющихся действий (итераций). Эффективность способов решения системы (6) во многом определяется свойствами матрицы (3) A (размерностью, симметричностью, заполненностью и т.д.). MS Excel располагает рядом возможностей для работы с матрицами.

1.3 Матричный метод решения систем линейных уравнений.

Пусть дана система линейных уравнений:

Рассмотрим матрицу, составленную из коэффициентов при неизвестных:

Свободные члены и неизвестные можно записать в виде матрицы столбцов:

Тогда, используя правило умножение матриц, эту систему уравнений можно записать так:

или

A·x = b. (1)

Равенство (1) называется матричным уравнением или системой уравнений в матричном виде.

Матрица А коэффициентов при неизвестных называется главной матрицей системы.

Иногда рассматривают также расширенную матрицу системы, т. е. главную матрицу системы, дополненную столбцом свободных членов, которую записывают в следующем виде:

Любую линейную систему уравнений можно записать в матричном виде. Например, пусть дана система:

Эта система из двух уравнений с тремя неизвестными - x, y,. В высшей математике можно рассматривать системы из очень большого числа уравнений с большим количеством неизвестных и поэтому неизвестные принято обозначать только буквой х, но с индексами:

Запишем эту систему в матричном виде:

Здесь главная матрица системы:

Расширенная матрица будет иметь вид:

Решения матричных уравнений.

Матричные уравнения решаются при помощи обратных матриц. Уравнение решается следующим образом. Пусть матрица А - невырожденная (D ? 0), тогда существует обратная матрица А-1. Умножив на нее обе части матричного уравнения, имеем А-1(АХ) = А-1В. Используя сочетательный закон умножения, перепишем это равенство в виде

(А-1А) Х = А-1В.

Поскольку А-1 А = Е и ЕХ = Х, находим:

Х = А-1В.

Таким образом, чтобы решить матричное уравнение, нужно:

1. Найти обратную матрицу А-1.

2. Найти произведение обратной матрицы А-1 на матрицу столбец свободных членов В, т. е А-1В.

Пользуясь определением равных матриц, записать ответ.

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

К численным методам решения систем линейных уравнений относят такие как: метод Гаусса, метод Крамера, итеративные методы. В методе Гаусса, например, работают над расширенной матрицей системы. А в методе Крамера - с определителями системы, образованными по специальному правилу.

1.4 Решение задачи математическим методом

Метод Крамера.

При решении систем линейных уравнений по методу Крамера последовательно выполняется следующий алгоритм:

1. Записывают систему в матричном виде (если это еще не сделано).

2. Вычисляют главный определитель системы:

3. Вычисляют все дополнительные определители системы:

4. Если главный определитель системы не равен нулю, то выполняют пункт 5. Иначе рассматривают вопрос о разрешимости данной системы (имеет бесчисленное множество решений или не имеет решений). Находят значения всех неизвестных по формулам Крамера для решения системы n линейных уравнений с n неизвестными, которые имеют вид:

Пример 1

Решить по методу Крамера систему из трех уравнений с тремя неизвестными:

Решение

Запишем главный и побочные определители системы:

Вычислим эти определители:

Д = 3*4*(-4)+7*(-3)*5+(-2)*(-8)*5-5*4*5-3*(-3)*(-8)-7*(-2)*(-4) = 48-105+80-100-72-56 = 128-333 = -205.

Д1 = -112+(-45)+(-192)-(-240)-24-168 = -112-45-192+240-24-168 = 240-541 = -301.

Д2 = -36-420-280-75+196-288 = 196-1099 = -903.

Д3 = -144-147-30-140+27-168 = -629+27 = -602.

Главный определитель системы не равен нулю. Находим неизвестные по формулам Крамера.

Подставим найденные значения определителей в формулы Крамера:

x1 = Д1/Д = -301/(-205) = 1,468292682927 ? 1,47;

x2 = Д2/Д = -903/(-205) = 4,40487804878 ? 4,4;

x3 = Д3/Д = -602/(-205) = 2,936585365854 ? 2,93.

Вывод.

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

Напомним, что главным определителем системы называется определитель главной матрицы системы, составленной из коэффициентов при неизвестных:

Если в главном определителе системы заменить поочередно столбцы коэффициентов при x1, x2,...xn на столбец свободных членов, то получим n дополнительных определителей (для каждого из n неизвестных):

При этом важен вопрос о разрешимости данной системы, который решается сравнением главного и дополнительных определителей системы с нулем:

Метод Гаусса - прямой и обратный ход.

Рассмотрим метод Гаусса. Например, пусть дана расширенная матрица некоторой системы m линейных уравнений c n неизвестными:

Будем считать, что a11 ? 0 (если это не так, то достаточно переставить первую и некоторую другую строку расширенной матрицы местами). Проведем следующие элементарные преобразования:

C2-(a21/a11)*C1,

...

Cm-(am1/a11)*C1,

т.е. Ci-(ai1/a11)*C1, i = 2, 3, ..., m.

Т. е. от каждой строки расширенной матрицы (кроме первой) отнимаем первую строку, умноженную на частное от деления первого элемента этой строки на диагональный элемент а11.

В результате получим матрицу:

Т. е. первая строка осталась без изменений, а в столбце под а11 на всех местах оказались нули. Обратим внимание, что преобразования коснулись всех элементов строк, начиная со второй, всей расширенной матрицы системы.

Теперь наша задача состоит в том, чтобы получить нули подо всеми диагональными элементами матрицы А - aij, где I = j.

Повторим наши элементарные преобразования, но уже для элемента б22.

C1-(a12/б22)*C2,

...

Cm-(бm2/б22)*C2,

т.е. Ci-(бi2/б22)*C2, i = 3, ..., m.

Т. е. от каждой строки расширенной матрицы (теперь кроме первой и второй) отнимаем вторую строку, умноженную на частное от деления первого элемента этой (текущей) строки на диагональный элемент б22.

Такие преобразования продолжаются до тех пор, пока матрица не приведется к верхнее - треугольному виду. Т. е. под главной диагональю не окажутся все нули:

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

гmn*xn = дm.

Отсюда легко можно найти значение первого корня - xn = дm/гmn.

Подставив это значение в предыдущее m-1-е уравнение, легко получим значение xn-1-ого корня.

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

Пример 1

Рассмотрим систему уравнений:

Главный определитель данной системы:

Д = [1*(-4)*(-2)+2*2*1+(-1)*(-1)*(-1)]-[1*(-4)*(-1)+2*(-1)*(-2)+2*(-1)*1] = [8+4-1]-[4+4-2] = 11-6 =5,

т. е. Д ? 0.

Т. е. система определена и разрешима. Решим ее по методу Гаусса.

Проведем прямой ход метода Гаусса, выписав предварительно расширенную матрицу системы:

Получим нули под главной диагональю в первом столбце расширенной матрицы. Для получения нуля в элементе a21 (т. е. под диагональю во второй строке матрицы) вторую строку матрицы преобразуем по формуле C2-(a21/a11)*C1 = C2-(2/1)*C1 = C2-2*C1:

Аналогично поступаем и с элементом а31 (т. е. под диагональю в третьей строке матрицы). Третью строку матрицы преобразуем по формуле C3-(a31/a11)*C1 = C3-(-1/1)*C1 = C3+C1:

Таким образом, мы получили нули под главной диагональю в первом столбце расширенной матрицы. Осталось получить нуль под главной диагональю во втором столбце матрицы, т. е. на месте элемента а32. Для этого третью строку матрицы преобразуем по формуле C3-(a32/a22)*C2 = C3-(1/-2)*C2 = C3+1/2C2:

Таким образом, проведя прямой ход метода Гаусса, мы получили расширенную матрицу системы, приведенную к верхне-треугольному виду:

Эта матрица эквивалентна системе:

Обратным ходом метода Гаусса найдем корни системы. Из последнего уравнения найдем корень х3:

-5/2x3 = 3/2,

x3 = (3/2):(-5/2) = 3/2*(-2/5) = -3/5.

Корень x3 = -3/5 найден. Подставим его в верхнее (второе) уравнение системы (-2x2-3x3 = 1):

-2x2-3(-3/5) = 1,

-2x2+9/5 = 1,

-2x2 = 1-9/5,

-2x2 = -4/5,

x2 = (-4/5):(-2) = (-4/5)*(-1/2) = 2/5.

Корень x2 = 2/5 найден. Подставим его и корень х3 в верхнее (первое) уравнение системы (x1-x2+x3 = 0):

x1-2/5+(-3/5) = 0,

x1-5/5 = 0,

x1 = 5/5 = 1.

Проверка:

т. е.

т. е.

и т. д.

Вывод.

Итак, метод Гаусса (или, иначе, метод последовательного исключения неизвестных) состоит в следующем:

1. Путем элементарных преобразований систему уравнений приводят к эквивалентной ей системе с верхне-треугольной матрицей. Эти действия называют прямым ходом.

2. Из полученной треугольной системы переменные находят с помощью последовательных подстановок (обратный ход).

3. При этом все преобразования проводятся над так называемой расширенной матрицей системы, которую и приводят к верхнее - треугольному виду в прямом ходе метода.

1.5 Блок-схема алгоритма

1.6 Характеристика ЭВМ, ОС и алгоритмического языка программирования

Проект был разработан на ЭВМ со следующими техническими характеристиками:

ь Процессор AMD Athlon 64 x24400+

ь Оперативная память DDR 2.1 Gb

ь Жесткий диск Seagate SATA Barracuda 7200 160 Gb

ь Видеокарта ASUS EN8500GT SILENT 512Mb

ь Звук АС'97

ь CD-ROM SONY-NEC AD7173S

Программное обеспечение, установленное на компьютере:

ь Операционная система Windows XP Professional

ь Визуальная среда разработки приложений Borland Delphi 6

ь Язык программирования Турбо-Паскаль 7.0.

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

ь CPU Pentium\Athlon\Duron 300 МГц

ь RAM 64 Мб

ь Windows 95\98\Me\2000\XP

Программа написана на языке Object Pascal с использованием интегрированной среды разработки приложений Borland Delphi 6.

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

Delphi использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с одной стороны выразительную мощь и простоту программирования, характерную для языков 4GL, а с другой стороны эффективность языка 3GL. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Delphi полностью поддерживает передовые программные концепции, включая инкапсуляцию, наследование, полиморфизм и управление событиями.

Delphi- это комбинация нескольких важнейших технологий:

· Высокопроизводительный компилятор в машинный код

· Объектно-ориентированная модель компонент

· Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов

· Масштабируемые средства для построения баз данных

Основной упор этой модели в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать.

В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию из 270 базовых классов. Для начала - неплохо. Но если возникнет необходимость в решении какой-то специфической проблемы на Delphi, советуем, прежде чем попытаться начинать решать проблему “с нуля”, просмотреть список свободно распространяемых или коммерческих компонент, разработанных третьими фирмами, количество этих фирм в настоящее время превышает число 250. На Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы. Во многом это объясняется тем, что традиционно в среде Windows было достаточно сложно реализовывать пользовательский интерфейс. Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.

Объекты БД в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL Link, поэтому доступ к СУБД Oracle, Sybase, Informix и InterBase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние SQL-сервера приложения в оффлайновом режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf (как в dBase или Clipper) или .db (Paradox). Если же он будет использовать локальный InterBase for Windows 4.0 (это локальный SQL-сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент-сервер.

Вот она - масштабируемость на практике - одно и то же приложение можно использовать как для локального, так и для более серьезного клиент-серверного вариантов.

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

В среде разработки появился новый элемент -- дерево объектов (Object TreeView), отображающее иерархию компонентов приложения с точки зрения их принадлежности друг другу. В дереве объектов можно осуществлять операции drag-and-drop, перемещая дочерние компоненты на другие контейнеры, и эти изменения синхронно отображаются в редакторе форм.

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

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

· Diagram -- отображение связей между компонентами доступа к данным наподобие редактора модулей данных из предыдущей версии Delphi);

· HTML Scrip -- отображение кода HTML и JavaScript, сгенерированного компонентами, которые предназначены для создания интерактивных Web-приложений;

· HTML Result -- отображение HTML-кода, сгенерированного при использовании HTML-шаблона;

· Preview -- отображение сгенерированного HTML-вывода так, как он выглядит в клиентском браузере

1.7 Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, Menus, ExtCtrls;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Label1: TLabel;

Button1: TButton;

Edit1: TEdit;

Button2: TButton;

StringGrid2: TStringGrid;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

StringGrid3: TStringGrid;

Label5: TLabel;

Label6: TLabel;

MainMenu1: TMainMenu;

PopupMenu1: TPopupMenu;

N2: TMenuItem;

CheckBox1: TCheckBox;

Label9: TLabel;

N3: TMenuItem;

Label7: TLabel;

Edit2: TEdit;

N4: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure C1Click(Sender: TObject);

procedure FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure N2Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var n:integer;

begin

n:=strtoint(edit1.Text);

if n=3 then begin

stringgrid1.colcount:=n+2;

stringgrid1.rowcount:=n+1;

stringgrid2.colcount:=n+2;

stringgrid2.rowcount:=n+1;

stringgrid3.colcount:=n+1;

stringgrid3.rowcount:=n+1; end else begin

stringgrid1.colcount:=n+2;

stringgrid1.rowcount:=n+1;

stringgrid2.colcount:=n+2;

stringgrid2.rowcount:=n+1;

stringgrid3.colcount:=n+1;

stringgrid3.rowcount:=n; end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var n,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14:real;

b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,Y1,Y2,Y3,y4,x4,a5,X1,X2,X3,a1,a2,a3,a4,q:real;

m,m1:real;

begin

n:=strtofloat(edit1.text);

if n=3 then

begin

t1:=strtofloat( stringgrid1.cells[1,1]);

t2:=strtofloat( stringgrid1.cells[2,1]);

t3:=strtofloat( stringgrid1.cells[3,1]);

t4:=strtofloat( stringgrid1.cells[2,2]);

t5:=strtofloat( stringgrid1.cells[3,2]);

t6:=strtofloat( stringgrid1.cells[3,3]);

t7:=strtofloat( stringgrid1.cells[4,1]);

t8:=strtofloat( stringgrid1.cells[4,2]);

t9:=strtofloat( stringgrid1.cells[4,3]);

if t1<0 then

begin

t1:=t1*(-1);

stringgrid2.cells[1,1]:=floattostr(sqrt(t1));

b1:=strtofloat (stringgrid2.cells[1,1]);

stringgrid2.cells[2,1]:=floattostr (t2/b1);

b2:=strtofloat (stringgrid2.cells[2,1]);

stringgrid2.cells[3,1]:=floattostr(t3/b1);

b3:=strtofloat (stringgrid2.cells[3,1]);

m1:=((t4)-sqr(b2)*(-1));

if m1<0 then

begin

m1:=m1*(-1);

stringgrid2.cells[2,2]:=floattostr(sqrt(m1));

end else begin

stringgrid2.cells[2,2]:=floattostr(sqrt((t4)-sqr(b2)*(-1)));

end;

b4:=strtofloat (stringgrid2.cells[2,2]);

stringgrid2.cells[3,2]:=floattostr(((t5-(b3*b2*(-1)))/b4));

b5:=strtofloat (stringgrid2.cells[3,2]);

m1:=( t6-(sqr(b3)*(-1))-(sqr(b5)));

if m<0 then

begin

m1:=m1*(-1);

stringgrid2.cells[3,3]:=floattostr(sqrt( t6-(sqr(b3)*(-1))-(sqr(b5))));

end else begin

stringgrid2.cells[3,3]:=floattostr(sqrt( t6-(sqr(b3)*(-1))-(sqr(b5))));

end;

b6:=strtofloat (stringgrid2.cells[3,3]);

stringgrid2.Cells[1,2]:='0';

stringgrid2.Cells[1,3]:='0';

stringgrid2.Cells[2,3]:='0';

stringgrid2.Cells[1,1]:=FLOATTOSTRF(B1,FFFIXED,4,1);

stringgrid2.Cells[2,1]:=FLOATTOSTRF(B2,FFFIXED,4,1);

stringgrid2.Cells[3,1]:=FLOATTOSTRF(B3,FFFIXED,4,1);

stringgrid2.Cells[2,2]:=FLOATTOSTRF(B4,FFFIXED,4,1);

stringgrid2.Cells[3,2]:=FLOATTOSTRF(B5,FFFIXED,3,0);

stringgrid2.Cells[3,3]:=FLOATTOSTRF(B6,FFFIXED,3,1);

stringgrid3.Cells[1,1]:=FLOATTOSTR(T7/B1);

y1:=strtofloat (stringgrid3.cells[1,1]);

stringgrid3.Cells[2,1]:=FLOATTOSTR((t8-(b2*y1))*(-1)/B4);

y2:=strtofloat (stringgrid3.cells[2,1]);

stringgrid3.Cells[3,1]:=FLOATTOSTR((t9-(b3*y1)-(b5*y2))*(-1)/B6);

y3:=strtofloat (stringgrid3.cells[3,1]);

stringgrid3.Cells[3,2]:=FLOATTOSTR(y3/B6);

x3:=strtofloat (stringgrid3.cells[3,2]);

stringgrid3.Cells[2,2]:=FLOATTOSTR((y2-(b5*x3))/B4);

x2:=strtofloat (stringgrid3.cells[2,2]);

stringgrid3.Cells[1,2]:=FLOATTOSTR((y1-(x3*b3)-(b2*x2))/B1);

x1:=strtofloat (stringgrid3.cells[1,2]);

stringgrid3.Cells[1,1]:=FLOATTOSTRF(y1,FFFIXED,3,1);

stringgrid3.Cells[2,1]:=FLOATTOSTRF(y2,FFFIXED,3,1);

stringgrid3.Cells[3,1]:=FLOATTOSTRF(y3,FFFIXED,3,1);

stringgrid3.Cells[1,2]:=FLOATTOSTRF(x1,FFFIXED,3,1);

stringgrid3.Cells[2,2]:=FLOATTOSTRF(x2,FFFIXED,3,1);

stringgrid3.Cells[3,2]:=FLOATTOSTRF(x3,FFFIXED,3,1);

stringgrid2.cells[4,1]:=floattostr(b1+b2+b3);

b7:=strtofloat (stringgrid2.cells[4,1]);

stringgrid3.Cells[4,1]:=FLOATTOSTRF(b7,FFFIXED,2,1);

stringgrid2.cells[4,2]:=floattostr(b4+b5);

b8:=strtofloat (stringgrid2.cells[4,2]);

stringgrid3.Cells[4,2]:=FLOATTOSTRF(b8,fffixed,5,2);

stringgrid2.cells[4,3]:=floattostr(b6);

b9:=strtofloat (stringgrid2.cells[4,3]);

stringgrid2.Cells[4,3]:=FLOATTOSTRF(b9,FFFIXED,3,1);

stringgrid2.cells[4,1]:=floattostr(b7)+'i';

stringgrid2.cells[1,1]:=floattostr(b1)+'i';

stringgrid2.cells[2,1]:=floattostr(b2)+'i';

stringgrid2.cells[3,1]:=floattostr(b3)+'i';

stringgrid3.cells[1,1]:=floattostr(y1)+'i';

t1:=t1*(-1);

stringgrid3.Cells[1,3]:=FLOATTOSTR (t1*x1);

a1:=strtofloat (stringgrid3.cells[1,3]);

stringgrid3.Cells[2,3]:=FLOATTOSTR (t2*x2);

a2:=strtofloat (stringgrid3.cells[2,3]);

stringgrid3.Cells[3,3]:=FLOATTOSTR (t3*x3);

a3:=strtofloat (stringgrid3.cells[3,3]);

stringgrid3.Cells[1,3]:=FLOATTOSTRF(a1,FFFIXED,3,1);

stringgrid3.Cells[2,3]:=FLOATTOSTRF(a2,FFFIXED,3,1);

stringgrid3.Cells[3,3]:=FLOATTOSTRF(a3,FFFIXED,3,1);

a4:=((a3)+(a2)+(a1));

edit2.Text:=floattostr(a4);

edit2.Text:=FLOATTOSTRF(a4,FFFIXED,5,0);

end

else

begin

stringgrid2.cells[1,1]:=floattostr(sqrt(t1));

b1:=strtoFLOAT (stringgrid2.cells[1,1]);

stringgrid2.cells[2,1]:=floattostr (t2/b1);

b2:=strtofloat (stringgrid2.cells[2,1]);

stringgrid2.cells[3,1]:=floattostr(t3/b1);

b3:=strtofloat (stringgrid2.cells[3,1]);

m1:= (t4)-sqr(b2);

if m1<0 then

begin

m1:=m1*(-1);

stringgrid2.cells[2,2]:=floattostr(sqrt((t4)-sqr(b2)));

end

else

begin

stringgrid2.cells[2,2]:=floattostr(sqrt((t4)-sqr(b2)));

end;

b4:=strtofloat (stringgrid2.cells[2,2]);

stringgrid2.cells[3,2]:=floattostr(((t5-(b3*b2))/b4));

b5:=strtofloat (stringgrid2.cells[3,2]);

m:=( t6-(sqr(b3))-(sqr(b5)));

if (m<0) then begin

stringgrid2.cells[3,3]:=floattostr(sqrt((-1)*(t6-(sqr(b3))-(sqr(b5)))));

end

else

begin

stringgrid2.cells[3,3]:=floattostr(sqrt( t6-(sqr(b3))-(sqr(b5))));

end;

b6:=strtofloat (stringgrid2.cells[3,3]);

stringgrid2.Cells[1,2]:='0';

stringgrid2.Cells[1,3]:='0';

stringgrid2.Cells[2,3]:='0';

stringgrid2.Cells[1,1]:=FLOATTOSTRF(B1,FFFIXED,2,1);

stringgrid2.Cells[2,1]:=FLOATTOSTRF(B2,FFFIXED,2,1);

stringgrid2.Cells[3,1]:=FLOATTOSTRF(B3,FFFIXED,2,1);

stringgrid2.Cells[2,2]:=FLOATTOSTRF(B4,FFFIXED,2,1);

stringgrid2.Cells[3,2]:=FLOATTOSTRF(B5,FFFIXED,3,0);

stringgrid2.Cells[3,3]:=FLOATTOSTRF(B6,FFFIXED,3,0);

stringgrid3.Cells[1,1]:=FLOATTOSTR(T7/B1);

y1:=strtofloat (stringgrid3.cells[1,1]);

stringgrid3.Cells[1,1]:=FLOATTOSTRF(y1,FFFIXED,2,1);

stringgrid3.Cells[2,1]:=FLOATTOSTR((t8-(b2*y1))/B4);

y2:=strtofloat (stringgrid3.cells[2,1]);

stringgrid3.Cells[2,1]:=FLOATTOSTRF(y2,FFFIXED,2,1);

stringgrid3.Cells[3,1]:=FLOATTOSTR((t9-(b3*y1)-(b5*y2))/B6);

y3:=strtofloat (stringgrid3.cells[3,1]);

stringgrid3.Cells[3,1]:=FLOATTOSTRF(y3,FFFIXED,2,1);

stringgrid3.Cells[3,2]:=FLOATTOSTR(y3/B6);

x3:=strtofloat (stringgrid3.cells[3,2]);

stringgrid3.Cells[3,2]:=FLOATTOSTRF(x3,FFFIXED,2,0);

stringgrid3.Cells[2,2]:=FLOATTOSTR((y2-(b5*x3))/B4);

x2:=strtofloat (stringgrid3.cells[2,2]);

stringgrid3.Cells[2,2]:=FLOATTOSTRF(x2,FFFIXED,2,0);

stringgrid3.Cells[1,2]:=FLOATTOSTR((y1-(x3*b3)-(b2*x2))/B1);

x1:=strtofloat (stringgrid3.cells[1,2]);

stringgrid3.Cells[1,2]:=FLOATTOSTRF(x1,FFFIXED,2,0);

stringgrid2.cells[4,1]:=floattostr(b1+b2+b3);

b7:=strtofloat (stringgrid2.cells[4,1]);

stringgrid2.Cells[4,1]:=FLOATTOSTRF(b7,FFFIXED,2,1);

stringgrid2.cells[4,2]:=floattostr(b4+b5);

b8:=strtofloat (stringgrid2.cells[4,2]);

stringgrid2.Cells[4,2]:=FLOATTOSTRF(b8,FFFIXED,3,0);

stringgrid2.cells[4,3]:=floattostr(b6);

b9:=strtofloat (stringgrid2.cells[4,3]);

stringgrid2.Cells[4,3]:=FLOATTOSTRF(b9,FFFIXED,3,1);

stringgrid3.Cells[1,3]:=FLOATTOSTR (t1*x1);

a1:=strtofloat (stringgrid3.cells[1,3]);

stringgrid3.Cells[2,3]:=FLOATTOSTR (t2*x2);

a2:=strtofloat (stringgrid3.cells[2,3]);

stringgrid3.Cells[3,3]:=FLOATTOSTR (t3*x3);

a3:=strtofloat (stringgrid3.cells[3,3]);

stringgrid3.Cells[1,3]:=FLOATTOSTRF(a1,FFFIXED,3,0);

stringgrid3.Cells[2,3]:=FLOATTOSTRF(a2,FFFIXED,3,0);

stringgrid3.Cells[3,3]:=FLOATTOSTRF(a3,FFFIXED,3,0);

a4:=((a3)+(a2)+(a1));

edit2.Text:=floattostr(a4);

edit2.Text:=FLOATTOSTRF(a4,FFFIXED,3,0);

end;

end;

end;

procedure TForm1.C1Click(Sender: TObject);

begin

checkbox1.Visible:=true;

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var p:tpoint;

begin

p:=getclientorigin;

if button=mbright then popupmenu1.Popup(p.X+x,p.Y+y);

end;

procedure TForm1.N2Click(Sender: TObject);

begin

edit1.clear;

edit2.clear;

stringgrid1.Cells[1,1]:='';

stringgrid1.Cells[1,2]:='';

stringgrid1.Cells[1,3]:='';

stringgrid1.Cells[1,4]:='';

stringgrid1.Cells[2,1]:='';

stringgrid1.Cells[2,2]:='';

stringgrid1.Cells[2,3]:='';

stringgrid1.Cells[2,4]:='';

stringgrid1.Cells[5,1]:='';

stringgrid1.Cells[5,2]:='';

stringgrid1.Cells[3,1]:='';

stringgrid1.Cells[3,2]:='';

stringgrid1.Cells[3,3]:='';

stringgrid1.Cells[3,4]:='';

stringgrid1.Cells[4,1]:='';

stringgrid1.Cells[4,2]:='';

stringgrid1.Cells[4,3]:='';

stringgrid1.Cells[4,4]:='';

stringgrid1.Cells[5,3]:='';

stringgrid1.Cells[5,4]:='';

stringgrid2.Cells[1,1]:='';

stringgrid2.Cells[1,2]:='';

stringgrid2.Cells[1,3]:='';

stringgrid2.Cells[1,4]:='';

stringgrid2.Cells[2,1]:='';

stringgrid2.Cells[2,2]:='';

stringgrid2.Cells[2,3]:='';

stringgrid2.Cells[2,4]:='';

stringgrid2.Cells[5,1]:='';

stringgrid2.Cells[5,2]:='';

stringgrid2.Cells[3,1]:='';

stringgrid2.Cells[3,2]:='';

stringgrid2.Cells[3,3]:='';

stringgrid2.Cells[3,4]:='';

stringgrid2.Cells[4,1]:='';

stringgrid2.Cells[4,2]:='';

stringgrid2.Cells[4,3]:='';

stringgrid2.Cells[4,4]:='';

stringgrid2.Cells[5,3]:='';

stringgrid2.Cells[5,4]:='';

stringgrid3.Cells[1,1]:='';

stringgrid3.Cells[1,2]:='';

stringgrid3.Cells[1,3]:='';

stringgrid3.Cells[2,1]:='';

stringgrid3.Cells[2,2]:='';

stringgrid3.Cells[2,3]:='';

stringgrid3.Cells[3,1]:='';

stringgrid3.Cells[3,2]:='';

stringgrid3.Cells[3,3]:='';

stringgrid3.Cells[4,1]:='';

stringgrid3.Cells[4,2]:='';

stringgrid3.Cells[4,3]:='';

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if checkbox1.Checked then

checkbox1.Visible:=false;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

showmessage ('Вы действительно хотите выйти?');

if closequery then close;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

showmessage ('Вы действительно хотите выйти?');

if closequery then close;

end;

procedure TForm1.Button3Click(Sender: TObject);

var n,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14:real;

b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,Y1,Y2,Y3,y4,x4,a5,X1,X2,X3,a1,a2,a3,a4,q:real;

m,m1,z,z1,z2:real;

begin

n:=strtoint(edit1.text);

if n=4 then

begin

t1:=strtofloat( stringgrid1.cells[1,1]);

t2:=strtofloat( stringgrid1.cells[2,1]);

t3:=strtofloat( stringgrid1.cells[3,1]);

t4:=strtofloat( stringgrid1.cells[4,1]);

t5:=strtofloat( stringgrid1.cells[5,1]);

t6:=strtofloat( stringgrid1.cells[2,2]);

t7:=strtofloat( stringgrid1.cells[3,2]);

t8:=strtofloat( stringgrid1.cells[4,2]);

t9:=strtofloat( stringgrid1.cells[5,2]);

t10:=strtofloat( stringgrid1.cells[3,3]);

t11:=strtofloat( stringgrid1.cells[4,3]);

t12:=strtofloat( stringgrid1.cells[5,3]);

t13:=strtofloat( stringgrid1.cells[4,4]);

t14:=strtofloat( stringgrid1.cells[5,4]);

if t1<0 then

begin

t1:=t1*(-1);

stringgrid2.cells[1,1]:=floattostr(sqrt(t1));

b1:=strtofloat (stringgrid2.cells[1,1]);

stringgrid2.cells[2,1]:=floattostr (t2/b1);

b2:=strtofloat (stringgrid2.cells[2,1]);

stringgrid2.cells[3,1]:=floattostr(t3/b1);

b3:=strtofloat (stringgrid2.cells[3,1]);

stringgrid2.cells[4,1]:=floattostr (t4/b1);

b4:=strtofloat (stringgrid2.cells[2,1]);

stringgrid2.cells[2,2]:=floattostr(sqrt((t6)-(sqr(b2)*(-1))));

b6:=strtofloat (stringgrid2.cells[2,2]);

stringgrid2.cells[3,2]:=floattostr(((t7-(b3*b2*(-1)))/b6)*(-1));

b7:=strtofloat (stringgrid2.cells[3,2]);

stringgrid2.cells[4,2]:=floattostr((((((t8)-(b4)*(b2))*(-1))/(b6))*(-1)));

b8:=strtofloat (stringgrid2.cells[4,2]);

stringgrid2.cells[3,3]:=floattostr(sqrt((t10)-((sqr(b3))*(-1))-sqr(b7)));

b10:=strtofloat (stringgrid2.cells[3,3]);

stringgrid2.cells[4,3]:=floattostr(((t11-(b4*b3*(-1))-(b7*b8))/b10));

b11:=strtofloat (stringgrid2.cells[4,3]);

stringgrid2.cells[4,4]:=floattostr(sqrt((t13-sqr(b11)-sqr(b8)+sqr(b4))*(-1)));

b13:=strtofloat (stringgrid2.cells[4,4]);

stringgrid2.Cells[1,2]:='0';

stringgrid2.Cells[1,3]:='0';

stringgrid2.Cells[1,4]:='0';

stringgrid2.Cells[2,3]:='0';

stringgrid2.Cells[2,4]:='0';

stringgrid2.Cells[3,4]:='0';

stringgrid2.Cells[1,1]:=FLOATTOSTRF(B1,FFFIXED,5,2);

stringgrid2.Cells[2,1]:=FLOATTOSTRF(B2,FFFIXED,5,2);

stringgrid2.Cells[3,1]:=FLOATTOSTRF(B3,FFFIXED,5,2);

stringgrid2.Cells[4,1]:=FLOATTOSTRF(B4,FFFIXED,5,2);

stringgrid2.Cells[2,2]:=FLOATTOSTRF(B6,FFFIXED,5,2);

stringgrid2.Cells[3,2]:=FLOATTOSTRF(B7,FFFIXED,5,2);

stringgrid2.Cells[4,2]:=FLOATTOSTRF(B8,FFFIXED,5,2);

stringgrid2.Cells[3,3]:=FLOATTOSTRF(B10,FFFIXED,5,2);

stringgrid2.Cells[4,3]:=FLOATTOSTRF(B11,FFFIXED,5,2);

stringgrid2.Cells[4,4]:=FLOATTOSTRF(B13,FFFIXED,5,2);

stringgrid3.Cells[1,1]:=FLOATTOSTR(T5/B1);

y1:=strtofloat (stringgrid3.cells[1,1]);

stringgrid3.Cells[2,1]:=FLOATTOSTR(-1*(t9-(b2*y1*-1))/b6);

y2:=strtofloat (stringgrid3.cells[2,1]);

stringgrid3.Cells[3,1]:=FLOATTOSTR((t12-(b3*y1*(-1))-(b6*y2))/B10);

y3:=strtofloat (stringgrid3.cells[3,1]);

stringgrid3.Cells[4,1]:=FLOATTOSTR((t14-(b4*y1*(-1))-(b8*y2)-(b4*y3))/B13*(-1));

y4:=strtofloat (stringgrid3.cells[4,1]);

stringgrid2.cells[5,1]:=floattostr(b1+b2+b3+b4);

b5:=strtofloat (stringgrid2.cells[5,1]);

stringgrid2.Cells[5,1]:=FLOATTOSTRF(b5,FFFIXED,5,2);

stringgrid2.cells[5,2]:=floattostr(b6+b7+b8);

b9:=strtofloat (stringgrid2.cells[5,2]);

stringgrid2.Cells[5,2]:=FLOATTOSTRF(b9,FFFIXED,5,2);

stringgrid2.cells[5,3]:=floattostr(b10+b11);

b12:=strtofloat (stringgrid2.cells[5,3]);

stringgrid2.Cells[5,3]:=FLOATTOSTRF(b12,FFFIXED,5,2);

stringgrid2.cells[5,4]:=floattostr(b13);

b14:=strtofloat (stringgrid2.cells[5,4]);

stringgrid2.Cells[5,4]:=FLOATTOSTRF(b14,FFFIXED,5,2);

stringgrid3.Cells[3,2]:=FLOATTOSTR(b14/b13);

x4:=strtofloat (stringgrid3.cells[3,2]);

stringgrid3.Cells[3,2]:=FLOATTOSTR(((b12-b11*x4))/b10);

x3:=strtofloat (stringgrid3.cells[3,2]);

stringgrid3.Cells[2,2]:=FLOATTOSTR((b9-b8*x4-b7*x3)/b6);

x2:=strtofloat (stringgrid3.cells[2,2]);

stringgrid3.Cells[1,2]:=FLOATTOSTR((b5-b4*x4-b3*x3-b2*x2)/b1);

x1:=strtofloat (stringgrid3.cells[1,2]);

stringgrid3.Cells[1,1]:=FLOATTOSTRF(y1,FFFIXED,5,2);

stringgrid3.Cells[2,1]:=FLOATTOSTRF(y2,FFFIXED,5,2);

stringgrid3.Cells[3,1]:=FLOATTOSTRF(y3,FFFIXED,5,2);

stringgrid3.Cells[4,1]:=FLOATTOSTRF(y4,FFFIXED,5,2);

stringgrid3.Cells[1,2]:=FLOATTOSTRF(x1,FFFIXED,5,2);

stringgrid3.Cells[2,2]:=FLOATTOSTRF(x2,FFFIXED,5,2);

stringgrid3.Cells[3,2]:=FLOATTOSTRF(x3,FFFIXED,5,2);

stringgrid3.Cells[4,2]:=FLOATTOSTRF(x4,FFFIXED,5,2);

stringgrid2.cells[4,1]:=floattostr(b1)+'i';

stringgrid2.cells[1,1]:=floattostr(b2)+'i';

stringgrid2.cells[2,1]:=floattostr(b3)+'i';

stringgrid2.cells[3,1]:=floattostr(b4)+'i';

stringgrid3.cells[1,1]:=floattostr(y1)+'i';

stringgrid2.cells[4,1]:=floattostr(y4)+'i';

end

else begin

stringgrid2.cells[1,1]:=floattostr(sqrt(t1));

b1:=strtofloat (stringgrid2.cells[1,1]);

stringgrid2.cells[2,1]:=floattostr (t2/b1);

b2:=strtofloat (stringgrid2.cells[2,1]);

stringgrid2.cells[3,1]:=floattostr(t3/b1);

b3:=strtofloat (stringgrid2.cells[3,1]);

stringgrid2.cells[4,1]:=floattostr (t4/b1);

b4:=strtofloat (stringgrid2.cells[4,1]);

z:=((t6)-(sqr(b2)*(-1)));

if z<0 then begin

z:=z*(-1);

stringgrid2.cells[2,2]:=floattostr(sqrt(z));

b6:=strtofloat (stringgrid2.cells[2,2]); end

else begin

stringgrid2.cells[2,2]:=floattostr(sqrt((t6)-(sqr(b2)*(-1))));

b6:=strtofloat (stringgrid2.cells[2,2]);end;

stringgrid2.cells[3,2]:=floattostr(((t7-(b3*b2))/b6)*(-1));

b7:=strtofloat (stringgrid2.cells[3,2]);

stringgrid2.cells[4,2]:=floattostr(((t8-((b4)*(b2)))/(b6))*(-1));

b8:=strtofloat (stringgrid2.cells[4,2]);

z1:=((t10)-(sqr(b3))-(sqr(b7)*(-1)));

if z1<0 then begin

z1:=z1*(-1);

stringgrid2.cells[3,3]:=floattostr(sqrt(z1));end

else begin

stringgrid2.cells[3,3]:=floattostr(sqrt((t10)-(sqr(b3))-(sqr(b7)*(-1)))); end;

b10:=strtofloat (stringgrid2.cells[3,3]);

stringgrid2.cells[4,3]:=floattostr(((t11-(b4*b3)-(b7*b8*(-1)))/b10));

b11:=strtofloat (stringgrid2.cells[4,3]);

z2:=(t13-sqr(b11)-(sqr(b8)*(-1))+sqr(b4));

if z2<0 then begin

z2:=z2*(-1);

stringgrid2.cells[4,4]:=floattostr(sqrt(z2));end

else begin

stringgrid2.cells[4,4]:=floattostr(sqrt(t13-sqr(b11)-(sqr(b8)*(-1))+sqr(b4)));

end;

b13:=strtofloat (stringgrid2.cells[4,4]);

stringgrid2.Cells[1,2]:='0';

stringgrid2.Cells[1,3]:='0';

stringgrid2.Cells[1,4]:='0';

stringgrid2.Cells[2,3]:='0';

stringgrid2.Cells[2,4]:='0';

stringgrid2.Cells[3,4]:='0';

stringgrid2.Cells[1,1]:=FLOATTOSTRF(B1,FFFIXED,5,1);

stringgrid2.Cells[2,1]:=FLOATTOSTRF(B2,FFFIXED,5,1);

stringgrid2.Cells[3,1]:=FLOATTOSTRF(B3,FFFIXED,5,1);

stringgrid2.Cells[4,1]:=FLOATTOSTRF(B4,FFFIXED,5,1);

stringgrid2.Cells[2,2]:=FLOATTOSTRF(B6,FFFIXED,5,1);

stringgrid2.Cells[3,2]:=FLOATTOSTRF(B7,FFFIXED,5,1);

stringgrid2.Cells[4,2]:=FLOATTOSTRF(B8,FFFIXED,5,1);

stringgrid2.Cells[3,3]:=FLOATTOSTRF(B10,FFFIXED,5,1);

stringgrid2.Cells[4,3]:=FLOATTOSTRF(B11,FFFIXED,5,1);

stringgrid2.Cells[4,4]:=FLOATTOSTRF(B13,FFFIXED,5,1);

stringgrid3.Cells[1,1]:=FLOATTOSTR(T5/B1);

y1:=strtofloat (stringgrid3.cells[1,1]);

stringgrid3.Cells[2,1]:=FLOATTOSTR(-1*(t9-(b2*y1))/b6);

y2:=strtofloat (stringgrid3.cells[2,1]);

stringgrid3.Cells[3,1]:=FLOATTOSTR((t12-(b3*y1)-(b6*y2*(-1)))/B10);

y3:=strtofloat (stringgrid3.cells[3,1]);

stringgrid3.Cells[4,1]:=FLOATTOSTR((t14-(b4*y1)-(b8*y2*(-1))-(b4*y3))/B13*(-1));

y4:=strtofloat (stringgrid3.cells[4,1]);

stringgrid3.Cells[1,1]:=FLOATTOSTRF(y1,FFFIXED,3,1);

stringgrid3.Cells[2,1]:=FLOATTOSTRF(y2,FFFIXED,3,1);

stringgrid3.Cells[3,1]:=FLOATTOSTRF(y3,FFFIXED,3,1);

stringgrid3.Cells[4,1]:=FLOATTOSTRF(y4,FFFIXED,3,1);

stringgrid2.cells[5,1]:=floattostr(b1+b2+b3+b4+y1);

b5:=strtofloat (stringgrid2.cells[5,1]);

stringgrid2.Cells[5,1]:=FLOATTOSTRF(b5,FFFIXED,3,1);

stringgrid2.cells[5,2]:=floattostr(b6+b7+b8+y2);

b9:=strtofloat (stringgrid2.cells[5,2]);

stringgrid2.Cells[5,2]:=FLOATTOSTRF(b9,FFFIXED,3,1);

stringgrid2.cells[5,3]:=floattostr(b10+b11+y3);

b12:=strtofloat (stringgrid2.cells[5,3]);

stringgrid2.Cells[5,3]:=FLOATTOSTRF(b12,FFFIXED,3,1);

stringgrid2.cells[5,4]:=floattostr(b13+y4);

b14:=strtofloat (stringgrid2.cells[5,4]);

stringgrid2.Cells[5,4]:=FLOATTOSTRF(b14,FFFIXED,3,1);

stringgrid3.Cells[4,2]:=FLOATTOSTR(b14/b13);

x4:=strtofloat (stringgrid3.cells[4,2]);

stringgrid3.Cells[3,2]:=FLOATTOSTR(((b12-(b11*x4)))/b10);

x3:=strtofloat (stringgrid3.cells[3,2]);

stringgrid3.Cells[2,2]:=FLOATTOSTR((b9-(b8*x4)-(b7*x3))/b6);

x2:=strtofloat (stringgrid3.cells[2,2]);

stringgrid3.Cells[1,2]:=FLOATTOSTR((b5-(b4*x4)-(b3*x3)-(b2*x2))/b1);

x1:=strtofloat (stringgrid3.cells[1,2]);

stringgrid3.Cells[1,2]:=FLOATTOSTRF(x1,FFFIXED,3,1);

stringgrid3.Cells[2,2]:=FLOATTOSTRF(x2,FFFIXED,3,1);

stringgrid3.Cells[3,2]:=FLOATTOSTRF(x3,FFFIXED,3,1);

stringgrid3.Cells[4,2]:=FLOATTOSTRF(x4,FFFIXED,3,1);

stringgrid2.cells[4,1]:=floattostr(b1)+'i';

stringgrid2.cells[1,1]:=floattostr(b2)+'i';

stringgrid2.cells[2,1]:=floattostr(b3)+'i';

stringgrid2.cells[3,1]:=floattostr(b4)+'i';

stringgrid3.cells[1,1]:=floattostr(y1)+'i';

stringgrid2.cells[4,1]:=floattostr(y4)+'i';

stringgrid3.Cells[1,3]:=FLOATTOSTR (t1*x1);

a1:=strtofloat (stringgrid3.cells[1,3]);

stringgrid3.Cells[2,3]:=FLOATTOSTR (t2*x2);

a2:=strtofloat (stringgrid3.cells[2,3]);

stringgrid3.Cells[3,3]:=FLOATTOSTR (t3*x3);

a3:=strtofloat (stringgrid3.cells[3,3]);

stringgrid3.Cells[4,3]:=FLOATTOSTR (t4*x4);

a5:=strtofloat (stringgrid3.cells[4,3]);

stringgrid3.Cells[1,3]:=FLOATTOSTRF(a1,FFFIXED,3,0);

stringgrid3.Cells[2,3]:=FLOATTOSTRF(a2,FFFIXED,3,0);

stringgrid3.Cells[3,3]:=FLOATTOSTRF(a3,FFFIXED,3,0);

stringgrid3.Cells[4,3]:=FLOATTOSTRF(a4,FFFIXED,3,0);

a4:=((a3)+(a2)+(a1)+(a5));

edit2.Text:=floattostr(a4);

edit2.Text:=FLOATTOSTRF(a4,FFFIXED,3,0);

end;

end;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

close;

end;

end.

Раздел 2. Охрана труда

2.1 Требования безопасности перед началом работы на персональном компьютере

1. Отрегулировать освещенность на рабочем месте, убедиться в достаточной освещенности и отсутствии отражений и бликов на экране.

2. Протереть салфеткой поверхность экрана и защитного фильтра.

3. Убедиться в отсутствии дискет в дисководах системного блока персонального компьютера.

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

5. Убедиться в исправности электрооборудования (розеток, вилок, разъемов) до включения компьютера в сеть.

2.2 Требования безопасности во время работы на персональном компьютере

1. Работнику во время работы на персональном компьютере запрещается:

ь касаться одновременно экрана монитора и клавиатуры

ь прикасаться к задней панели системного блока при включенном питании

ь переключать разъемы интерфейсных кабелей периферийных устройств

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

ь производить самостоятельное вскрытие и ремонт оборудования

2. Работник обязан соблюдать последовательность включения компьютера:

ь включить блок питания

ь включить периферийные устройства (монитор принтер, сканер и т.д.)

ь включить системный блок

3. Работник обязан отключить персональный компьютер от электросети:

ь при обнаружении неисправности

ь при внезапных скачках напряжения в электросети

2.3 Требования безопасности после окончания работы на персональном компьютере

1. Работник обязан соблюдать последовательность включения компьютера:

ь произвести закрытие всех активных задач

ь убедится, что в дисководах нет дискет

ь выключить питание системного блока

ь выключить питание всех периферийных устройств

2. Работник должен осмотреть и привести в порядок рабочее место

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

Раздел 3. Экономическая часть

Технико-экономическое обоснование программного продукта

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

3.1 Расчет трудоемкости разработки программы

Трудоемкость продукции - величина, обратная показателю производительности труда. Определяется как отношение количества труда, затраченного в сфере материального производства, к объему произведенной продукции.

Если говорить об определении трудоемкости таких работников, как программисты, то расчет трудоемкости (ТЭ чел/час.) по этой категории можно произвести с использованием следующей формулы:

, где

ТН - затраты труда на изучение материала, включаемого в разработанную программу;

ТА - затраты труда на разработку алгоритма программы;

ТБС - затраты труда на разработку блок схемы;

ТП - затраты труда на программирование (кодирование с использованием алгоритмического языка);

ТОТЛ - затраты труда на отладку программы;

ТД - затраты труда на оформление документации в рукописном виде.

Рассчитываем каждую из входящих переменных по следующим формулам:

,

для всех показателей кроме ТП, который будет рассчитываться, как

, где

Q - предполагаемое число программных команд на данной стадии разработки программы;

ККВ - коэффициент квалификации исполнителя;

П - производительность исполнителя;

КСЛ - коэффициент сложности задачи программы;

q - предполагаемое число программных команд в одном блоке;

t - количество блоков на конкретной стадии разработки программ;

Pn - коэффициент коррекции.

Вычисления:

Все необходимые показатели для расчетов сводятся в таблицу на начальных этапах дипломного проекта, которые легче использовать при работе в ЭТ EXCEL. (Создать таблицу).

Значения переменных (берутся из своего задания):

ККВ = 0,8; КСЛ = 1,27; Pn = 0,05.

Производительность программиста по отдельным этапам (ком. час):

Изучение материала 78 (q = 30; t = 3; количество коррекций = 2).

Разработка алгоритма 23 (q = 20; t = 4; количество коррекций = 6).

Разработка блок-схемы 12 (q = 12; t = 5; количество коррекций = 5).

Описание программы 21 (q = 7; t = 5; количество коррекций = 10).

Отладка программы 4 (q = 7; t = 1; количество коррекций = 5).

Оформление документации в рукописном виде (8 чел./час).

Количество символов 3308.

1. Затраты труда на изучение материала, включаемого в разработанную программу

Q = 30 * 3 * 1,27 * (1 + 0.05 * 2) = 125,73;

.

2. Затраты труда на разработку алгоритма программы

Q= 20 * 4 * 1,27 * (1 + 0,05 * 6) = 132,08;

.

3. Затраты труда на разработку блок схемы

Q = 20 *5 * 1,27 * (1 + 0,05 * 5) = 158,75;

4. Затраты труда на программирование (кодирование с использованием алгоритмического языка)

Q = 7 *5 * 1,27 * (1 + 0,05 * 10) = 66,68;

5. Затраты труда на отладку программы

Q = 7 * 1,27 * (1 + 0,05 * 5) = 11,11;

6. Затраты труда на оформление документации в рукописном виде

ТД = 8 чел./час.

ТЭ = 2,56 + 9,53 + 21 + 4,41 + 8 + 5,04 = 50,54 чел./час.

7. Количество дней на разработку программы

Д = ТЭ / 8 = 50,54 / 8 = 6,32 = 6 дней

8. Нормативная численность

Ч = ТЭ / (Д * 8) = 50,54 / (6 * 8 ) = 1 чел.

3.2 Расчет себестоимости программы

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

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

Различают следующие виды себестоимости: цеховая, производственная и полная.

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

Производственная себестоимость помимо затрат цехов включает общепроизводственные и общехозяйственные расходы.

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

3.2.1 Расчет расходных материалов

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

1. Материальные затраты (за вычетом стоимости возвратных отходов).

2. Затраты на оплату труда.

3. Отчисления на социальные нужды.

4. Амортизация основных фондов.

5. Прочие затраты.

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

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

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

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

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

1. Сырье и материалы.

2. Возвратные отходы (вычитаются).

3. Покупные изделия, полуфабрикаты и услуги производственного характера сторонних предприятий и организаций.

4. Топливо и энергия на технологические цели.

5. Заработная плата на производственных рабочих.

6. Отчисления на социальные нужды.

7. Расходы на подготовку и освоение производства.

8. Общехозяйственные расходы.

9. Общепроизводственные расходы.

10. Потери от брака.

11. Прочие производственные расходы.

12. Коммерческие расходы.

Итог первых 11 статей образует производственную себестоимость продукции, итог всех 12 статей - полную себестоимость продукции.

Общепроизводственные и общехозяйственные расходы относятся к накладным расходам. Общепроизводственные накладные расходы - это расходы на обслуживание и управление производством.

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


Подобные документы

  • Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.

    курсовая работа [581,0 K], добавлен 15.06.2013

  • Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.

    лабораторная работа [23,5 K], добавлен 23.09.2014

  • Сущность матричного метода. Разработка программы решения системы уравнений линейных алгебраических уравнений методом решения через обратную матрицу на языке программирования Delphi. Представление блок-схемы и графического интерфейса программного продукта.

    курсовая работа [1,0 M], добавлен 27.09.2014

  • Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.

    курсовая работа [527,5 K], добавлен 25.01.2010

  • Изучение основных этапов проектирования программных систем, создание прикладной программы, которая выполняет решение систем линейных алгебраических уравнений методом Гаусса. Вычисление определителя и обращение матриц. Листинг разработанной программы.

    курсовая работа [563,3 K], добавлен 12.07.2012

  • Алгоритм решения систем линейных уравнений методом Гаусса, его этапы. Система уравнений для определения коэффициентов сплайна, представляющая собой частный случай систем линейных алгебраических уравнений. Программная реализация, тестовый пример.

    курсовая работа [431,8 K], добавлен 15.06.2013

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

    курсовая работа [939,4 K], добавлен 16.01.2014

  • Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.

    курсовая работа [1,2 M], добавлен 15.06.2013

  • Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.

    курсовая работа [325,5 K], добавлен 27.10.2013

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

    контрольная работа [460,8 K], добавлен 15.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.