Символьные вычисления. Решение с-мы ур-й
13.03.2021
Простой пример. Есть два ур-я.
Eqn1 = C*(A + m*G) + F;
Eqn2 = D*(B + (1-n)*G) + F;
m - неизвестно. F тоже не известно, но его можно исключить вычитанием одного ур-я из другого.
Eqn3 = Eqn1 - Eqn2;
S =...
Простой пример. Есть два ур-я.
Eqn1 = C*(A + m*G) + F;
Eqn2 = D*(B + (1-n)*G) + F;
m - неизвестно. F тоже не известно, но его можно исключить вычитанием одного ур-я из другого.
Eqn3 = Eqn1 - Eqn2;
S = solve(Eqn3,m,'ReturnConditions',true);
disp(S.m);
disp(S.parameters);
disp(S.conditions);
Это простецкий пример. В более сложных примерах с 10-ком ур-й далеко не всегда ясно, что там можно из чего вычесть и т.п. Вопрос: какой функцией символьной математики матлаб можно систему ур-й упросить исключая члены ур-я подобные F? Т.е. чтоб не самому думать, что вычитать и сколько раз, а чтоб передал систему и она упростилась, и из нее выкинулось все не нужное (F). Есть такой функционал?
Комментарии
Попробуйте solve https://www.mathworks.com/help/symbolic/solve.html
То, что вы написсали, - это решение СЛАУ методом Гаусса. Только зачем вам решать именно этим методом? Просто применение функции solve почему не устраивает?
Вот так он решает, когда я сам вычитаю уравнения и уже итог ввожу как параметр для ф-ции solve.
А когда я в solve передаю просто систему из ДВУХ уравнений (см.ниже), то так - не решает. Но ошибок не выдает. Выдает "пустые" результаты. Это означаект, что структура S возвращается но все поля в ней пустые.
Я пытаюсь добиться того, чтоб вместо Eqn3 = Eqn1 - Eqn2 в первом примере была какая-то ф-ция которая сама все упростит, и выдаст результат который уже передается в solve.
UPD: Причем это же даже не система уравнений, т.к. переменная-то одна - m.
Нет, там две переменных: m и F. Вы нашли только одну из них.
Спасибо. Уловил мысль.
Другой вопрос, если система уравнений избыточна, т.е. гапример 3 ур-я и 2 неизвестных параметра, то в результате также выдает пустую структуру. Как в таких случаях поступают?
В этом случае ищут минимальную невязку, то есть такое решение, которе давало бы ответ, минимально отличающийся от заданного. Чаще всего для поиска решения используют метод наименьших квадратов.
А л-ра есть по конкретно этому вопросу? (Хорошо бы с примераvи в matlab)
Материала по методу наименьших квадратов много, вам не составит труда найти его самомтоятельно.
Что же касается Матлаба, то здесь можно использовать псевдообратную матрицу. Коэффициенты системы записываются в виде матрицы, а свободные члены правой части системы - в виде вектор-столбца. Для нахождения решения нужно псевдообратную матрицу от матрицы коэффициентов умножить на вектор-столбец правой части.
Например, имеется система
Решение в Матлабе:
A=[2 -7;3 -7;3 -4];
b=[13;17;-14];
x=pinv(A)*b
x =
-10.8629
-5.8294
Спасибо.
Я так полагаю мне надо что-то почитать и я чего-то не понимаю, ибо подстановка решения в СЛАУ не дает тождество. Так и должно быть? И где про это почитать?
Я уже писал выше: "В этом случае ищут минимальную невязку, то есть такое решение, которе давало бы ответ, минимально отличающийся от заданного". Ибо для переопределённой системы невозможно получить точного решения.
Спасибо. Накопал Феликса Гантмахера. Почитаю.