Система уравнений на языке си

BestProg

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

Условие задачи

Задана система линейных алгебраических уравнений:

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

Выполнение

При сохранении проекта имя модуля главной формы приложения оставляем по умолчанию « Unit1.cpp «.

Рис. 1. Форма приложения с созданными файлами

2. Разработка главной формы приложения

2.1. Название приложения

Задать название приложения. Для этого свойство Caption главной формы устанавливаем в значение «Метод Гаусса».

2.2. Установка свойств формы

Выделить форму. В Object Inspector установить значение следующих свойств:
– свойство Border Style = bsDialog ;
– свойство Position = poScreenCenter ;
– в свойстве Font выбрать параметры шрифта: шрифт Tahoma , размер шрифта 12 (рис. 2).

Рис. 2. Установка параметров шрифта главной формы приложения

В результате, форма приложения примет вид как показано на рисунке 3.

Рис. 3. Главная форма приложения

2.3. Компонент типа TGroupBox

Размещаем на форме компонент (элемент управления) типа TGroupBox из палитры компонент « Tool Palette «.

Рис. 4. Компонент типа TGroupBox

В результате, система создаст объект-переменную с именем GroupBox1 .

Изменяем размеры компонента GroupBox1 на всю ширину окна главной формы.

Свойство Caption компонента GroupBox1 устанавливаем в значение « Условие задачи «. Форма приложения будет иметь вид, как показано на рисунке 5.

Рис. 5. Форма приложения после размещения компонента TGroupBox

2.4. Компонент типа TLabel .

Размещаем компонент типа TLabel в области компонента TGroupBox . Автоматически создается объект-переменная с именем Label1 (рис. 6).

Устанавливаем свойство WordWrap компонента Label1 в значение « true » (рис. 6).

С помощью мышки изменяем ширину вывода текста компонента Label1 (рис. 6).

Рис. 6. Компонент Label1 , свойство WordWrap

Свойство Caption компонента Label1 устанавливаем в значение:

Решить систему линейных алгебраических уравнений методом Гаусса

В результате, форма приложения примет вид, как показано на рисунке 7.

Рис. 7. Форма приложения после размещения компонента Label1

2.5. Компоненты типа TButton .

Размещаем на форме компоненты типа TButton . В результате образуются два объекта-переменные с именами Button1 и Button2 .

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

Рис. 8. Форма приложения с размещенными компонентами Button1 и Button2

Устанавливаем такие свойства компонент Button1 и Button2:
– в компоненте Button1 свойство Caption = «Выход» ;
– в компоненте Button2 свойство Caption = «Расчет >>» .

В результате форма приложения примет вид, как показано на рисунке 9.

Рис. 9. Главная форма приложения после размещения всех компонент

3. Программирование события клика на кнопке «Выход».

Вызовем событие OnClick компонента Button1 (кнопка « Выход «) (рис. 10). Событие размещается на вкладыше Events в Object Inspector .

Процесс программирования события OnClick подробно описан здесь.

Рис. 10. Вызов события OnClick компонента Button1

В результате, откроется окно с программным кодом метода обработки события. Между скобками < >вводим вызов метода Close() .

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

Листинг метода обработки события следующий:

4. Разработка формы ввода числа уравнений n.

4.1. Размещение компонент на форме и их настройка.

Процесс создания новой формы подробно описан здесь.

Для создания новой формы вызовем команду

В результате, будет создана новая форма, как показано на рисунке 11. Сохраняем форму под именем « Unit2.cpp «.

Создаются файлы, которые соответствуют форме:
– файл « Unit2.h «, содержащий описания глобальных переменных и подключения других модулей;
– файл « Unit2.cpp «, содержащий реализацию методов формы;
– файл « Unit2.dfm «, содержащий описание изображения формы на экране (размеры окна, координаты формы относительно окна экрана, значение цветов и прочее).

Новосозданной форме отвечает объект с именем Form2 . С помощью этого имени можно приступаться к свойствам и методам формы Form2 .

Рис. 11. Новосозданная форма Form2

Осуществим настройку формы Form2 .

Сначала настроим свойства формы:
– свойство Caption = «Задайте число уравнений» ;
– свойство BorderStyle = bsDialog ;
– свойство Position = poScreenCenter ;
– в свойстве Font нужно выбрать следдующие параметры шрифта: шрифт Tahoma, размер шрифта 12.

Размещаем на форме такие компоненты:
– компонент типа TGroupBox которому будет отвечать объект GroupBox1;
– компонент типа TLabel, размещается внутри области компонента GroupBox1 . Компоненту типа TLabel отвечает объект-переменная Label1 ;
– компонент типа TEdit , размещается внутри области компонента GroupBox1 . Этому компоненту отвечает объект (переменная) Edit1 ;
– два компонента типа TButton , которым отвечают объекты с именами Button1 и Button2 .

Осуществим настройку свойств компонент:
– в компоненте GroupBox1 значение свойства Caption = «» (пустая строка);
– в компоненте Label1 значение свойства Caption = «n = « ;
– в компоненте Edit1 значение свойства Text = «» ;
– в компоненте Button1 значение свойства Caption = « ;
– в компоненте Button2 значение свойства Caption = «Далее >>» .

После размещения компонент и корректирования размеров формы, форма Form2 имеет вид как показано на рисунке 12.

Рис. 12. Форма Form2 после размещения и настройки всех компонент

4.2. Программирование обработчиков событий формы Form2 .

В форме Form2 программируем два обработчика событий:
– обработчик события OnClick клика на кнопке « «;
– обработчик события OnClick клика на кнопке « Далее >> «.

Листинг обработчика события клика на кнопке Button1 (« «):

Листинг обработчика события клика на кнопке Button2 (« Продолжить >> «):

Глобальная переменная ModalResult отвечает за состояние формы. Если глобальная переменная ModalResult=0 , то это означает что форма открытая как модальное окно. Как только значение ModalResult станет ненулевым, то форма Form2 закроется с кодом возврата, помещенным в ModalResult .

