?? d4r31.cpp
字號:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#include <stdlib.h>
#include <fstream.h>
#include <string>
#include <process.h>
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;
}
void main()
{
//program d4r31
//driver for routine plgndr
int i,j;
char text[20];
double nval,value,x,n,m,fac;
const double pi = 3.1415926;
fstream fin;
fin.open("d:\\vc常用數值算法集\\data\\fncval.dat",ios::in);
while ( strcmp(text,"Legendre")!=0 )
{
fin>>text;
}
fin>>text;
fin>>nval;
cout<<"Legendre Polynomials "<<endl;
fin>>text;
cout<<endl;
cout<<" n m x actual plgndr(n,b)"<<endl;
for( i = 1; i<=nval; i++)
{
fin>>n;
fin>>m;
fin>>x;
fin>>value;
fac=1;
if ( m > 0 )
{
for ( j= n - m + 1; j<=n+m; j++)
fac = fac * j;
}
fac = 2 * fac / (2 * n+1 );
value = value * sqrt(fac);
cout<<setw(5)<<n;
cout<<setw(6)<<m;
cout<<setw(12)<<x;
cout<<setw(17)<<value;
cout<<setw(17)<<plgndr(n,m,x)<<endl;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -