python样条插值的实现(四)

上一次我们完成了对第二类边界条件的样条插值的函数编写,现在的问题是:如何求函数上的最大曲率

以我非常有限的python知识,想到了三种办法:

1.先将曲率的表达式给出,再给足x的采样点,得到x对应的曲率的值列表,利用列表的寻找最大值函数来找曲率最大值

当然这个方法弊端比较明显,首先是精度问题,精度肯定不是很高,并且计算量也较大,这里就不给出代码了(因为被我删了)

当然也可以利用取样比较再迭代的方法求得高精度,不过这是后话。

不过max函数有个小技巧,例如一个嵌套列表:[[1,50],[2,40],[5,100]],直接用max函数肯定是不能对其进行排序的,但我们可以:

res = max(cur_all, key=lambda x: x[1])

利用lambda函数就可以得到列表中第1个(列表从第0个开始)的最大值所在的列表,即返回值应当是

res=[5,100]

 

2.将曲率表达式得出后,利用函数求极值的方法求得最大值

首先我们知道,在样条插值函数里,曲率是连续的,导数分段连续,所以我们可以根据每段的导数正负性找到每段的最大值,再用列表求最大值函数找到全局最大值。

当然,这个方法的优缺点也很明显,优点是给出的最优值精确度较高,计算量相对也不是太大。缺点是实现起来较为复杂。

3.利用scipy库中的求局部最小值函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值