plgndr.cpp
来自「工程算法 这是一个很有用的工程数值算法集锦」· C++ 代码 · 共 43 行
CPP
43 行
double plgndr(double l, double m, double x)
{
int ll,i;
double pmm,somx2,fact,temp,pmmp1,pll;
if( m < 0 || m > l || fabs(x) > 1.0)
cout<<"bad arguments";
pmm = 1.0;
if (m > 0)
{
somx2 = sqrt((1.0 - x) * (1.0 + x));
fact = 1.0;
for( i = 1; i<=m; i++)
{
pmm = -pmm * fact * somx2;
fact = fact + 2.0;
}
}
if (l == m)
{
temp = pmm;
}
else
{
pmmp1 = x * (2 * m + 1) * pmm;
if (l == m + 1)
{
temp = pmmp1;
}
else
{
for (ll = m + 2; ll<=l; ll++)
{
pll = x * (2 * ll - 1) * pmmp1 - (ll + m - 1) * pmm;
pll = pll / (ll - m);
pmm = pmmp1;
pmmp1 = pll;
}
temp = pll;
}
}
return temp;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?