
python, 符号计算(symbolic)怎么转换到数值计算(numerical)?比如说我有通
python,符号计算(symbolic)怎么转换到数值计算(numerical)?比如说我有通过符号计算得到式子,比如y=a*x,然后我想然后转成数值计算,比如a=1....
python, 符号计算(symbolic)怎么转换到数值计算(numerical)?比如说我有通过符号计算得到式子,比如y=a*x,然后我想然后转成数值计算,比如a=1.,x=linspace(0,1,50)。有一个方法是把这两个东西放在两个py文件,有没有放在同一个py文件里也能实现的方法呢?不求甚解,请教高手~~
展开
1个回答
展开全部
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File name: test2
# Project name: equation
"""
.. moduleauthor::
.. Module.. name test2 of procjet equation
"""
from sympy import *
def _checkNumerical(inputvalue, description='inputvalue'):
"""
:param inputvalue:
:param description:
:return:
"""
try:
inputvalue + 1
except TypeError:
raise TypeError(
'The {0} must be numerical. Given: {1!r}'.format(description, inputvalue))
def equation(a):
"""
"""
_checkNumerical(a)
y = Symbol('y')
x = Symbol('x')
y = x*a
return y
def evalf(expr, inputvalue):
_checkNumerical(inputvalue)
return expr.subs(expr,inputvalue)
def main():
expr = equation(2)
print expr
for i in range(0, 50, 1):
print evalf(expr, i)
if __name__ == '__main__':
main()
看看吧,有问题追问吧.
更多追问追答
追问
说实话我一点也看不懂,您能和我讲讲原理什么的吗?还有就是这样太麻烦了,我想就是有没有简简单单地将符号变量替换成数值变量?
追答
其实是可以放在一个函数里面的,问题的关键是变量要用Symbol(),这个函数定义一下,要不会报错,参数无所谓,是数字就行.
def evalfEquation(a, inputvalue_X):
_checkNumerical(a) #这个主要检查是不是数字,可以忽略
_checkNumerical(inputvalue_X)
y = Symbol('y')
x = Symbol('x')
y = x*a
return y.subs(x, inputvalue_X) 问题的关键是在这, y是你的定义的式子,你只需要把你里面要替换的(这里是x),替换成数字就好了,用函数subs(需要替换的符号, 用来替换的数字).
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询