• ベストアンサー

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は自分で好きな値を入力できるようにしたいです。 前半もそうですが、やりたいことをもうちょっと具体的に表現しないと意図しない回答が来ると思います。

関連するQ&A

  • 極限をつかった定義式からの関数の微分がうまくいきません。

    極限をつかった定義式からの関数の微分がうまくいきません。 log(2x) sin2x sinx^2 ain(1/x) これらの関数の極限をつかった定義式からの微分がなんともうまくいきません。どなたか分かる方がいらっしゃいましたら解説をよろしくお願いいたします。

  • 逆関数の微分と全微分の違い

    「y=1+x*c^yで定まる陰関数yについてdy/dxを求めよ」という問題の 解き方で、逆関数の微分と全微分のどちらで解けばよいのか分かりません。 私は、f(x,y)=1+x*c^y-y=0とおき、dy/dx=df(x,y)/dx*1/{df(x,y)/dy}で解き dy/dx=c^y/{x*c^y-1}となったのですが、 全微分の解き方をすると、c^y*dx+{x*c^y-1}*dy=0より dy/dx=-c^y/{x*c^y-1}となり、私が出した答えと符合が逆になってしまいます。 この場合どちらの解き方で解けばよいのでしょうか? 見づらいとは思いますが、どうかよろしくお願いいたします。

  • 関数で微分する

    大学で経済学を学んでいるものです。参考書の中に ∫f (g(x)) dx をg(x)で微分してみたり、∫h(x)g(x) dx をg(x)で微分するにはどういう風にすれば よろしいのでしょうか? xによって定義された関数g(x)で微分するのは一見して難しいように思えるのですが、教えてください。 またそれに関しての参考書や学術書などがありましたらそれもぜひ教えてください。

  • yがxの関数でない時の微分の定義

    y=f(x)のときdy/dxの定義は, dy/dx=lim[Δx→0]{f(x+Δx)-f(x)}/Δx ですよね? これは,yがxの関数(一つのxに対してyが一つ)だから定義できます. では,yがxの関数でないとき(一つのxに対してyが二つ以上のとき),例えばx=y^2のとき,dy/dxの定義はどうなるんですか?

  • 関数の微分

    f(x)=x^2sin(1/x) (x≠0) , 0 (x=0) このような関数を微分した時、 f'(0)=0 となるらしいのですが、何故微分係数が存在できるのでしょうか。どのようにして 0 という値が求まったのでしょうか。 また、 f(x) が x=0 で 1 となった場合の f'(0) は存在するのでしょうか。存在するならば、その値はどうなるのでしょうか。

  • c言語の関数定義について

    次の関数定義を考える. int f(int x) {if (x > 0) {return x * f(x-1);} else {return 1;} } この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ.ただし,オーバーフロー(overflow) については考慮しなくてよい. ”この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ”って理解できません、どのように定義したいいか、ご教授お願いします。

  • 陰関数の微分について

    陰関数の微分についてよくわからないところがあるので質問します。 R^2の開集合U上で陰関数f(x,y)=0 (f:R^2→RでfはU上C^1級)が与えられているとする。 両辺の微分を取ると、(∂f/∂x)dx+(∂f/∂y)dy=0となる。という記述がありますが、いまいち理解できません。なぜなら、f(x,y)はU上定義されている関数で微分を取ることはわかりますが、右辺の0はここでは U上恒等的に0、すなわち関数として0という意味ではないので, 右辺の微分を取って等式とするのは変だと思ったからです。 ここを納得するにはどう考えればよいのでしょうか。

  • 微分の定義??

    次の問題をおしえて(>_<) >次の関数の導関数を、微分の定義にもとづいて求めよ。  (1) 1/x (2) (x+1)のn乗  (3) √x これって、ただ微分するだけではだめなの?

  • 三角関数の微分

    IIICをやってて少し気になったので 質問させてください “y=sin(3x) と表されるとき(dy/dx)を求めよ” という問題で私は2つの解答例が思い浮かびました [解答例1] u=3xと置くと (dy/du)=3 (du/dx)=u*cos(u) となり、合成関数の微分法の公式から (dy/dx)=(dy/du)*(du/dx) =(3)*{u*cos(u)} =3*3x*cos(3x) =9x*cos(3x) (答) [解答例2] 3倍角の公式から sin(3x) =3sin(x)-4{sin(x)}^3 よって (dy/dx) =[3sin(x)]'-[4{sin(x)}^3]' =3cos(x)-12[{sin(x)}^2]*[cos(x)] (答) となってしまい、同じ式を微分したのに 異なる解答が出てきます。 この場合どちらが正しいのでしょうか。 あるいはどちらも正しいのでしょうか。 回答をお願いします

  • 定義に従って微分

    定義に従って微分せよという問題で、 limを書かずに、f’(x)=f(x+dx)-f(x)/dxと書いたら0点にされました。 https://okwave.jp/qa/q4987103.html にあるように、dxと書けばlimはいらないと思うのですが、 dxと書いたとしてももlimをつけるべきですか?

専門家に質問してみよう