Таким образом, если пользователь сделает клик на кнопке Button1 , то форма Form2 закроется с кодом возврата mrNo. Если пользователь сделает клик на кнопке Button2, то форма Form2 закроется с кодом возврата mrOk .

5. Построение формы ввода коэффициентов в уравнениях.

5.1. Размещение компонент на форме и их настройка.

Создание формы происходит стандартным путем и описано в п. 4.

Сохраняем форму под именем предлагаемым по умолчанию « Unit3.cpp «.

После создания формы получим объект с именем Form3 . С помощью этого объекта можно будет использовать методы и свойства формы Form3 .

Данной форме отвечают файлы с именами « Unit3.h «, « Unit3.cpp » и « Unit3.dfm «.

Сначала осуществим настройку свойств формы Form3 так, как описано в п. 4:
– свойство Caption = «Ввод коэффициентов уравнений «;
– свойство BorderStyle = bsDialog ;
– свойство Position = poScreenCenter ;
– в свойстве Font нужно выбрать параметры шрифта: шрифт Tahoma , размер шрифта 12 .

Для построения формы ввода коэффициентов уравнений используем такие компоненты:
– два компонента типа TLabel . Автоматически будут созданы объекты с такими именами: label1 и label2 ;
– компонент типа TStringGrid (рис. 13) для ввода коэффициентов, которые размещаются в левой части системы уравнений.

Компонент TStringGrid размещается во вкладке Additional панели инструментов « Tool Palette «. Создается объект с именем StringGrid1 ;
– компонент типа TStringGrid (рис. 13) для введения коэффициентов, которые размещаются в правой части системы уравнений. Создается объект с именем StringGrid2 ;
– два компонента типа TButton (кнопки « » и « Продолжить >> «). Создаются два объекта с именами Button1 и Button2 .

Рис. 13. Компонент TStringGrid на палитре компонент

После размещения компонент и корректировки их размеров, форма Form3 будет иметь приблизительно следующий вид (рис. 14).

Рис. 14. Форма Form3

Формируем свойства компонент формы Form3:
– в компоненте Label1 свойство Caption = « Коэффициенты в левой части уравнения «;
– в компоненте Label2 свойство Caption = «Правая часть» ;
– в компоненте Button1 свойство Caption = « ;
– в компоненте Button2 свойство Caption = «Далее >>» .

Формируем свойства компонентов типа TStringGrid :
– в компоненте StringGrid1 свойство FixedCols = 0 (число фиксированных колонок);
– в компоненте StringGrid1 свойство FixedRows = 0 (число фиксированных строк);
– в компоненте StringGrid2 свойство FixedCols = 0 ;
– в компоненте StringGrid2 свойство FixedRows = 0 ;
– в компоненте StringGrid1 выбираем вкладку Options и устанавливаем опцию goEditing в значение « true «;
– в компоненте StringGrid2 во вкладке Options опция goEditing = « true «.

Рис. 15. Установление опции goEditing во вкладке Options компонента StringGrid1

После выполненных действий, форма Form3 будет иметь вид как показано на рисунке 16.

Рис. 16. Форма Form3 после окончательного формирования

5.2. Программирование обработчиков событий формы Form3 .

Программируем обработчики событий OnClick клика на кнопках Button1 и Button2 формы Form3 .

Листинг обработчиков событий приведен ниже.

6. Создание формы вывода результата.

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

В результате получаем объект с именем Form4 .

Новосозданная форма Form4 описывается в файле « Unit4.dfm «. Также форме отвечают файлы « Unit4.h » и « Unit4.cpp «.

6.1. Построение формы Form4 .

Сначала настраиваем свойства формы Form4 :
– свойство Caption = «Результат» ;
– свойство BorderStyle = bsDialog ;
– свойство Position = poScreenCenter ;
– в свойстве Font нужно выбрать следующие параметры шрифта: шрифт Tahoma , размер шрифта 12 .

Также корректируем размеры формы.

Следующим шагом идет размещение на форме компонент.

Размещаем на форме следующие компоненты (рис. 17):
– один компонент типа TLabel ;
– два компонента типа TStringGrid ;
– один компонент типа TButton .

Корректируем размеры и позиции компонент для удобного отображения.

После размещения компонент будут созданы объекты с такими именами: Label1 , StringGrid1 , StringGrid2 , Button1 . В компоненте StringGrid1 выводятся номера переменных величин x в уравнении. В компоненте StringGrid2 выводятся значения решения системы уравнений.

Настраиваем компоненты формы следующим образом:
– в компоненте Label1 свойство Caption = «Решение системы» ;
– в компоненте Button1 свойство Caption = «OK» ;
– в компоненте StringGrid1 свойства FixedCols = 0 и FixedRows = 0 ;
– в компоненте StringGrid2 свойства FixedCols = 0 и FixedRows = 0 .

После размещения и настройки компонент, форма Form4 будет иметь вид, как показано на рисунке 17.

Рис. 17. Форма Form4 после окончательного формирования

6.2. Программирование события клика на кнопке « ОК » формы Form4 .

Листинг обработчика события клика на кнопке « ОК » следующий:

7. Написание программного кода расчета.

7.1. Подключение модулей «Unit2.h», «Unit3.h», «Unit4.h» к модулю «Unit1.h».

Для того, чтобы из главной формы приложения Form1 вызвать второстепенные формы, нужно осуществить их подключения в модуле « Unit1.h «.

Подключение модулей форм Form2 , Form3 , Form4 к форме Form1 осуществляется стандартным для языка C/C++ способом.

Сначала нужно перейти в модуль « Unit1.h «.

Затем после строк

