• ベストアンサー

C言語でsin2.212xという関数を定義にしたがって微分したいのです

C言語でsin2.212xという関数を定義にしたがって微分したいのですがやり方がわかりません。 どなたか教えてください。 プログラムの完成系を教えてください。 それと解説もつけていただけるとありがたいです。 まだC言語はかなりの初心者ですので難しい表現などはなしで 説明していただけるとありがたいです。 また、df(x)/dxのdxを0.1,0.01としてそれぞれでの誤差を判定したいので dxは自分で好きな値を入力できるようにしたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

あちらのサイトにもありましたが http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1249712017 Cでは #define プリプロセッサを使うと見通しが良くなりますよ。 説明は簡単なので、見ればわかるでしょう。 /* source file: final29.c * compile: gcc final29.c -lm * execution: ./a.out */ #include <stdio.h> // printf() #include <math.h> // sin(), cos() #define f(x) sin(2.212*x) // 方程式 #define f1(x) cos(2.212*x) // 微分方程式 int main(void) { double x0, dx; double fx1, f_dx, gosa; // 各パラメータ設定 printf("微分する関数f(x)=sin(2.212x)について(f(x)のx,dx)に数値を代入してください。: "); fflush(stdout); scanf("%lf %lf", &x0, &dx); printf("point x= %f, \tdx= %f\n", x0, dx); // 微分値とその誤差を求める f_dx = (f(x0 + dx) - f(x0)) / dx; fx1 = f1(x0); printf("df(%.3f)/%.3f= %f, \t", x0, dx, f_dx); printf("f'(%.3f)= %f, \tgosa= %f\n", x0, fx1, f_dx - fx1); return 0; }

その他の回答 (1)

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.1

関数を微分すると言うのは普通のCプログラムでは実現できません。 近似的な方法であればたくさんありますし、微分した結果を表示するだけであれば手でやってから出せばいいです。 いずれにせよ、ここに書ききれるソースでは無いです。 >また、df(x)/dxのdxを0.1,0.01としてそれぞれでの誤差を判定したいので >dxは自分で好きな値を入力できるようにしたいです。 前半もそうですが、やりたいことをもうちょっと具体的に表現しないと意図しない回答が来ると思います。