Как сделать уравнение в питоне

Обновлено: 04.07.2024

для численного решения, вы можете использовать fsolve:

Если вы предпочитаете sympy вы можете использовать nsolve.

первый аргумент-это список уравнений, второй-список переменных, а третий-начальная догадка.

попробуйте этот, я уверяю вас, что он будет работать отлично.

к вашему сведению. как упоминалось выше, вы также можете использовать "приближение Бройдена", заменив "fsolve" на "broyden1". Это работает. Я сделал это.

Я точно не знаю, как работает приближение Бройдена, но это заняло 0.02 s.

и я рекомендую вам не использовать функции Sympy

вы можете использовать пакет openopt и его метод NLP. Он имеет много алгоритмов динамического программирования для решения нелинейных алгебраических уравнений, состоящих из:
goldenSection, scipy_fminbound, scipy_bfgs, scipy_cg, scipy_ncg, amsg2p, scipy_lbfgsb, scipy_tnc, bobyqa, ralg, ipopt, scipy_slsqp, scipy_cobyla, lincher, algencan, который вы можете выбрать.
Некоторые из последних алгоритмов могут решить ограниченную задачу нелинейного программирования. Итак, вы можете представить свою систему уравнения для openopt.НЛП () С такой функцией:

lambda x: x[0] + x[1]**2 - 4, np.exp(x[0]) + x[0]*x[1]

Я получил метод Бройдена для работы для связанных нелинейных уравнений (обычно с полиномами и экспонентами) в IDL, но я не пробовал его в Python:

scipy.оптимизировать.broyden1

найти корни функции, используя первый аппроксимация Якобиана Бройдена по.

этот метод также известен как"хороший метод Бройдена".

Для решение более содержательных математических задач существует модуль scipy pip .

Решение уравнений

В случае одной переменной

Функция возвращает кортеж, важнейшие поля: значение, сумма ошибок и эффективный ранг матрицы,

Поиск оптимальных параметров

Поиск происходит методом наименьших квадратов. Важный аргумент bounds принимает кортеж из двух списков. Содержит минимальные и максимальные ограничения для значений аргументов.

Фильтрация сигнала


Сглаживание апериодического сигнала

Подготовка данных

Сглаживание

Результат сглаживания


Интерполяция

Будем рассматривать случаи получения функции в неявном виде.

В случае одной переменной

Метод interp1d возвращает функцию от одной переменной.

В случае нескольких переменных

В случае нескольких переменных необходимо сначала выполнить гридинг — получение значений функции на регулярной сетке (метод griddata ), а после этого воспользоваться классом RegularGridInterpolator .

Кригинг

Отличие от других методов интерполяции — наилучшее линейное несмещенное предсказание промежуточных значений. В scipy криггинга нет, но он есть в пакете pykrige pip .

Построение функции плотности распределения


Анализ спектра

Будем разлагать значения сигнала на сетке в спектр с помощью быстрого преобразования Фурье.

Символьные вычисления

Помимо численных расчетов для Python существует достаточно простая система символьной математики sympy pip .

Примеры задач матанализа

Важно: при использовании символьных вычислений нужно использовать функции библиотеки sympy , а не стандартной библиотеки Python или NumPy/SciPy.

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International

Для фиксированного целого числа n у меня есть ряд 2(n-1) уравнений для уравнения следующим образом.

M(p) определен для 1 . N(p) определен для 0 . Также обратите внимание, что p - это просто целое число в каждом уравнении, поэтому вся система линейна.

Я использовал Maple, но я хотел бы настроить их и решить их в python сейчас, возможно, используя numpy.linalg.solve (или любой другой лучший метод). Я на самом деле хочу только значение M(n-1) . Например, когда n=2 ответ должен быть M(1) = 4 , я считаю. Это потому, что уравнения становятся

Если я хочу подключить n=50 , скажем, как вы можете настроить эту систему одновременных уравнений в python, чтобы numpy.linalg.solve мог их решить?

3 ответа

Обновлено: добавлена реализация с использованием scipy.sparse

Это дает решение в порядке N_max. N_0,M_max. M_1 .

Линейная система для решения имеет форму A dot x == const 1-vector . x - искомый вектор решения.
Здесь я упорядочил уравнения так, чтобы x было N_max. N_0,M_max. M_1 .
Затем я строю матрицу A - коэффициентов из 4 блочных матриц.

Вот снимок для примера примера n=50 , показывающий, как вы можете получить матрицу коэффициентов и понять структуру блока. Матрица коэффициентов A светло-синего цвета, постоянная правая сторона оранжевого цвета. Вектор искомого решения x здесь светло-зеленый и используется для обозначения столбцов. В первом столбце показано, из какого приведенного выше уравнения. строка (= уравнение) была получена:

Как предположил Хайме, умножение на n улучшает код. Это не отражено в таблице выше, но было реализовано в приведенном ниже коде:

Реализация с использованием numpy:

Решение с использованием scipy.sparse:

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

Который, кажется, соответствует другим ответам.

Это грязно, но решает вашу проблему, исключая очень вероятную ошибку при расшифровке коэффициентов:

Модуль math на примерах

Библиотека Math в Python обеспечивает доступ к некоторым популярным математическим функциям и константам, которые можно использовать в коде для более сложных математических вычислений. Библиотека является встроенным модулем Python, поэтому никакой дополнительной установки через pip делать не нужно. В данной статье будут даны примеры часто используемых функций и констант библиотеки Math в Python.

Содержание статьи

Специальные константы библиотеки math

В библиотеке Math в Python есть две важные математические константы.

Число Пи из библиотеки math

Первой важной математической константой является число Пи (π). Оно обозначает отношение длины окружности к диаметру, его значение 3,141592653589793. Чтобы получить к нему доступ, сначала импортируем библиотеку math следующим образом:

Читайте также: