加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮北站长网 (https://www.0561zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何将函数作为一个参数放入现有函数中

发布时间:2022-12-15 13:33:51 所属栏目:MsSql教程 来源:未知
导读: 已采纳
0人赞同
你没有以这样的方式构造f函数,以便将其传递到你的分割函数中;你用f和variable尝试的业务很有创意,但与Python中的函数构造方式毫无相似之处。)
Here's how to do it:
fr

已采纳

0人赞同

你没有以这样的方式构造f函数,以便将其传递到你的分割函数中;你用f和variable尝试的业务很有创意,但与Python中的函数构造方式毫无相似之处。)

Here's how to do it:

from math import fabs
from typing import Callable
def bisect(
    a: float,
    b: float,
    y_tolerance: float,
    f: Callable[[float], float],
) -> float:
    """Bisection method."""
    # Mean for bisection.
    mean = (a + b) / 2
    # while-loop as long as y-value is bigger than wished tolerance.
    while fabs(f(mean)) > 10 ** (-y_tolerance):
        # Recalculate mean for each iteration.
        mean = (a + b) / 2
        # If sign of y-values changes, cut interval in half from left.
        if f(mean) * f(b) < 0:
            a = mean
        # If sign of y-values doesn't change, cut interval in half from right.
        elif f(mean) * f(b) > 0:
            b = mean
    # Return mean as approximation of the first root in the interval.
    return mean
print(bisect(-1, 0, 0.1, lambda x: 2 * x + 1))

作为lambda x: 2 * x + 1构建函数参数的替代方法,你也可以这样做。

def f(x: float) -> float:
    return 2 * x + 1
print(bisect(-1, 0, 0.1, f))

这两者几乎完全等同;lambda只是一个方便的快捷方式Mssq数学函数,用于在一个表达式中创建一个小函数。

Anthony Nork:

那么,事先定义函数或使用lambda是唯一或最简单的方法来使用数学表达式作为参数? 我不知道lambda,所以到目前为止非常感谢你!:)

Samwise:

并非所有的数学表达式都是函数,但对于一个函数(也就是你所说的情况)来说,是的,把它表达为一个函数而不是其他东西是最理想的。 (从技术上讲,你可以把它表达成一个字符串,然后写很多代码把这个字符串转换成一个函数,这样你就可以对它进行评估,或者类似的东西--但是只要把一个函数表示成一个函数,那就容易多了。)

Anthony Nork:

非常感谢你,这对我帮助很大。我的答案中的 "函数 "更像是 "数学表达"。对不起,有时我把一些词弄混了,我不是一个以英语为母语的人。)

(编辑:淮北站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!