C言語関係掲示板

過去ログ

No860 テーラー展開で2のx乗-1を計算

[戻る] [ホームページ]
No.11110

c言語プログラムの問題を教えてください。
投稿者---tomoko(2003/12/12 16:00:30)


C言語のプログラムを作っているんですが前に進めません。
問題は、
2のx乗-1を、x=1、10の-2乗、10の-5乗、10の-8乗、10の-10乗、
10の-15乗、10の-20乗について計算するんですが、普通の計算ならできる
んですが、これをテーラー展開して、係数が0の項を除いて第2項まで計算
するんです。このプログラムを教えてください。ヒントだけでもいいです。
OSはリナックスで言語はCです。コンパイルはgccを使います。

No.11115

Re:c言語プログラムの問題を教えてください。
投稿者---たか(2003/12/12 16:26:12)


>C言語のプログラムを作っているんですが前に進めません。
>問題は、
>2のx乗-1を、x=1、10の-2乗、10の-5乗、10の-8乗、10の-10乗、
>10の-15乗、10の-20乗について計算するんですが、普通の計算ならできる
>んですが、これをテーラー展開して、係数が0の項を除いて第2項まで計算
>するんです。このプログラムを教えてください。ヒントだけでもいいです。
>OSはリナックスで言語はCです。コンパイルはgccを使います。

2^(x - 1) なのか 2^x - 1 なのかはっきりしませんが、ここでは2^x - 1
として計算しています。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double func(double x);

int main(void)
{
  double x[] = {1, 1e-2, 1e-5, 1e-8, 1e-10, 1e-15, 1e-20};
  int i, n = sizeof(x) / sizeof(x[0]);

  for (i = 0; i < n; i++) 
    printf("x = %e, 2^x - 1 = %e, func = %e\n", x[i], pow(2, x[i]) - 1, func(x[i]));
  
  return 0;
}

double func(double x)
{
  return x * log(2) + log(2) * log(2) * x * x / 2;
}


No.11127

Re:c言語プログラムの問題を教えてください。
投稿者---たか(2003/12/12 17:47:25)


#include <stdlib.h>
は不要なので取っておいて下さい。
尚linuxでgccという事は、コンパイル時に -lm オプションを忘れないよ
うにして下さい(math.h使用の為)。


No.11137

Re:c言語プログラムの問題を教えてください。
投稿者---tomoko(2003/12/13 00:35:23)


助かりました。参考にしてみます。