10月 03

chitsd5u4v
前回のエントリの Legendre の多項式...微分したものを計算機に実装するにはどうしたらよいのか,なんてことを考えてたりしました.はじめは前回のエントリーで記述した関数から (P_{n}(x+\Delta x)-P_{n}(x)) のようなものを考えればいいのかなと思ったのですが,そんなことせずとも,単純に次のような漸化式を考えればいいのかな...と.

 \{P_{0}(x)\}' = 0,
 \{P_{1}(x)\}' = 1,
 \{P_{n}(x)\}' = \frac{2n-1}{n} \left( P_{n-1}(x)  + x\{P_{n-1}(x) \}' \right) - \frac{n-1}{n}\{P_{n-2}(x)\}' (n \geq 2)

こちらの方がはじめに考えた方法よりも正確な値が求められて良い感じがします.また前回のエントリのプログラムと組み合わせると次のように簡単に記述できそうです.

double dLegendreFunction(int n, double x){
  if(n==0)
    return 0;
  else if(n==1)
    return 1;
  else if(n>1){
    return (
	    (2*n-1)/(double)n*(legendreFunction(n-1,x)
					+x*dLegendreFunction(n-1,x))
	    - (n-1)/(double)n*dLegendreFunction(n-2,x)
	    );
  }
  else
    return 0;
}

あまり自信はありませんが.

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
preload preload preload