【问题标题】:User inputed f(x) usable in swift用户输入的 f(x) 可在 swift 中使用
【发布时间】:2015-06-25 02:12:52
【问题描述】:

我正在快速研究一些微积分函数。我对他们所有人的主要障碍是采用某种用户输入系统并能够在函数中使用它。例如,如果我可以将用户输入的内容翻译成一个快速可接受的数学表达式,那么我可以使用非常简单的函数来完成所有我需要的基于微积分的事情:

导数:

func derivativeOf(fn: (Double)->Double, atX x: Double) -> Double {
    let h = 0.0000001
    return (fn(x + h) - fn(x))/h
}

限制

 func limit(fn: (Double)->Double, atX x: Double) -> Double {
    let modifier = 0.0000001
    return (fn(x + modifier)) 
}

等等..

我可以采取什么用户输入策略来快速明确我的微积分函数所需的 Double to Double 函数?如何翻译三角函数、常数、指数等。好吗?

【问题讨论】:

    标签: ios swift logic calculus


    【解决方案1】:

    看起来不错!在操场上说:

    func derivativeOf(fn: (Double)->Double, atX x: Double) -> Double {
        let h = 0.0000001
        return (fn(x + h) - fn(x))/h
    }
    
    derivativeOf({ (x) -> Double in
        return x * x
    }, atX: 5)
    

    给出 10.000001 的东西(这是一个近似值),这确实是正确的答案!看起来不错,但要利用 Swift 的尾随闭包,我会切换两个参数,所以 fn 参数位于末尾。

    那样,它会更像这样:

    func derivativeOf(atX x: Double, fn: (Double)->Double) -> Double {
        let h = 0.0000001
        return (fn(x + h) - fn(x))/h
    }
    
    derivativeOf(atX: 5) { x in
        return x*x
    }
    

    以这种方式阅读函数调用更加直观。

    我对如何让用户输入函数的想法是,在顶部有一个标签的文本字段,上面写着“给定 x,等式是:”

    并且用户会写“x * x”。但是,由于 Swift 是一种编译语言,我们不能只将字符串转换为可编译的代码。

    但是,我在想别的东西。您可以让他们写“5 * 5”并通过从字符串“5”强制向下转换为 Int 类型来计算导数,而不是让用户写“x * x”。只是一个想法。

    这也是一个合理的解决方案。我正在研究 Objective C 的实现,这是一种方法:

    Convert NSString of a math equation to a value

    【讨论】:

    • 嘿,谢谢!这绝对有帮助,但我的主要问题是因为我将让用户输入该功能。如何获取用户输入并将其变成微积分函数的可读参数?
    • 这是一个很好的问题,不幸的是,我没有很好的答案。但是,我确实对我的答案进行了一些编辑,以包含我的想法。
    • @DylanModesitt 嘿,我想让你看看这个:stackoverflow.com/a/8618319/3813411 并在需要时使用桥接头来解析你的方程!你也可以在这里查看 NSExpression:developer.apple.com/library/mac/documentation/Cocoa/Reference/…
    猜你喜欢
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2015-07-06
    相关资源
    最近更新 更多