Рубрики

  • C# (160)
    • Практика (42)
      • MS Visual Studio 2010 (34)
      • MS Visual Studio 2017 (7)
      • MS Visual Studio 2019 (10)
    • Теория (118)
  • C++ (139)
    • Практика (31)
      • Borland C++ Builder 2007 (16)
      • MS Visual Studio 2010 (18)
    • Теория (109)
      • Visual C++ (104)
  • Java (96)
    • Практика (6)
    • Теория (90)
  • JavaScript (6)
    • Практика (1)
    • Теория (5)
  • Kotlin (19)
    • Практика (1)
    • Теория (18)
  • Pascal/Delphi (35)
    • Практика (19)
      • Delphi-7 (3)
      • Embarcadero RAD Studio 2010 (17)
    • Теория (16)
  • Python (91)
    • Практика (4)
    • Теория (87)
  • Базы данных (42)
  • Компьютерная графика (3)
  • Курсовые работы (7)
  • Математическое ПО (9)
  • Паттерны (20)

Свежие записи

  • C++. Абстрактный класс. Чисто виртуальная функция 18 февраля, 2022
  • C++. Полиморфизм. Виртуальные функции. Общие понятия 17 февраля, 2022
  • C++. Линейный двухсвязный список. Пример шаблонного класса 16 февраля, 2022
  • C++. Линейный двухсвязный (двунаправленный) список 16 февраля, 2022
  • C++. Кольцевая очередь. Разработка шаблонного класса, реализующего кольцевую очередь 14 февраля, 2022
  • C++. Пример реализации линейного односвязного списка 13 февраля, 2022
  • C++. Линейный односвязный список. Общие сведения 11 февраля, 2022
  • Java. Автоупаковка и автораспаковка в выражениях и операторе switch 9 февраля, 2022
  • C++. Разработка класса реализующего «умный» указатель 7 февраля, 2022
  • Java. Автоупаковка и автораспаковка 5 февраля, 2022

При использовании материалов сайта, ссылка на сайт обязательна.

Программная реализация метода Гаусса

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

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

Прямой ход реализуется по следующим формулам (индекс k в круглых скобках означает номер цикла — номер столбца).

Умножение k-й строки на число

. (1)

Вычитание k-й строки из j-й строки

. (2)

. (3)

Обратный ход — вычисление неизвестных — реализуется по следующим формулам, начиная с последнего уравнения системы

. (4)

Код C++

using namespace std;

cout «Poryadok: » > n;

double **a = new double *[n];

