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文件里也能实现的方法呢?不求甚解,请教高手~~ 展开
 我来答
zuiwuxin
推荐于2016-08-10 · TA获得超过184个赞
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:75.3万
展开全部
#!/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(需要替换的符号, 用来替换的数字).
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式