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