如何解决与Python中的功能相反
假设功能:
def my_function(a):
return 2 * a
def my_opposite_function(a):
return a / 2
具有如下语法:
my_opposite_function = something(my_function)
解决方法
即使我们坚持算术运算,not all functions are invertable.作为快速示例,我最近也实现了Callendar-Van Dusen方程,用于线性化铂RTD温度计的输出。该公式根据温度是高于还是低于0C而略有变化,因此没有简单的逆函数。此外,该方程式根据温度给出了温度计的电阻(因为它们可以用已知的温度校准探头并测量电阻),但是我需要取反值(给定温度的电阻)。因为没有方程式逆的解析解,所以我被迫使用一种近似技术(其他人提到了scipy.optimize
)。我之所以选择Newton's method是因为它很容易求解两个方程的导数(0C上下)。该代码在Lua中而不是python中,但是该示例仍应易于理解
local _CVD_root_finder = function(r0,R)
--The Callendar Van Dusen Equation for Platinum Based RTD Thermometers
--Newtons method root finder
local T = 0
local a,b,c = max31865._A,max31865._B,max31865._C
local i = max31865._root_find_iterations
for _ = 1,i do
if T < 0 then
local r = r0 * (1 + a*T + b*T*T + c*(T - 100)*T*T*T) - R
local slope = r0 * (a + 2*b*T + 4*c*(T - 75)*T*T)
T = T - r/slope
else
local r = r0 * (1 + a*T + b*T*T) - R
local slope = r0 * (a + 2*b*T)
T = T - r/slope
end
end
return T
end
,
这是一个有趣的问题,最初我会说不,因为该函数不会轻易公开其内部结构。如果函数不起作用,那么它们将不会像“可预测的”黑匣子那样运行。但是,有几种方法可以弄清底层逻辑,如果您打算这样做的话,也可以颠倒它:get the lists of functions used/called within a function in python
但这肯定不是正确的编程范例,即,如果更改了要反转的初始函数,然后对反转函数产生不可预测的影响,将会发生什么情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。