Источник коэффициентов, расчёт и обратная подстановка приведены полностью, без обращения к себестоимости конфигурации.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Свой серверный общий модуль. Основной блок — тело ВыполнитьПример() Экспорт; дополнительную функцию разместите отдельно в том же модуле.
Все коэффициенты собственной невырожденной системы заданы в памяти. Номера 0 / 1 — собственные ключи уравнений и переменных, не индексы результата.
Данные = СвоиКоэффициентыДвухУравнений();
Расчет = Новый РасчетСистемЛинейныхУравнений;
Расчет.ИсточникДанныхУзлов = Данные.Узлы;
Расчет.ИсточникДанныхСвязей = Данные.Связи;
Расчет.КолонкаУравненияВУзлах = "Номер";
Расчет.КолонкаУравненияВСвязях = "Номер";
Расчет.КолонкаПеременныеВСвязях = "Переменная";
Описание = Расчет.ОписанияСистем.Добавить();
Описание.КолонкаКоэффициентовВУзлах = "B";
Описание.КолонкаКоэффициентовВСвязях = "A";
Расчет.ТребуемаяТочность = 0.000001;
Расчет.ИспользованиеВычислительныхРесурсов = 1;
Решения = Расчет.РассчитатьСистемыЛинейныхУравнений(Истина);
X = Решения.Найти(0, "НомерУзла").Решение1;
Y = Решения.Найти(1, "НомерУзла").Решение1;
Сообщить("x=" + Строка(X) + ", y=" + Строка(Y));
Невязка0 = 2 * X + Y - 5;
Невязка1 = X - Y - 1;
Сообщить("Первое уравнение: " + Строка(Макс(Невязка0, -Невязка0) < 0.00001));
Сообщить("Второе уравнение: " + Строка(Макс(Невязка1, -Невязка1) < 0.00001));Тот же модуль: полный собственный источник коэффициентов
Функция СвоиКоэффициентыДвухУравнений()
Узлы = Новый ТаблицаЗначений;
Узлы.Колонки.Добавить("Номер", Новый ОписаниеТипов("Число"));
Узлы.Колонки.Добавить("B", Новый ОписаниеТипов("Число"));
Первая = Узлы.Добавить();
Первая.Номер = 0;
Первая.B = 5;
Вторая = Узлы.Добавить();
Вторая.Номер = 1;
Вторая.B = 1;
Связи = Новый ТаблицаЗначений;
Связи.Колонки.Добавить("Номер", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("Переменная", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("A", Новый ОписаниеТипов("Число"));
Строки = Новый Массив;
Строки.Добавить(Новый Структура("Номер,Переменная,A", 0, 0, 2));
Строки.Добавить(Новый Структура("Номер,Переменная,A", 0, 1, 1));
Строки.Добавить(Новый Структура("Номер,Переменная,A", 1, 0, 1));
Строки.Добавить(Новый Структура("Номер,Переменная,A", 1, 1, -1));
Для Каждого Коэффициенты Из Строки Цикл
ЗаполнитьЗначенияСвойств(Связи.Добавить(), Коэффициенты);
КонецЦикла;
Возврат Новый Структура("Узлы,Связи", Узлы, Связи);
КонецФункцииРазбор по шагам
Постройте две собственные таблицы коэффициентов.
Создайте описание и вычислите результат.
Найдите переменные по ключу и подставьте в исходные уравнения.
Как проверить результат
Ожидается x около 2, y около 1 и две невязки в допуске. Номер решения определяется единственным описанием системы.
Это числовая учебная задача, не запуск закрытия месяца. BSL и вычисления 1С при сборке HTML не выполнялись.
Ожидаемый результат
Получено решение с независимой проверкой обеих исходных строк.
На что обратить внимание
Для произвольной матрицы наличие единственного устойчивого решения не гарантируется; этот маленький источник выбран специально.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.