ios - 用户输入的 f(x) 可在 swift 中使用

标签 ios swift logic calculus

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

导数:

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 函数?我如何翻译三角函数、常量、指数等。好吗?

最佳答案

看起来很棒!在 Playground 上,说:

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

关于ios - 用户输入的 f(x) 可在 swift 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040099/

相关文章:

iphone - 无法在真实 iPhone 中调试

iphone - 找不到名为 'MainStoryboard_iPad' 的 Storyboard

swift - 尝试将图像保存到照片库时 iOS 10 应用程序崩溃

ios - 图像未显示在场景中

java - 所有可能的词

打印时 C 变量丢失值

ios - 无法使用 SegmentedControl 刷新 UITableView 数据

iOS 13.4 模拟器捕获光标问题

ios - 如何制作像音乐播放器一样的倒计时器?

java - 否定的相反变量名