内置的 Legendre() 计算给定度数的所有阶数的 Legendre 多项式。 如果你只需要一个给定的顺序,这是一种内存和计算时间的浪费(特别是对于大块数据)。 函数legendreP(l,m,x) 是legendre(l,x) 的替代品,只是它只计算所需的顺序。
多项式系数是通过分析计算的。 系数是从较早的系数递归计算的(以避免计算多个阶乘)。 对于数据数组 x 的任何结构,多项式是使用精确的 l/2 乘法和加法计算的。
多项式系数对于中度/高度可能非常大,从而导致精度降低。 对于这些情况,最好使用递归公式。 第二个可选输出基于最大多项式系数估计误差。
使用大小为 128^1 的数组(填充 -1 和 1 之间的随机数)检查所有阶数的每个订单的数字回报; 与内置的差异在数值误差范围内(相对误差~1e-15)。 一些订单也被检查了所有度数,直到 l=20。
这个函数比内置的要快
2021-12-11 19:54:25
4KB
matlab
1