Как преобразовать выражение Symboli c в функцию Numberri c - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно интегрировать систему уравнений, и главная проблема, с которой я столкнулся, заключается в том, что я не могу преобразовать уравнения одной переменной (в выражении symboli c, ее один символ) в функции.

Это минимальный рабочий пример:

rr = sy.Symbol('r')
exps = 4*rr+5
def f(rr):
    return exps

f(5) дает 4*rr+5

1 Ответ

2 голосов
/ 02 апреля 2020

Параметр 'rr' является переменной, отличной от глобальной переменной 'rr'. f(5) возвращает выражение с глобальной переменной 'rr' и не использует параметр.

Чтобы добиться того, что вы пытаетесь сделать, замените глобальный параметр значением локального параметра:

import sympy as sy

rr = sy.Symbol('r')
exps = 4*rr+5
def f(param_rr):
    return exps.subs({rr: param_rr}).simplify()

print(f(5))

Если вам нужно многократно вызывать функцию и не использовать выражения Symboli c в качестве параметра, есть lambdify, который преобразует функцию symboli c для обычной Python функции:

lam_f = sy.lambdify(rr, f(rr))
print(lam_f(7))

Обычно такая функция используется вместе с numpy для работы с целыми массивами в одном go:

import numpy as np

print(lam_f(np.arange(1, 101)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...