for (i = 0; i new double [n];

double **a1 = new double *[n];

for (i = 0; i new double [n];

double *b = new double [n];

double *x = new double [n];

cout «Vvedite koefficienty i svobodnye chleny » for (i = 1; i for (j = 1; j «a[ » «,» «]= » ;

for (k = 1; k // прямой ход

for (j = k + 1; j // формула (1)

for (i = k; i // формула (2)

b[j] = b[j] — d * b[k]; // формула (3)

for (k = n; k >= 1; k—) // обратный ход

for (j = k + 1; j // формула (4)

d = d + s; // формула (4)

x[k] = (b[k] — d) / a[k][k]; // формула (4)

cout «Korni sistemy: » for ( i = 1; i «x[» «]=» » » return 0;

Достоверное и точное решение систем алгебраических и дифференциальных уравнений на языке Си Текст научной статьи по специальности « Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Маничев В. Б., Жук Д. М., Глазкова В. В.

Приведены основные утверждения и научные результаты многолетних работ в области численного моделирования динамических систем, положенные в основу библиотеки математических программ SADEL (Sets of Algebraic and Differential Equations solvers Library) Си-библиотеки, предназначенной для решения алгебраических и дифференциальных уравнений с максимально возможной компьютерной точностью. Показаны результаты решения тестовых и практических задач, подтверждающие эффективность разработанных программ библиотеки SADEL

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Маничев В. Б., Жук Д. М., Глазкова В. В.

RELIABLE AND ACCURATE SOLVING OF SYSTEMS OF ALGEBRAIC AND DIFFERENTIAL EQUATIONS IN C LANGUAGE

Basic statements and scientific results of many-year works in the field of numerical simulation of dynamic systems are given that underlie the mathematical program library SADEL (Sets of Algebraic and Differential Equations solvers Library). SADEL is the C language library destined for solving algebraic and differential equations with maximum possible computer precision. Results of solving the test and practical problems are given that confirm the effectiveness of the SADEL programs

Текст научной работы на тему «Достоверное и точное решение систем алгебраических и дифференциальных уравнений на языке Си»

ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ

ДОСТОВЕРНОЕ И ТОЧНОЕ РЕШЕНИЕ СИСТЕМ АЛГЕБРАИЧЕСКИХ И ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ НА ЯЗЫКЕ СИ

В.Б. Маничев1, Д.М. Жук1, В.В. Глазкова2

ХМГТУ им. Н.Э. Баумана, Москва, Российская Федерация e-mail: manichev@bmstu.ru; zhuk@bmstu.ru

2МГУ им. М.В. Ломоносова, Москва, Российская Федерация e-mail: glazkova@mlab.cs.msu.su

Приведены основные утверждения и научные результаты многолетних работ в области численного моделирования динамических систем, положенные в основу библиотеки математических программ SADEL (Sets of Algebraic and Differential Equations solvers Library) — Си-библиотеки, предназначенной для решения алгебраических и дифференциальных уравнений с максимально возможной компьютерной точностью. Показаны результаты решения тестовых и практических задач, подтверждающие эффективность разработанных программ библиотеки SADEL.

Ключевые слова: численное моделирование, динамические системы, обыкновенные дифференциальные уравнения, дифференциально-алгебраические уравнения, методы интегрирования, линейные алгебраические уравнения.

RELIABLE AND ACCURATE SOLVING OF SYSTEMS OF ALGEBRAIC AND DIFFERENTIAL EQUATIONS IN C LANGUAGE

V.B. Manichev1, D.M. Zhuk1, V.V. Glazkova2

1Bauman Moscow State Technical University, Moscow, Russian Federation e-mail: manichev@bmstu.ru; zhuk@bmstu.ru

2Lomonosov Moscow State University, Moscow, Russian Federation e-mail: glazkova@mlab.cs.msu.su

Basic statements and scientific results of many-year works in the field of numerical simulation of dynamic systems are given that underlie the mathematical program library SADEL (Sets of Algebraic and Differential Equations solvers Library). SADEL is the C language library destined for solving algebraic and differential equations with maximum possible computer precision. Results of solving the test and practical problems are given that confirm the effectiveness ofthe SADEL programs.

Keywords: simulation, dynamic systems, ordinary differential equations, differential algebraic equations, integration methods, linear algebraic equations.

Огромное значение при проектировании сложной и опасной техники (аэрокосмической техники, атомных станций и т.п.) имеют достоверность, надежность и точность компьютерных вычислений. Как показывает анализ некоторых из происшедших за последнее время аварий и катастроф, одной

из причин стали существенные погрешности компьютерных вычислений, результаты которых попали в конечную конструкторскую документацию. Главным недостатком вычислительных методов, алгоритмов и программ, используемых при проектировании и управлении и реализованных в лучших зарубежных программно-методических комплексах (ПМК) моделирования динамических систем, является возможная выдача ошибочных результатов компьютерных вычислений без предупреждения пользователей об их недостоверности. Подавляющее большинство универсальных и, особенно, специализированных программ численного моделирования разнообразных динамических систем и объектов разработано и разрабатывается с использованием языка Си (Си++). При этом пользователи ПМК моделирования динамических систем часто сами пишут программы решения систем обыкновенных дифференциальных и дифференциально-алгебраических уравнений (ОДУ-ДАУ), а также линейных алгебраических уравнений (ЛАУ), считая это простой задачей, а затем разрабатывают прекрасные интерфейсы и визуализацию неверных результатов решения сложных вычислительных задач. Библиотека SADEL (Sets of Algebraic and Differential Equations solvers Library) разработана как библиотека программ-решателей для жестких систем ОДУ-ДАУ и плохо обусловленных систем ЛАУ и предназначена для решения указанных проблем при численном моделировании динамических систем [1, 2]. В настоящей работе используется следующая терминология.

Математическая модель (mathematical model) — система ОДУ-ДАУ, отображающая функционирование моделируемой динамической системы с требуемой достоверностью и точностью.

Математическое моделирование (mathematical modeling) — процесс получения математических моделей динамических систем на основе фундаментальных законов физики, химии и др.

Компьютерная модель — алгоритмическая и программная реализация математической модели.

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

Жесткие системы ОДУ-ДАУ (stiff ODE-DAE systems (stiff set of ODE-DAE)) — системы ОДУ-ДАУ со степенью жесткости более 106.

Плохо обусловленные системы ЛАУ (badly conditioned (ill-conditioned) LAE systems (ill-conditioned set of LAE)) — системы ЛАУ с числом обусловленности более 106, к решению которых часто сводится решение жестких и сверхжестких систем ОДУ-ДАУ неявными методами интегрирования.

Достоверность численного моделирования (veracity of simulation) — отклонение результатов численного моделирования динамических систем от заведомо точных результатов не более чем на 20 % (точные результаты получают аналитически или экспериментально, как правило, оценивая относительную погрешность численного моделирования в процентах).

Точность численного моделирования (accuracy of simulation) — фактическая степень отклонения результатов достоверного численного моделирования от заведомо точных результатов.

Математическая точность (mathematical accuracy) решения систем ОДУ-ДАУ — заданная относительная погрешность нормы векторов решения систем ОДУ-ДАУ (параметр eps) по сравнению с заведомо точным аналитическим решением в относительных единицах (например, в ПМК MATLAB по умолчанию eps = 0,001).

Компьютерная точность (precision) решения систем ОДУ-ДАУ и ЛАУ — число полученных верных значащих цифр в каждом элементе векторов решения систем ОДУ-ДАУ и ЛАУ по сравнению с заведомо точным аналитическим (идеальным для систем ЛАУ) решением.

Решение систем ЛАУ с повышенной точностью вычислений (LAE systems solution with extra precision calculations) — применение методов получения решений с повышенной точностью вычислений (extra precision calculations), реализованных в соответствующих ПМК, а также в библиотеках математических программ и описанных в документации на соответствующие ПМК и библиотеки. Возможно также использование переменных типа Decimal на языке C# или класса java.math.BigDecimal на языке Java.

Далее приведены методы для получения решений с повышенной точностью вычислений, реализованные в наиболее известных ПМК: Maple (http://maplesoft.com — метод Software Floating Point (SFP метод)), MATLAB (http://mathworks.com — метод Variable Precision Arithmetic (VPA метод)), Mathematica (http://wolfram.com — метод Arbitrary Precision Arithmetic (APA метод));

библиотеки математических программ для получения решений с повышенной точностью вычислений: Intel для десятичных вычислений с повышенной точностью (стандарт IEEE 754-2008 Decimal Floating-Point for Intel§Architecture Processors, IEEE Standard for Float-ing-Point Arithmetic 7542008, IEEE, 2008:

http://ieeexplore.ieee.org/xpl/loginjsp?tp=&arnumber=5223319&url [3]), а также Си (Си++)-библиотеки для вычислений с повышенной точностью: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic http://en.wikipedia.org/wiki/GNU_Multi-Precision_Library http://en.wikipedia.org/wiki/MPFR http://en.wikipedia.org/wiki/Class_Library_for_Numbers http://gmplib.org/

http://www. boost.org/doc/libs/1_53_0/libs/rational/rational.html http://speleotrove.com/decimal/dnusers.html#example7 http://www. ttmath.org/.

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

общем случае (без использования ПМК визуального математического моделирования типа ANSYS, NX-CAE (NASTRAN), SIMULIA (ABAQUS), MATLAB-SIMULINK, Maple-MapleSim, Mathematica-SystemModeler и др.), можно представить как последовательность четырех основных этапов.

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

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

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

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

Соответственно можно выделить четыре основных источника ошибок в процессе численного моделирования.

1. Погрешность исходной математической модели. Это очень важный источник ошибок, так как он является неустранимым. Например, второй закон Ньютона в дифференциальной форме не всегда дает корректные результаты математического моделирования, даже при отсутствии других источников ошибок математического моделирования. Анализ этих ошибок выходит за рамки настоящей статьи, поскольку относится к разным предметным областям математического моделирования (multi-physics, multi-discipline simulation).

2. Ошибки, связанные с неверным выбором численных методов и алгоритмов. Это устранимый источник ошибок, так как пользователям ПМК численного моделирования динамических систем не следует самому программировать решение вычислительных задач, а следует использовать готовые программы-решатели уравнений математических моделей из соответствующих ПМК или известных библиотек математических программ. Это устранимый источник ошибок математического моделирования.

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

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

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

Математические модели динамических технических систем необходимо получать на основе фундаментальных физических законов только в форме систем ДАУ, не разрешенных относительно производных, и решать эти системы без каких-либо преобразований и без получения «правой» части для производных в явном, аналитическом виде. При математическом моделировании динамических процессов в реальных технических системах и объектах состояние этих систем и объектов обычно рассматривают в пространстве дифференциальных переменных или в пространстве «переменных состояния» с получением в явном аналитическом виде «правой» части для производных этих переменных по времени, но этого недостаточно для достоверного и точного математического моделирования реальных технических систем и объектов, так как любой дифференциальной переменной состояния в технических системах обычно соответствует алгебраическая переменная. Например, в электрике и электронике дифференциальным переменным состояния — напряжениям на емкостях и токам через индуктивности — соответствуют алгебраические переменные — токи через емкости и напряжения на индуктив-ностях, в механике дифференциальным переменным состояния — скоростям тел определенной массы — соответствуют алгебраические переменные — силы инерции и другие параметры, поэтому состояние таких динамических систем и объектов следует рассматривать в пространстве дифференциально-алгебраических переменных. Основным физическим свойством алгебраических переменных является возможность идеального скачка значения этих переменных в бесконечно малый отрезок времени, в то время как для дифференциальных переменных состояния такие скачки невозможны, поэтому приведение систем ДАУ к системам ОДУ в нормальной форме Коши с преобразованием алгебраических переменных в дифференциальные переменные состояния физически неверно и полученная таким образом математическая модель динамических процессов в реальных технических системах и объектах будет физически недостоверна.

Эффективность численных методов решения систем ОДУ-ДАУ, НАУ и ЛАУ включает в себя два аспекта:

1) достоверность и точность получаемых решений данных уравнений;

2) затраты машинного времени и оперативной памяти на получение решений.

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

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

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

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

Программа-решатель систем ДАУ в библиотеке 8АББЬ рассматривает системы ДАУ в еще более расширенном координатном пространстве переменных, в котором к дифференциально-алгебраическим переменным добавлены производные дифференциальных переменных [4]:

где X — вектор координатного базиса дифференциальных переменных состояния размерностью т, У — вектор алгебраических переменных полного координатного базиса дифференциально-алгебраических переменных размерностью к, РХ = йХ/йг — вектор производных дифференциальных переменных по времени для расширенного координатного пространства переменных размерностью т,Ь — независимая переменная (обычно время); О — вектор-функция математической модели динамической системы размерностью т + к. Заданы начальные условия Х0 = X(0) и отрезок интегрирования

Новые алгоритмы для решения приведенной системы основаны на совместном решении систем НАУ Ог(Х,У, РХ,гг) = 0 и систем из т алгебраических уравнений численного интегрирования Н^ (X, РХ, Н) = 0,

сформированных на соответствующих стадиях методов интегрирования, относительно дифференциально-алгебраических переменных Х,У и производных дифференциальных переменных РХ (DABC методы Маничева-Глазковой) [2]:

= Нп йгзРХз — аг3Х] — ЬгХп-1 — НпСгРХп-1 = 0;

Хп = Х3; РХп = РХ3, г = 1. ,з, = з — ; Нп = (гп — гп-\) — п-й шаг интегрирования; йгз, (щ, Ьг,сг — параметры метода.

Параметры алгебраических уравнений численного интегрирования И (Х,РХ,Н) = 0 были получены на основе анализа пяти базовых классов задач для фундаментальных решений линейных неоднородных систем ОДУ. Было показано, что для достоверного решения всех пяти классов фундаментальных решений при больших значениях шага интегрирования (т.е. при невысокой математической точности интегрирования) численные методы решения систем ОДУ-ДАУ должны быть ЛЬ-устойчивыми, т.е. абсолютно (А-) устойчивыми строго в левой (Ь-ЬеА) полуплоскости комплексной плоскости устойчивости методов численного решения систем ОДУ-ДАУ [5]. При невысокой математической точности интегрирования шаг интегрирования может стать таким большим, что не ЛЬ-устойчивые методы интегрирования могут потерять устойчивость для некоторых фундаментальных решений. Область абсолютной устойчивости ЛЬ-устойчивых методов интегрирования показана на рис. 1.

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

Численное решение систем ОДУ-ДАУ во многих численных методах их решения сводится к многократному численному решению соответствующих систем нелинейных алгебраических уравнений (НАУ) и ЛАУ [5]. Высокий порядок таких систем и необходимость их многократного решения в процессе математического моделирования предъявляют жесткие требования к эффективности применяемых численных методов решения систем ОДУ-ДАУ и особенно ЛАУ.

Для решения жестких систем ОДУ-ДАУ, которым часто соответствует плохо обусловленная матрица Якоби вдоль траектории решения, рекомендуется использовать неявные методы интегрирования, которые сводятся к решению систем НАУ на каждом шаге интегрирования. Для получения решений систем НАУ с гарантированной компьютерной точностью эти системы следует решать только такими итерационными методами, которые в «точке» решения системы НАУ сводятся к решению системы ЛАУ с матрицей Якоби в качестве матрицы коэффициентов такой системы ЛАУ. Если не получать решения систем НАУ с гарантированной компьютерной точностью, то траектории решения систем ОДУ-ДАУ могут быть ошибочными. В библиотеке 8ЛББЬ используется метод Ньютона-Рафсона и решение систем НАУ и ЛАУ с гарантированной удвоенной компьютерной точностью языка Си (Си++) на каждом шаге интегрирования, т.е. с гарантированной компьютерной точностью (15 верных значащих цифр для всех элементов вектора

Рис. 1. Область абсолютной устойчивости (заштрихована) AL-устойчивых методов интегрирования

решений систем ЛАУ при вычислениях с удвоенной точностью на языке Си). Аналитически данная проблема не имеет решения, например, теоретически умножение квадратной матрицы с постоянными коэффициентами на обратную равно единичной матрице, но для плохо обусловленных матриц при вычислении на компьютере единичную матрицу мы не получим. Только многолетние вычислительные эксперименты позволили решить эту проблему в программах-решателях систем ЛАУ библиотеки SADEL на основе перечисленных методов вычислений с повышенной точностью.

При разработке математических программ на языке Си необходимо также учитывать особенности программирования арифметических операций с вещественными числами с плавающей точкой, так как именно такие операции используют упомянутые ПМК и библиотеки математических программ при решении систем ОДУ-ДАУ и ЛАУ. Институт инженеров по электротехнике и электронике (Institute of Electrical and Electronic Engineers, IEEE) разработал международные стандарты, которые описывают представление вещественных чисел с плавающей точкой:

— стандарт ANSI/IEEE 754:1985 определяет требования к реализации двоичной плавающей арифметики;

— стандарт ANSI/IEEE 754:2008 обобщает стандарт ANSI/IEEE 754:1985, допуская дополнительно, кроме двоичного, десятичное основание представлений мантиссы и экспоненты и произвольную длину машинного слова.

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

Стандарты IEEE754 определяют следующие основные форматы представления вещественных чисел с плавающей точкой.

1. С одинарной точностью (соответствует типам SINGLE PRECISION (32 двоичных разряда) или REAL*4 в языке Фортран и float в языке Си).

2. С удвоенной точностью (соответствует типам DOUBLE PRECISION (64 двоичных разряда) или REAL*8 в языке Фортран и double в языке Си), этот тип представления принят по умолчанию во всех упомянутых ПМК и стандартных библиотеках математических программ.

3. С расширенной точностью (условно говоря, соответствует типам REAL*10 (80 двоичных разрядов) в языке Фортран и long double в языке Си).

Формат с учетверенной точностью QUAD PRECISION (128 двоичных разряда) или REAL*16 в языке Фортран стандарт IEEE754 отдельно не определяет, поэтому в языке Си следует создавать специальные форматы для данного представления вещественных чисел.

При реализации вычислительных методов решения жестких систем ОДУ-ДАУ и плохо обусловленных систем ЛАУ не следует использовать вычисления с одинарной точностью, причем при решении плохо обусловленных систем ЛАУ следует использовать методы вычислений с повышенной точностью, если вычисления с общепринятой удвоенной точностью не обеспечат компьютерной точности результатов. При программной реализации формул неявного интегрирования жестких систем ОДУ-ДАУ не должно быть также арифметических операций деления на шаг интегрирования, чтобы не было ограничений из-за «машинного нуля» на значение минимального шага интегрирования [6].

Результаты решения тестовых и практических задач. На основе приведенных утверждений и научных результатов была разработана библиотека SADEL — библиотека программ-решателей на языке Си для численного решения жестких систем ОДУ-ДАУ и плохо обусловленных систем ЛАУ с гарантированной достоверностью и компьютерной точностью. В результате при невысоких требованиях к математической точности конечных результатов численного моделирования получаются только корректные, достоверные и точные результаты решения данных систем по сравнению с соответствующими программами-решателями из зарубежных библиотек и пакетов математических программ: LAPACK (Linpack), MAGMA, NAG, IMSL, Intel MKL, MATLAB, Mathcad, Maple, Mathematica), что показано в работе [2]. Например, с помощью данных программ удалось решить с гарантированной компьютерной точностью ряд тестовых плохо обусловленных систем ЛАУ, которые не решаются с обычной удвоенной точностью языка Си другими известными программами-решателями систем ЛАУ из указанных библиотек и ПМК. В качестве примера рассмотрим тестовую задачу с матрицей Гильберта (Hilbert matrix) 10-го порядка в качестве матрицы коэффициентов системы ЛАУ. Все элементы матрицы коэффициентов и вектора правых частей, как суммы соответствующих строк матрицы коэффициентов, были вычислены с удвоенной точностью языка Си. Абсолютно точное решение такой задачи — единичный вектор. При решении с удвоенной точностью этой тестовой задачи с матрицей 10-го порядка с помощью программы-решателя систем ЛАУ из библиотеки MAGMA (LAPACK-Linpack) был получен следующий результат: 1.000000000464697 0.999999960244827 1.000000840984605 0.999992393461859 1.000036137385782 0.999900979283788 1.000162025520190 0.999843779478675 1.000081852296234 0.999982030574678

Курсивом выделены неверные значащие цифры в решении. Соответствующие программы-решатели из библиотеки SADEL получили единичный вектор для этой тестовой задачи с точностью в 15 верных значащих цифр для всех элементов вектора решений данной системы ЛАУ.

Сравнение программы-решателя систем ДАУ в библиотеке SADEL с зарубежными программами-решателями систем ОДУ-ДАУ было проведено

для параметров методов интегрирования программ-решателей систем ОДУ-ДАУ, рекомендуемых для этих программ-решателей по умолчанию. Все программы-решатели систем ОДУ-ДАУ сравнивались при заданной невысокой относительной точности интегрирования eps = 0,001 (в ПМК MATLAB это точность, задаваемая по умолчанию). В таблице приведены результаты сравнения только наиболее трудных для современных программ-решателей систем ОДУ-ДАУ жестких систем ОДУ с многопериодным решением. Если программа-решатель систем ОДУ-ДАУ не решит достоверно и точно хотя бы одну из приведенных в таблице тестовых задач, то эту программу-решатель не следует использовать для моделирования динамических систем, математическая модель которых представляет собой жесткую систему ОДУ-ДАУ с многопериодным решением [2].

В таблице сравнивались только методы интегрирования программ-решателей систем ОДУ-ДАУ, рекомендуемые в соответствующих ПМК и библиотеках математических программ для решения жестких систем ОДУ-ДАУ. Знак минус означает невозможность получения решения или (в большинстве случаев) качественно неверный результат без всякого предупреждения пользователя о возможных ошибках. Например, на рис. 2 приведен результат качественно неверного решения теста 4 с помощью программы-решателя систем ОДУ-ДАУ неявным методом BDF из библиотеки C-Library NAG (а), а также правильное решение этого теста с помощью методов М2 и М3 из библиотеки SADEL (б). Предупреждений о возможном недостоверном решении в программе-решателе библиотеки C-Library NAG не было.

Далее приведен пример решения практической задачи химической кинетики [7]. Данная задача является жесткой за счет большого разброса порядков в константах скоростей реакции и собственных значений матрицы Якоби, коэффициент жесткости более 106. Для решения этой задачи сначала был выбран пакет математических программ Mathematica 8.0. Для проверки достоверности и точности полученного решения была выбрана Си-библиотека программ-решателей жестких систем ОДУ-ДАУ и плохо обусловленных систем ЛАУ SADEL.

Как следует из рис.3,а, метод, выбранный в пакете Mathematica 8.0 по умолчанию выдал колебательный график решения. Неявный метод М3, реализованный в библиотеке SADEL, выдал правильный график решения — рис. 3, б. Следует отметить, что после настройки параметров методов интегрирования, реализованных в пакете Mathematica 8.0, был также получен правильный график решения, однако большинство пользователей математических программ не являются профессиональными специалистами в численных методах и программах для решения систем ОДУ-ДАУ, поэтому достоверность и требуемая точность решения систем ОДУ-ДАУ должна быть обеспечена для параметров программ-решателей этих уравнений, рекомендуемых для этих программ-решателей по умолчанию.

Заключение. Библиотека Си программ SADEL для решения жестких систем ОДУ-ДАУ и плохо обусловленных систем ЛАУ является практическим

Сравнение программ-решателей систем ОДУ-ДАУ для жестких систем ОДУ с многопериодным решением

Тесты Шрограммы-решатели систем ОДУ-ДАУ 8АБЕЬ-Си библиотека 2010. Методы М2,МЗ МАТЬАВ 2007. Метод Оёе15в Мар1е 2007. Метод ЯозепЬгоск МаИтетаИса 8 2011. Метод ВОБ МАО С-ЫЬгагу 2012. Метод е 1’>Г)К ШБЬ С-ЫЬгагу 2012. Метод ВОБ

ТЕСТ 1. Уравнения Ван дер Поля ми = 10е + + + +

ТЕСТ 2. Уравнения Ван дер Поля ми = ю9 +

ТЕСТ 3. Высокодобротный фильт Ы = 1, кг = 1, ки = 0,01 + + +

ТЕСТ 4. Высокодобротный фильтр ы = ю-104, ки = 1, Ы = 1 + +

ТЕСТ 5. Локально неустойчивая система ОДУ ми = 10е + +

ТЕСТ 6. Моделирование свечения лазера + + + +

Рис.2. Решение задачи ТЕСТ 4 при TOL = 0,001:

а — метод BDF из библиотеки C-Library NAG, б — метод М3 из Си библиотеки SADEL

результатом многолетних научно-исследовательских работ авторов в качестве математического ядра платформы математического и компьютерного моделирования разнородных (multi-physics, multi-discipline) динамических технических систем и объектов (программный комплекс ПА10 (SADEL-PA10)) [2], превосходящей подобные зарубежные программные продукты MATLAB-SIMULINK, Maple-MapleSim, C-Library NAG и C-Library IMSL, Intel MKL в части решения жестких систем ОДУ-ДАУ и плохо обусловленных систем ЛАУ со стандартной удвоенной точностью вычислений языка Си.

Разработка программ-решателей систем ОДУ-ДАУ и ЛАУ на языке Си для библиотеки SADEL позволяет также сделать следующие выводы.

1. Корректные математические модели динамических процессов в реальных технических системах и объектах необходимо получать в расширенном дифференциально-алгебраическом координатном базисе переменных на основе фундаментальных физических законов в форме неоднородных систем ДАУ, не разрешенных относительно производных, и решать эти системы без каких-либо эквивалентных математических преобразований и без получения «правой» части для производных в явном, аналитическом виде.

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

Рис.3. График зависимости дифференциальной переменной х8 системы ОДУ от времени при TOL = 10-6: а — МаЛешаНеа 8.0; б — 8ЛББЬ

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

Новые научные результаты предполагается получить в направлениях разработки новых высокоэффективных неявных БЛБС методов интегрирования с полностью заполненными матрицами Б и Л в новых системах алгебраических уравнений интегрирования, разработки новых методов и алгоритмов автоматического выбора шага интегрирования для ЛЬ-устойчивых неявных методов интегрирования, а также эффективных алгоритмов и программ решения систем ЛАУ высокой и сверхвысокой размерности с повышенной точностью вычислений.

Работа выполнена при поддержке РФФИ, гранты № 12-07-00324/12 и № 12-07-31029.

1. Андронов А.В., ЖукД.М., Кожевников Д.Ю., Маничев В.Б. Библиотека математических программ-решателей на языке Си: SADEL // http://www.pa10.ru (дата обращения 20.10.2013).

2. Жук Д.М., Маничев В.Б., Сахаров М.К. SADEL — библиотека «сверхточных» решателей для программного комплекса ПА10 (SADEL-PA10) // Сб. науч. трудов МЭС-2012. М.: ИППМ РАН, 2012. С. 147-153.

3. IEEE Standard for Floating-Point Arithmetic 754-2008, IEEE, 2008 // http://iee-explore.ieee.org/xpl/login.jsp?tp=&arnumber=5223319&url=http%3A%2F%2Fiee-explore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5223319 (дата обращения 21.10.2013).

4. Норенков И.П., Трудоношин В.А., Федорук В.Г. Метод формирования математических моделей для адаптируемых программных комплексов анализа радиоэлектронных схем // Радиотехника, 1986. № 9. С. 67-72.

5. Жук Д.М., Маничев В.Б., Ильницкий А.О. Методы и алгоритмы решения дифференциально-алгебраических уравнений для моделирования систем и объектов во временной области // Информационные технологии. 2010. Ч. 1. № 7. С. 16-24. Ч. 2. № 8. С. 23-26.

6. Маничев В.Б. Новые алгоритмы для программ анализа динамики технических систем // Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 1996. № 1. С. 48 -56.

7. Valerii N. Snytnikov, Tatyana I. Mishchenko, Vladimir N. Snytnikov, Sergei E. Malykhin, Vasilii I. Avdeev, Valentin N. Parmon. Autocatalytic gas-phase dehydrogenation of ethane // Research on Chemical Intermediates, March 2012. Vol. 38. Issue 3-5. Р. 1133-1147.

[1] Andronov A.V., Zhuk D.M., Kozhevnikov D.Yu., Manichev V.B. Biblioteka

matematicheskikh programm-reshateley na yazyke Si: SADEL [Library of mathematical problem solvers in C: SADEL] Available at: http://www.pa10.ru (accessed 14.01.14) (in Russ.).

[2] Zhuk D.M., Manichev V.B., Sakharov M.K. SADEL — library «extremely-precise»

problem solvers for complex software PA10 (SADEL-PA10). Sb. nauch. trudov VI Vserossiyskoy nauchno-tekhn. konf. «Problemy razrabotki perspektivnykh mikro- i nanoelektronnykh sistem MES-2012 [Call. Papers of All-Russ. Sc.-Techn. Со^. «Development problems of advanced micro-and nanoelectronic systems»], Moscow, IPPM RAN Publ., 2012. pp. 147-153 (in Russ.).

[3] IEEE Standard for Floating-Point Arithmetic 754-2008, IEEE, 2008. Available at:

http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5223319&url=http%3A% 2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5223319 (accessed 28.12.2013).

[4] Norenkov I.P., Trudonoshin V.A., Fedoruk V.G. Method of mathematical models

formation for adaptable software systems of electronic circuits analysis. Radiotekhnika [Radioengineering], 1986, no. 9, pp. 67-72 (in Russ.).

[5] Zhuk D.M., Manichev V.B., Il’nitskiy A.O. Methods and algorithms for solving

differential-algebraic equations for simulation systems and objects in the time domain. Informatsionnye tekhnologii [Information technologies], 2010, no. 7, pp. 16-24 (ch. 1); no. 8, pp. 23-26 (ch. 2) (in Russ.).

[6] Manichev V.B. New algorithms for program analysis of the dynamics of technical

systems. Vestn. Mosk. Gos. Tekh. Univ. im. N.E. Baumana, Priborostr. [Herald of the Bauman Moscow State Tech. Univ., Instrum. Eng.], 1996, no. 1, pp. 48-56 (in Russ.).

[7] Snytnikov V.N., Mishchenko T.I., Snytnikov V.N., Malykhin S.E., Avdeev V.I., Parmon V.N. Autocatalytic gas-phase dehydrogenation of ethane. Research on Chem. Int., 2012, vol. 38, iss. 3-5, pp. 1133-1147.

Статья поступила в редакцию 26.11.2012

Владимир Борисович Маничев — канд. техн. наук, доцент кафедры «Системы автоматизированного проектирования» МГТУ им. Н.Э. Баумана. Автор более 80 научных работ в области математического обеспечения систем автоматизированного проектирования.

МГТУ им. Н.Э. Баумана, Российская Федерация,105005, Москва, 2-я Бауманская ул., д. 5.

V.B. Manichev — Cand. Sci. (Eng.), assoc. professor of «Systems of Computer-Aided Design» department of the Bauman Moscow State Technical University. Author of more than 80 publications in the field of mathematical support of computer-aided design systems. Bauman Moscow State Technical University, Vtoraya Baumanskaya ul. 5, Moscow, 105005 Russian Federation.

Дмитрий Михайлович Жук — канд. техн. наук, доцент кафедры «Системы автоматизированного проектирования» МГТУ им. Н.Э. Баумана. Автор более 80 научных работ в области математического обеспечения систем автоматизированного проектирования.

МГТУ им. Н.Э. Баумана, Российская Федерация,105005, Москва, 2-я Бауманская ул., д. 5.

D.M. Zhuk — Cand. Sci. (Eng.), assoc. professor of «Systems of Computer-Aided Design» department of the Bauman Moscow State Technical University. Author of more than 80 publications in the field of mathematical support of computer-aided design systems. Bauman Moscow State Technical University, Vtoraya Baumanskaya ul. 5, Moscow, 105005 Russian Federation.

Валентина Владимировна Глазкова — канд. физ.-мат. наук, ассистент кафедры «Автоматизация систем вычислительных комплексов» факультета «Вычислительная математика и кибернетика» МГУ им. М.В. Ломоносова. Автор более 10 научных работ в области вычислительной математики, программирования и систем автоматической категоризации текстовой информации.

МГУ им. М.В. Ломоносова, Российская Федерация, 119991, Москва, ГСП-1, Ленинские горы, д. 1, стр. 52.

V.V. Glazkova — Cand. Sci. (Phys.-Math.), assistant lecturer of «Automation of Computing Complex Systems» department of «Computational Mathematics and Cybernetics» faculty of the Lomonosov Moscow State University. Author of more than 10 publications in the field of computational mathematics, programming, and systems of automatic categorization of textual information.

Lomonosov Moscow State University, Leninskie Gory 1, stroenie 52, Moscow, 119991 Russian Federation.


источники:

http://function-x.ru/cpp_metod_gaussa.html

http://cyberleninka.ru/article/n/dostovernoe-i-tochnoe-reshenie-sistem-algebraicheskih-i-differentsialnyh-uravneniy-na-yazyke-si