Nano Hash - криптовалюты, майнинг, программирование

большое количество линейных уравнений в MATLAB

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

x = sym('x',[1 3])
eqn = sym('eqn', [1,3])
eqn1 = 2*x1 + x2 + x3 - 2 == 0
eqn2 = 2*x2 -x2 -x1- x3 == 3
eqn3 = 2*x2+ x1 + 3*x3 == -10
Y = solve(eqn, x)

MATLAB не распознает мою переменную x1. Я решил ту же систему, используя следующий код:

syms x1 x2 x3
eqn1 = 2*x1 + x2 + x3 == 2
eqn2 =   2*x2 -x2 -x1 - x3 == 3
eqn3 = 2*x2+ x1 + 3*x3 == -10
X = solve([eqn1, eqn2, eqn3, eqn4], [x1 x2 x3])
structfun(@subs,X)

Но это бесполезно для очень большого числа уравнений. Что я делаю не так?

19.01.2020

Ответы:


1

Для этого вам не нужен символ (syms). Это стандартная линейная система уравнений, которую можно представить в виде: Ax = b где A = [2 1 1; -1 1 -1; 1 2 3], x = [x1; x2; x3] и b = [0; 3; -10]

Чтобы решить для x, вы должны сначала определить

A = [2 1 1; -1 1 -1; 1 2 3]

и

b = [0; 3; -10]

а затем решить с помощью

x = A\b

PS. В вашем вопросе есть некоторые странности, например. в уравнении 2 eqn2 = 2*x2 -x2 -x1- x3 == 3 я предполагаю, что вы опустили это просто до -x1 +x2 -x3 ==3.

PS2. Это довольно стандартный Matlab, вы можете найти много информации на стандартной странице mldivide. в документации вместе с множеством подобных вопросов здесь, на SO.

20.01.2020
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

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