首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用渐近进行区分

使用渐近进行区分
EN

Stack Overflow用户
提问于 2018-09-05 04:53:21
回答 2查看 1.5K关注 0票数 0

我试图区分函数z,但它给出了一个错误: raise TypeError(“无法将表达式转换为浮点型”)

TypeError:无法将表达式转换为浮点型

我不能找出我的错误。

代码语言:javascript
复制
from sympy import *
import numpy as np 
import math


T_wb =Symbol ('T_wb')
z =math.pow(10, 10.79574 * (1 - 273.16/T_wb)                    \          
    - 5.028 * math.log10(T_wb/273.16)                           \
            + 1.50475 * math.pow(10, -4)                        \
            * (1 - math.pow(10, -8.2969 * (T_wb / 273.16 - 1))) \
            + 0.42873 * math.pow(10, -3)                        \
            * (math.pow(10, 4.76955 * (1 - 273.16 / T_wb)) - 1) \
            + 2.78614)
zprime = z.diff(T_wb)
print (zprime)
EN

回答 2

Stack Overflow用户

发布于 2018-09-05 06:19:19

来自math模块的数学函数与来自sympy模块的数学函数不同。第一个处理数字(浮点数),第二个处理渐近表达式和符号,以便执行分析推导。因此,必须使用sympy.log而不是math.log

pow函数是不同的。它是一个内置的python函数(相当于操作符**)。所以它类似于其他运算符(+,-,*,/),不需要调用特殊的函数。例如,type(T_wb**2)给出了well sympy.core.power.Pow

代码语言:javascript
复制
import sympy as sp

T_wb = sp.Symbol('T_wb')

z =   pow(10, 10.79574 * (1 - 273.16/T_wb)) \
    - 5.028 * sp.log(T_wb/273.16, 10) \
    + 1.50475e-4 * (1 - pow(10, -8.2969 * (T_wb / 273.16 - 1))) \
    + 0.42873e-3 * (pow(10, 4.76955 * (1 - 273.16 / T_wb)) - 1) \
    + 2.78614

zprime = z.diff(T_wb)
print(zprime)

提供:

代码语言:javascript
复制
0.55857099968694*10**(4.76955 - 1302.850278/T_wb)*log(10)/T_wb**2 + 2948.9643384*10**(10.79574 - 2948.9643384/T_wb)*log(10)/T_wb**2 + 4.57049358434617e-6*10**(-0.0303737736125348*T_wb + 8.2969)*log(10) - 5.028/(T_wb*log(10))
票数 2
EN

Stack Overflow用户

发布于 2018-09-05 05:06:42

它在math.log10(T_wb/273.16)中的抛出错误T_wb是一个变量,当它试图计算对数时,无法将其转换为浮点数,因为它是一个变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52173852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档