code golf — Решение систем уравнений с использованием правила Крамера
спросил
Изменено 7 лет, 4 месяца назад
Просмотрено 5к раз
\$\начало группы\$
Создайте алгоритм, использующий правило Крамера (с определителями матриц) для решения системы линейных уравнений. Код должен работать для «n» переменных.
Вы можете использовать любую структуру данных для хранения матрицы и возврата результата
Примечание: Также учтите, что возможная система может не иметь решений и может иметь бесконечно много решений 🙂 🙂 , поэтому, ваше решение должно учитывать это…
Если это так, просто распечатайте или верните «нет» или «бесконечно много».
Так как это код-гольф, побеждает наименьший код…
РЕДАКТИРОВАТЬ : Чтобы сделать это более сложным, вы не можете использовать встроенные в язык библиотеки матричных операций.
Кроме того, ваш алгоритм НЕ должен иметь дело с тем, как получить ввод, только как обработать ввод и вернуть правильный вывод. Как было сказано ранее, вы можете хранить этот ввод в любой структуре.
- код-гольф
- математика
\$\конечная группа\$
2
\$\начало группы\$
Mathematica 40
Постановка задачи по ссылке:
с = {{2, 1, 1}, {1, -1, -1}, {1, 1, 1}}; г = {3, 0, 0};
Алгоритм (пробелы не нужны):
i = 1; (a = s; a[[All, i++]] = r; Det@a/Det@s) & /@ r
результат:
{1, -2, 3}
Если система имеет бесконечные решения, она возвращает Indetermined
или ComplexInfinite
Обратите внимание, что Mathematica может решать линейные системы изначально. Среди других возможных способов вы можете использовать:
s~LinearSolve~r
или
Решить[s.{x,y,z}==r]
\$\конечная группа\$
1
\$\начало группы\$
Python3 — 310
по определению (m,n): если n==1: вернуть m[0][0] г=0 для r в диапазоне (n): к=м[:] дель к[р] z+=m[r][0]*(-1)**r*det([p[1:]для p в k],n-1) вернуть Z ш = длина (т) д = дет (ч, ш) если д==0:г=[] else:r=[det([r[0:i]+[s]+r[i+1:]для r,s в zip(h,t)],w)/d для i в диапазоне(w) ] печать (р)
Определитель вычисляется по формуле Лапласа, ничего особенного 🙂
Поместите матрицу и известные члены соответственно в массив с именами h и t, например:
h = [[2, 1, 1],[1, -1, -1],[1, 2, 1]] л = [3, 0, 0]
Что дает
[1.0, -2.0, 3.0]
\$\конечная группа\$
\$\начало группы\$
Я не уверен, какие части программы учитываются при подсчете баллов? (В настоящее время считается только алгоритм, как это сделал @belisarius. ) 9i*a(1,i)*d([a(w,1:i-1),a(w,i+1:конец)]) конец конец %%основной для я = 1: число (б) с=а с(:,я)=б х(я)=d(с)/d(а) конец %выход если есть (isinf (d)) «нет решений» иначе ~d(а) «бесконечные решения» конец Икс
Matlab, конечно, может решать линейные системы изначально:
a\b
\$\конечная группа\$
3
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie
Технологический центр DuPage — Решение систем уравнений
в электронике и технике. Например, при использовании Законы Кирхгофа (KCL и KVL) для анализа цепи вы в конечном итоге придёте к системе уравнений контура надо решить за ТОКИ I 1 и I 2 . Эти два неизвестных решение для сети, созданной Кирхгофом Законы.
Ссылки на Кирхгофа Законы
Кирхгофа Закон о напряжении
- Активный Эксперимент 1
- Активный Эксперимент 2
- Активный Эксперимент 3
- Активный Эксперимент 4
- Активный Эксперимент 5
Согласно диаграммам справа СУММА Условия напряжения в петлях должны быть НУЛЕВЫМИ. три разных тока I 1 , я 2 и я 3 с I 3 = I 1 + I 2 . Шаги к решению уравнений закона Кирхгофа. 2. Решить одновременные уравнения относительно неизвестной количества. я 1 и I 2 Решение для переменных описано ниже. |
Цикл 1 — Цикл 2 = 0 |
Система уравнений имеет одно решение.
Этот решение представляет собой набор упорядоченных пар вида (x, y), которые удовлетворяет двум или более уравнениям. Система уравнений обычно имеет (стандартную) форму. Это полезно расположить (переписать уравнения системы) так, чтобы стандартная форма: AX + BY = C
DX + EY = F
и одна упорядоченная пара (x,y) удовлетворяет этим двум уравнения.
Или в электронике
А I 1 + B I 2 =
C
D I 1 + E I 2 =
Ф
и одна заказанная пара ( I 1
Пример:
Уравнение 1. ) 3I 1 + I 2 = 14 |
Используя пример, мы хотим найти способ сделать коэффициент либо I 1 либо я 2 равны, чтобы мы могли изолировать другую переменную и решить для нее. Попробуйте умножить целиком Уравнение 1. на «3», так что у нас есть
Уравнение 1.
) (3)3 I 1 + (3) I 2 =
(3)14 |
Уравнение 1.
) 9 I 1 + 3 I 2 =
42 |
7 I 1 = 35
и так,
I 1 = 5
Вставьте этот I 1 = 5 обратно в
либо уравнение 1 или уравнение 2 и тогда вы сможете решить для
X.
Подставим в уравнение. 2.
Уравнение 2. ) 2 I 1 +
3 I 2 = 7 |
Интерактивный
Решатель для I 1 и I 2
Уравнение 1. ) 3I 1 + I 2 = 14 |
I 1 + I 2 =
I 1 + I 2 =
I 1 = | |
I 2 = |
топ
Системы уравнений относительно x и y и СОЛВЕР
Система уравнений имеет одно решение. Этот решение представляет собой набор упорядоченных пар вида (x, y), которые удовлетворяет двум или более уравнениям. Система уравнений обычно имеет (стандартную) форму. Это полезно расположить (переписать уравнения системы) так, чтобы стандартная форма:
AX + BY = C
DX + EY = F
и одна упорядоченная пара (x,y) удовлетворяет этим двум уравнения.
Одним из способов решения этой системы уравнений является построение графика оба уравнения (не забудьте установить y = уравнение) и обратите внимание на пересечение линий, которые нанесены на график. Этот точка пересечения — это упорядоченная пара, представляющая решение.
Вы можете попробовать это вручную на бумаге или с помощью графика. утилита, такая как графический калькулятор, или даже доступный инструмент В интернете.
Попробуйте этот пример, изобразив его в виде графика:
Уравнение 1. ) X+ 2Y = 10 |
Используя тот же пример:
Уравнение 1. ) X+ 2Y = 10 |
Попробуйте умножить все уравнение 1. на «2», чтобы мы есть
Уравнение 1. ) (2)X+ (2)2Y =
(2) 10 |
Уравнение 1. ) 2X+ 4Y = 20 |
5Г = 10 |
Уравнение 2. ) 2X — Y = 10 |
Попробуйте численно, введя значения здесь (не забудьте поставить «-» для отрицательного знака. ), а затем нажмите Кнопка «Решить».
Х + Д =
Х + Д =
х = | |
Д = |
Решатель: просто Введите значения коэффициента и нажмите решить
Х + Д =
Х + Д =
х = | |
Д = |
Матрицы и правило Крамера для решения Система уравнений
Решения систем уравнений вида
AX + BY = C
DX + EY = F
Можно найти с помощью далее:
Х = Д =
(AE — BD)
(AE – BD)
Этот метод получен из определителей матриц которое можно составить из системы уравнений
Напомним, что матрица A имеет вид
[А] = | | а | б | |
| с | д | |
a*d — c * b = определитель A
Решить систему вида
AX + BY = C
DX + EY = F
1.) Найдите определители следующие матрицы.
[А] = | | а | б | |
| д | е | |
[А х ] = | | с | б | |
| ф | е | |
[А и ] = | | а | с | |
| д | ф | |
2.