Как сделать уравнение в питоне
Добавил пользователь Morpheus Обновлено: 10.09.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 в Python обеспечивает доступ к некоторым популярным математическим функциям и константам, которые можно использовать в коде для более сложных математических вычислений. Библиотека является встроенным модулем Python, поэтому никакой дополнительной установки через pip делать не нужно. В данной статье будут даны примеры часто используемых функций и констант библиотеки Math в Python.
Содержание статьи
Специальные константы библиотеки math
В библиотеке Math в Python есть две важные математические константы.
Число Пи из библиотеки math
Первой важной математической константой является число Пи (p). Оно обозначает отношение длины окружности к диаметру, его значение 3,141592653589793. Чтобы получить к нему доступ, сначала импортируем библиотеку math следующим образом:
Читайте также: