Самый простой способ решения математических уравнений в Python - PullRequest
21 голосов
/ 29 октября 2009

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

Для их решения просто использовать wolframalpha.com , веб-эквивалент Mathematica. Но это не обеспечивает комфорт и удобство оболочки iPython.

Существует ли простая библиотека для работы с линейными и квадратными уравнениями из оболочки питона?

Лично мне очень удобно использовать научный калькулятор Casio 991 MS. Я знаю, как устанавливать переменные, решать уравнения и многое делать. Мне нужен такой инструмент, который желательно использовать из оболочки ipython. Я удивлен, что не нашел ни одного. Я не достаточно впечатлен мудрецом; возможно я что-то упускаю.

Ответы [ 15 ]

0 голосов
/ 19 ноября 2011

Ну, я просто зашел на эту страницу случайно. Я вижу много предложений относительно этого и того программного инструмента, но действительно ли какой-либо инструмент дает ответ? Фактический ответ:

[a, b, c] = [200 375 425]

Как я это получил? Написав быструю программу на языке программирования Maxima, чтобы найти ее с помощью поиска методом "грубой силы". Написание заняло всего около 10 минут, поскольку я знаком с языком Maxima. Запуск программы занял несколько секунд. Вот программа:

euler_solve (): = блок ( [a, b, A, B, конец: 1000],

for a thru end do
    (
    for b thru end do
        (
        c: 1000 -a -b,
        if c < 0 then
            b:end
        else if a^2 + b^2 = c^2 then
            (
            A:a,
            B:b,
            a:end,
            b:end
            )
        )
    ),
return( [A,B,c])
);

Вы можете просто вырезать и вставить вышеуказанный код в пользовательский интерфейс wxMaxima, который я запускаю под Ubuntu, а не под MS Windows. Затем вы просто вводите имя функции: euler_solve (), нажимаете return, ждете несколько секунд, и выдается ответ. Эта особая проблема настолько проста, что для поиска можно использовать любой язык программирования общего назначения.

0 голосов
/ 07 июля 2011

Взгляните на это:

http://openopt.org/FuncDesignerDoc#Solving_systems_of_nonlinear_equations

Он чрезвычайно прост в использовании и достаточно мощный

0 голосов
/ 01 ноября 2009

Это зависит от ваших потребностей:

Если вам нужен интерактивный графический интерфейс, то sage, вероятно, является лучшим решением.

Если вы хотите избежать использования графического интерфейса, но по-прежнему хотите заниматься компьютерной алгеброй, то sympy или maxima могут удовлетворить ваши потребности. (sympy выглядит очень многообещающе, но ему еще предстоит пройти долгий путь, прежде чем они смогут заменить mathematica).

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

0 голосов
/ 01 ноября 2009

Подумав, я подробно рассмотрел sage и ясно, что является лучшим из доступных математических программ.

Просто некоторые из различных связанных с Python математических библиотек, которые он интегрирует, просто потрясающие.

Математические пакеты, содержащиеся в Sage:

Algebra GAP, Maxima, Singular 
Algebraic Geometry  Singular
Arbitrary    Precision
Arithmetic  GMP, MPFR, MPFI,    NTL
Arithmetic Geometry PARI, NTL,      
mwrank, ecm Calculus    Maxima, SymPy, 
GiNaC Combinatorics Symmetrica,     
Sage-Combinat Linear Algebra    Linbox,
IML Graph Theory    NetworkX Group     
Theory  GAP Numerical
computation GSL,    SciPy, NumPy,
ATLAS

Другие пакеты, содержащиеся в Sage:

Command line    IPython Database    ZODB,
Python Pickles, SQLite Graphical
Interface   Sage Notebook, jsmath
Graphics    Matplotlib, Tachyon3d, GD,
Jmol Interactive 
programming language  Python 
Networking  Twisted
0 голосов
/ 29 октября 2009

Я не думаю, что существует единый способ иметь дело как с линейными, так и с квадратными (или вообще нелинейными) уравнениями одновременно В линейных системах python имеет привязки к линейной алгебре и матричным пакетам. Нелинейные проблемы, как правило, решаются в каждом конкретном случае.

...