ページ 1 / 1
C言語による微分
Posted: 2014年11月12日(水) 13:52
by けん
C言語はじめてまだ初心者の者です。
C言語においての微分のやりかたを教えてください。
例えば
y=2x3+5x2+4x
を微分するコードを教えてください。
また、その微分した式のxについての解き方も教えてください。
経験者の方からすると簡単なものなのかもしれませんがお願いします。
Re: C言語による微分
Posted: 2014年11月12日(水) 14:14
by usao
>例えば
>y=2x3+5x2+4x
>を微分するコードを教えてください。
>また、その微分した式のxについての解き方も教えてください。
やりたいことがいまいち掴めません.
・ある決まった数式についてのみ何か計算するプログラムなのか,
実行時にどうにかして扱いたい数式を指定するのか?
・処理結果は何になるのでしょう?
「dy/dx = 6x2 + 10x + 4」という表示ができればよいのでしょうか?
それとも,あるxの値についての,dy/dx の値を求めることができれば良いのでしょうか?
Re: C言語による微分
Posted: 2014年11月12日(水) 14:27
by けん
usaoさん
dy/dx = 6x2+ 10x + 4
という結果は表示しなくていいですが、
最終的にはこの方程式の解を出力したいのです。
Re: C言語による微分
Posted: 2014年11月12日(水) 15:03
by usao
えっと,やりたいこと(プログラムの機能)というのが,
例えば,
「扱える数式の形は y = ax3+bx2+cx+d という3次の多項式だよ」という制約はあって
係数{a,b,c,d}の値を実行時に入力すると,それに応じた答えが得られる
といった感じのことをしたいという話なのか? みたいなところから尋ねております.
扱う数式の形状がこの例のように ある程度しっかりと(?)決まっているならば,
dy/dx = 3ax2 + 2bx + c
だということもその時点で決まるので,
単にこの微分した結果の式をそのままインプリメントしてしまうのが手っ取り早いと思いますし,
「いやいや,そうではなくて,
微分対象となる数式については y = f(x) という形だよというくらいしか制約がなくてf(x)の部分がどんなに複雑でも扱いたいのだよ」
みたいな話だとすれば,
じゃあ一体どうやってf(x)の内容をプログラムに入力するのだろう?とか,何か難しそうな話になりそうな気もしますし…
Re: C言語による微分
Posted: 2014年11月12日(水) 15:06
by usao
とりあえずプログラムに
コード:
//(実際の式はよくわからないけど)xの値に対応する y=f(x) の値を返す
double f( double x )
{
...
}
みたいな関数が存在していて,その時に あるxの値に対する dy/dx の値を得たい,
という感じの話であれば,
「数値微分」みたいな言葉で検索してみると良いのかも?
Re: C言語による微分
Posted: 2014年11月12日(水) 15:44
by けん
usaoさん
なんか難しく考えてました…
微分はわかったので、
dy/dx = 3ax2 + 2bx + cのように計算してその解(y=0となるxの値)を
求める方法を教えていただきたいです。
Re: C言語による微分
Posted: 2014年11月12日(水) 15:51
by usao
うーん,扱う数式の範囲に関する明瞭な回答を頂けないようですが…
dy/dx がxの2次式だ という限定された話で良いのであれば 単純に解の公式の式を実装すれば良いのではないでしょうか?
http://hooktail.sub.jp/mathInPhys/kainokoshiki/
Re: C言語による微分
Posted: 2014年11月12日(水) 16:09
by けん
なるほど!
解の公式か!
すみません、解決しました!
ありがとうございます。