python中如何反解函数_python-如何使线性函数逆

首先,最好使用def …语句而不是lambda来定义命名函数.请查看this SO问题及其答案以获取更多详细信息.但是,如果我正确理解要实现的目标,最好将线性函数定义为一个类(请参见下文).

是(谁)给的:

并且取决于斜率a和截距b.一个重要的后果是,您需要同时知道a和b才能以函数形式定义其逆.

在python中,例如,如果您定义一类线性函数并将反函数作为其方法之一,则可以实现此目的:

class f_lin:

def __init__(self, a, b=0):

self.a = float(a)

self.b = b

def __call__(self, x):

return self.a * x + self.b

def inv(self, y):

return (y - self.b) / self.a

现在您可以定义:

inches_to_meters = f_lin(0.0254)

并像这样使用它:

inches_to_meters(10)

Out[38]: 0.254

inches_to_meters.inv(0.254)

Out[39]: 10.0

inches_to_meters.inv(inches_to_meters(10))

Out[40]: 10.0

另外,您也可以为逆函数创建一个新对象,因为线性函数的逆函数仍然是线性函数:

class f_lin:

def __init__(self, a, b=0):

self.a = float(a)

self.b = b

def __call__(self, x):

return self.a * x + self.b

def get_inverse(self):

return self.__class__(1/self.a, - self.b/self.a)

然后您可以定义反函数,如下所示:

inches_to_meters = f_lin(0.0254)

meters_to_inches = inches_to_meters.get_inverse()

现在,您将线性函数及其反函数都作为对象:

inches_to_meters(10)

Out[43]: 0.254

meters_to_inches(0.254)

Out[44]: 10.0

inches_to_meters(meters_to_inches(10))

Out[45]: 10.0

这些只是两种方式,两种都没有按要求使用lambda.但是,我建议不要使用lambda进行此类操作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值