質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

y=(X^2+3X+1)^4を「微分の定義」を使わないで傾きを求めるアルゴリズムについて。

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 5
  • VIEW 2,698

John-Doe.7

score 13

私自身でも今現在進行形で方法を考えて三角関数とかでなんとかなるんじゃないかと考えているんですが、もしよろしければ付き合っていただけないでしょうか?
ほんの気になったことなのですが、y=(X^2+3X+1)^4を微分の定義とかを使わないで傾きを求められないかと考えています。もちろん、微分って傾き求めるもんなんだから定義を使わないなら求まるわけねーじゃんって思う方もいると思いますが、自分なりに探求しています。
もし、こんな方法もあるよって方がいらっしゃいましたら教えていただけると嬉しいです。
同時進行ではありますが、y=(X^2+3X+1)^4の傾きを微分の定義を使わないで解くアルゴリズムをプログラムにできないかとも考えています。

編集<8/29>※プログラミングとは関係ない、ただの数学の問題なのであまりよくないかもです。
すいません。勉強していけばいくほどわからなくなってきたことがあるのですが、
ここで質問してもいいですか?
微分の勉強中に、例えばy=X^3+3X^2+1となったとします。
この式を微分するとy'=3X^2+6Xとなります。
そこで質問です。二次関数y'=3X^2+6Xに接線引いた場合、その接線はある座標Aにおける傾きを表しているのでしょうか?
そしてグラフy=X^3+3X^2+1に関して、座標Aにおいてグラフy=X^3+3X^2+1に接線を引いた場合、その接線の傾きは二次関数y'=3X^2+6Xに座標Aで接線を引いた場合に得られる傾きと等しいものなのでしょうか?
わっかりにくくて申し訳ないです。どうも微分には悩んでしまいます。

また、y=ax^3+bx^2+3を微分してy’=3ax^2+2bxを得たとします。
y’=3ax^2+2bxに座標Bに関して接線を引いた場合、その接線は何を表すのでしょうか?
プログラミングと関係ないですが、お答えしていただけると勉強になります。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/08/29 10:09

    微分を使わずに求める方法はあります。私の回答をご覧ください。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/09/01 11:35

    で、私の回答の方は理解できましたか?微分という概念を使わずに求める方法でソースコードの方も短い方だと思います。せっかく知恵を絞って書いたので理解できたなら解決済み、わからないところがあれば質問してくださると助かります。

    キャンセル

  • John-Doe.7

    2018/09/02 03:02

    まさか、微分を使わずにできるとは思っていませんでした。Stars1024さんのような方に会えて良かったです。はい、私事で申し訳ないのですが、少し忙しくしておりまして今気づきました。早速読ませていただきます。どうもありがとうございます。

    キャンセル

回答 5

+6

後半を見た感じでは、微分を理解できていないようなので、プログラムを書く前に、数学の先生に質問するとか、良い参考書を探すとかした方が良いと思います。

エッセンスだけ書いておきます。

f(x)が微分可能な関数であるという前提で、f(x)の導関数をf'(x)と書くと、
y=f(x)のグラフの、点(x0, f(x0))における接線の傾きは、f'(x0)です。

ここから微分と導関数の定義。

xの区間[x0, x0+h]を考えると、線分(x0,f(x0))-(x0+h,f(x0+h))の傾きは、(f(x0+h)-f(x0))÷h になりますが、これのh→0の時の極限値がx0における微分係数です。
xからその点での微分係数への関数が、導関数です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/05 02:07

    お礼のお返事が遅れて申し訳ありません。
    こんなに高評価が付いていると質問した価値があったと同時にotnさんのような方に回答していただけてよかったと感じました。(私の質問に高評価はついていませんが...。)

    キャンセル

checkベストアンサー

+4

まずは、追記であった質問の回答から

微分の勉強中に、例えばy=X^3+3X^2+1となったとします。
この式を微分するとy'=3X^2+6Xとなります。
そこで質問です。二次関数y'=3X^2+6Xに接線引いた場合、その接線はある座標Aにおける傾きを表しているのでしょうか?

まぁ、そうなりますね。正しくは「二次関数y'=3X^2+6Xの点Aにおける接線の傾き」です。ただ、その接線の傾きが知りたければy'=3X^2+6Xをもう一度微分して座標Aの
x座標を代入する必要があります。

また、y=ax^3+bx^2+3を微分してy’=3ax^2+2bxを得たとします。
y’=3ax^2+2bxに座標Bに関して接線を引いた場合、その接線は何を表すのでしょうか?

これは2回微分ですね。2回微分は「接線の傾きの微分。接線の傾きの変化率」を表しています。

関数の極大極小を議論するときに、y'=0となるところでyが極値で
あることをいいますが、y'=0だけでは接線の傾きが0であることを
いうだけで、極大か極小かはわかりません。

そこで、2回微分を取ってみると、微分係数が0になったときプラスから0に下がったのか、
マイナスから0に上がったのかがわかります。

たとえばy=x^2はx = 0のとき y' = 0、y''=2>0
これよりyのx=0における接線の傾きはx=0に向かって増加しながら
傾き0となりその後は傾きはプラスに転じます。

また、グラフを描くとき上に凸か、下に凸なのかを調べるためにf''(x)の正負を判別します。

 はい、本題に行きます。

微分という概念を使わずに微分係数を求める方法について説明します。
具体的に説明したいので、f(x) = (x ^ 2 + 3x + 1) ^ 4の 点(-1,1)における微分係数を求めたいと思います。

イメージ説明

要するに、重要なのはx = -1において重解を持つことです。重解といってもf(x)は8次式なので
2重解なのか4重解なのかはわかりませんが、少なくとも2重解を持つことは明らかです。
組み立て除法を2回行えば必ずaが求まります。(1回では求まりません)

