Решение системы полиномиальных уравнений, возможно, имеет бесконечные решения? - PullRequest
0 голосов
/ 10 августа 2010

Мне нужно решить систему полиномиальных уравнений, которая дает ошибку, поскольку она имеет бесконечные решения, и мне просто нужно несколько решений (любые 2 или 3), так как я могу их получить? , Могу ли я указать условие для решения, как решения, значения которых находятся в диапазоне от 1 до 10, так что я могу получить немного значения. Уравнения на самом деле длинные сложные, но бесконечные решения возникают из-за "sin (0)" в корне.

Ответы [ 8 ]

3 голосов
/ 10 августа 2010

Можно попытаться добавить в систему дополнительные уравнения, например x<sub>1</sub> = 0, x<sub>2</sub> = 0 и т. Д., Чтобы ограничить число возможных решений.

1 голос
/ 11 августа 2010

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

In[2]:= FindInstance[
 x^2 + y^2 + z^2 == -1 && z^2 == 2 x - 5 y, {x, y, z}, 2]

Out[2]= {{x -> -(46/5) - (6 I)/5, 
  y -> 1/10 (25 - Sqrt[-5955 - 1968 I]), 
  z -> -Sqrt[1/10 ((-309 - 24 I) + 5 Sqrt[-5955 - 1968 I])]}, {x -> 
   11/5 - (43 I)/5, y -> 1/10 (25 - Sqrt[6997 + 5504 I]), 
  z -> Sqrt[(1/5 - I/10) ((2 - 85 I) + (2 + I) Sqrt[6997 + 5504 I])]}}

Вы также можете задать неравенства, такие как 1 Уменьшение для дальнейшего ограничения возможных решений,как вы предложили.

1 голос
/ 10 августа 2010

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

Например: x ^ 2 = 4 имеет только 2 решения, но x ^ 2 = y ^ 2 может иметь бесконечно много решений, так как x = y и x = -y - обе строки, которые определяют, где будет выполняться это равенство, но на мой взгляд, оба могут рассматриваться как полиномиальные уравнения.


Полагаю, вы прочитали такие вещи, как РЕШЕНИЕ УРАВНЕНИЙ С ИСПОЛЬЗОВАНИЕМ MATLAB , MATLAB Programming / Symbolic Toolbox и Решение нелинейных уравнений , верно? У них могут быть некоторые идеи о том, как использовать Matlab для этого.

1 голос
/ 10 августа 2010

Функция FindRoot в Mathematica даст вам наиболее близкое решение к заданному значению, поэтому вы можете использовать FindRoot несколько раз с различными входами.

В любой другой математической программе должно быть что-то похожее, просто сейчас я наиболее знаком с Mathematica.

0 голосов
/ 25 марта 2011

Mathematica предоставляет довольно много возможностей, чтобы помочь вам.Например:

Plot3D[{0, x^2 - y^2}, {x, -1, 1}, {y, -1, 1},
 PlotStyle -> {Red, Green}]  

enter image description here

a = ToRules@Reduce[x^2 - y^2 == 0, {x, y}];
Plot[Evaluate@({x, y} /. {a}), {x, -1, 1}]

enter image description here

0 голосов
/ 25 октября 2010

Если система большая или существует много решений (изолированные или компоненты большого размера), вы можете использовать такие пакеты, как HOM4PS2.Если система (чрезвычайно) мала, вы можете решить ее символически, найдя так называемый базис Гробнера, который дает вам эквивалентный (но другой) набор полиномов, решения которых почти очевидны.Это могут сделать и Maple, и Mathematica 7.

0 голосов
/ 10 августа 2010

Аналогично Джонасу, если вы решите численно для f (x) = 0 в Matlab, вы можете использовать fsolve .Если у полинома много потенциальных выходов, вы вполне можете иметь возможность итерации к ним из разных начальных точек.

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

0 голосов
/ 10 августа 2010

Если вы численно решаете систему вида f (x) = 0, вы можете использовать FMINCON для добавления ограничений. Например, вы можете указать, что решение должно быть между 1 и 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...