所以我们的想法是有一个函数,它返回一个具有随机系数的n次闭包。这对于比较根查找方法可能很有用,例如,我们可以自动创建要计算的函数。将任何操作转换为闭包的返回将是一个更强大的资源,所以如果有什么方法可以做到这一点,请告诉我。
代码应该如下所示:
use rand::Rng;
fn create_func(n: u8) -> impl Fn(f64) -> f64 {
let mut cst = vec![];
for _ in 0..n{
cst.push(rand::thread_rng().gen_range(0..=20) as f64);
// establish the coefficients by randomly generating them
}
move |x| cst[0]*x + cst[1]*x.powf(1.) + /*...*/ cst[n- 1]*x.powf(n as f64)
}
所以很明显,最后一部分并不是一种有效的方式来表达我们想要返回的闭包的其余部分,但我希望你能理解。
2条答案
按热度按时间eqqqjvef1#
你在寻找一个和,所以把你的序列变成一个迭代器,它将被求和。
对于每一项,需要
cst
(iter
)中的元素及其指数(zip
)。您可以从这些项(map
)中一次构造一个项,然后将所有项相加(sum
)。我还修正了你的术语数量(你的术语没有 x^0),并使用了
sample_iter
,这比每次都调用thread_rng
要快。因为所有的指数都是整数,所以我换成了powi
。xcitsw882#
多项式的其他表达方式如下:
和
这导致以下实现: