テイラー級数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たろぉ

テイラー級数

#1

投稿記事 by たろぉ » 18年前

e^x=1+x/1!+x^2/2!+x^3/3!+・・・
上記に基づき、e^xの値を計算するプログラムを作成する。forループ whileループ do-whileループ を使う時は、再帰関数によって実現する。仕様は以下の通り。

<<仕様>>
1.xの値を入力し、標準関数 exp() を用いて、比較のための e^x 値を求める。
2.上記式における項数を入力し、テイラー級数による e^x の近似値を求める。


以上です。
長々とすいません。
あまり知識がないので…。
教えて頂ければ幸いです。

管理人

Re:テイラー級数

#2

投稿記事 by 管理人 » 18年前

以下の式を数学の式だと思ってください。
例えば、階乗の定義はこうなっていますよね。

	f(n) = f(n-1) * n	(n>0)
	     = 1		(n==0)

これをそのまんまプログラムで書けばいいんです。

int	f( int n )
{
	if( n>0 ) 
		return	f(n-1) * n;
	
	else if( n==0 )
		return	1;
	
}

これが階乗を計算するプログラムです。
こういう要領でまず漸化式のような数式を考えてから実装してみてください。
(引数nは0以上の数であることに注意してください。)

toyo

Re:テイラー級数

#3

投稿記事 by toyo » 18年前

1+x/1!+x^2/2!+x^3/3!+・・・
の部分をプログラムにすればいいんです
無限級数ですが x^n/n! は0に収束するので適当に小さくなった時点で打ち切ればよいでしょう
具体的にはdouble型で計算するとして 1e-08 より小さくなったら終了でよいと思います。
whileループの例として
double myexp(double x)
{
	double EPS = 1e-08;
	double d = 1.0, s = 1.0, e = 1.0, diff;

	while (1) {
		d = ??; /* x^n */
		s = ??; /* n! */
		diff = d / s; /* x^n / n! */
		e += diff;
		if(diff < EPS) {
			break;
		}
	}
	return e;
}

toyo

Re:テイラー級数

#4

投稿記事 by toyo » 18年前

項数は入力するんですね
よく読んでいませんでした

閉鎖

“C言語何でも質問掲示板” へ戻る