微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与Python中的功能相反

如何解决与Python中的功能相反

假设功能

def my_function(a):
    return 2 * a

是否有Python方式获取函数,否则将其定义为:

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 举报,一经查实,本站将立刻删除。