要するに重要なのは「関数f(x)とその接線によってつくられた方程式は重解を持つ」です。


 さぁ、コードに落とし込もう

まず、図の青で囲んだところですが組み立て乗法の1回目では余りは0になります。
前述のようにaを求めるためには組み立て除法を2回行う必要があります。
コードに書く内容は実際に行う組み立て除法です。

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

#define BUFSIZE 256

int main(void)
{
    char buf[BUFSIZE];
    double x1;
    int i,j;
    int a;
    double data[8] = {1,12,58,144,195,144,58,12};

    printf("通る点のx座標を入力してください。");
    fgets(buf,BUFSIZE,stdin);
    x1 = strtod(buf,NULL);

    for(i = 0; i < 2; i++){
        for(j = 1; j < 8; j++){
            data[j] += data[j - 1] * x1;
        }
    }
    printf("微分係数:%f \n",data[7]);

    printf("--確認用--\n");
    printf("実際に微分すると微分係数:%f",4 * pow((x1 * x1 + 3 * x1 + 1),3) * (2 * x1 + 3));
    return 0;
}

整数を入力するようにしていますが、小数の時も求めたければ、適宜ソースを変更してください。
イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/05 16:45

    なぜ偶数重だけ?
    3重、5重もあり得ると思うが。

    キャンセル

  • 2018/09/05 16:49 編集

    あ、そうですね。共役な複素数についてばかり考えていて次の場合を忘れていました。
    重解の個数が2つm,nで 例えば、(x - m)^3 * (x - n)^5などの場合を忘れていました。

    キャンセル

  • 2018/09/05 17:19

    ご教授いただき感謝致します.

    キャンセル

+4

{目的,意図,etc}が良くわからない話ですが……
(別の質問のコメントを見るに,「微分するのが面倒だから数値微分で」的な話ではないのだと思われる)

(ネタっぽい話ですが)その曲線の絵を描いて画像処理的に求めるとか.
着目点付近の2次元空間を曲線が2分するとき,一方を黒,他方を白とした画像を描画すれば,Sobelフィルタみたいなので,着目点における輝度勾配方向として曲線の傾きを求められる.(精度とかは知らない)
(Sobelフィルタだって「微分」でしょ,とか言われるかな…)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/02 03:09 編集

    こんなにもユニークで価値のある考えと知恵がわかるなんて本当に貴重な時間を過ごさせていただいています。
    ほんとうにありがとうございます。教えてくださった方法、コードにできるか心配ですが、ちょっと頑張ってみます。
    できなかったらすいません...。
    ほんと微分とか苦手な自分にとっては微分を使わなくても同等の結果や問題が解決できることがいいのですがね。(でも心のどこかではみんなと同じように微分を考えられないのが嫌になります。なんで微分が自分だけできないくて特別というか他の方法を使っている自分に対して疎外感を感じます。数学ってこんな悲しいものじゃないはずなのに、愚痴ってごめんなさい。個人的にはどんな方法であっても自分なりに納得して同じような答え(近似でもいい)が導ければいいかな、なんて甘いですが考えています。私もみなさまみたいにいろんな考えができたら数学がもっと楽しいのに、ひとつの方法にこだわるから辛くなるんでしょうね。少し視野を広くしないと。

    キャンセル

  • 2018/09/02 10:00

    >円と曲線との交点群を求める
    多分コレとか,素直に微分するよりも大変なんですけどねw

    他の方の回答からの引用になりますが,
    >xの区間[x0, x0+h]を考えると、線分(x0,f(x0))-(x0+h,f(x0+h))の傾きは、(f(x0+h)-f(x0))÷h になります
    なる話はOKでしょうか?
    (落ち着いて絵を描いてみれば,斜めの線の傾きは 縦/横 だと言っている程度の話ですよね)
    これがOKであれば,極限がどうのという話を真面目に取り合わずに,hを適当に小さい値にして勝手に計算してしまえばそれで近似完了ですよね.(数値微分)

    キャンセル

  • 2018/09/03 00:06

    >xの区間[x0, x0+h]を考えると、線分(x0,f(x0))-(x0+h,f(x0+h))の傾きは、(f(x0+h)-f(x0))÷h になります
    なる話はOKでしょうか?
    はい、この程度ならば私でも理解できます。yの変化量/xの変化量なので。
    なるほど、公式にとらわれて難しく考えすぎていたようです。もっと簡単に難しいことを解決できるようになればいいです。
    どうもありがとうございます。

    キャンセル

+1

編集<8/29>
に関して……

(微分可能な)曲線 y=f(x) の,x=a における傾きは f'(a) で,
イコール 曲線上の点(a,f(a))に接する接線の傾きになります.

同様に,yを微分したy'に関しても,
(微分可能な)曲線 y'=f'(x) の,x=a における傾きは f''(a) で,
イコール この曲線 y'=f'(x) 上の点(a,f'(a)) に接する接線の傾きになります.
これ( f''(a) )は,大元の曲線 y=f(x) の立場(?)から見ると,
「『曲線y=f(x) の x=a における傾き』の傾き」ということになりますね.
(大雑把に言うと,曲線y=f(x)の x=a における"曲がり具合"のようなもの.)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/29 10:14

    グオオ… 書いてる最中にもっとまともな回答が…

    キャンセル

  • 2018/09/02 03:03

    私のような者の回答に答えてくださりいつもありがとうございます。fanaさんの回答はユニークで面白いのでいつも楽しく読ませていただいています。

    キャンセル

-1

傾きが求まったってことは微分が出来たってことと同値なんでは?

特定のXについてf(x)の傾きを計算するのは、プログラム言語的に可能ですが、数値計算誤差がどうしても入ります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る