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

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

ただいまの
回答率

91.02%

  • C++

    2928questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • OpenGL

    145questions

    OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

関数の接線について、、、

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 296

windowsaa

score 8

y = x × x × xという関数が存在した時、この関数を微分すると、接線の傾きが求めることができます。

接線を描画しようとする際、接線を描画するには2頂点を指定する必要があります。

どのように、すればかけますか?

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

+2

こんにちは。

直線は、その直線が通る2点を与えて決定できますが、傾きとその直線が通る1点を与えても決定できます。
任意の関数の任意の点について、その点を通り、かつ、その点の傾きが対象の曲線と等しい直線を決定できます。これは簡単と思います。
その決定した直線のパラメータを用いて描画すれば良いと思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/10/16 13:31

    接線は必ずしも交わってはいけないわけではないですよ。交わるときに交差角が0度なら接線です。

    キャンセル

  • 2017/10/16 13:34 編集

    majiponiさん。

    調べたら確かにその通りですね。フォローありがとうです。
    無用な記述を消しておきます。

    キャンセル

checkベストアンサー

+1

ベジェ曲線について。。。

に本件に応用できるヒントも含んでいる気がするのですが、残念ながらこの回答では質問者さんにとって有効ではなかった気がします。


Chironianさんが幾何的な考え方を答えておられますが、回答を生かすには以下のような数学知識が必要です。

  • 微分のそもそもの考え方
    xがΔXだけ変化したらyがΔYだけ変化するとき、傾きがΔY/ΔXと考えるとか。

  • 微分計算
    N次式、初等関数などの微分を筆算でできること。

  • 基本的な幾何計算
    ある点P0,P1の距離の計算式
    ある点P0,P1を通る直線の傾きの計算式
    ある点P0からP1への傾きdy/dxと距離Dが与えられたとき、P1の位置の計算式
    ある直線と別の直線の交点の計算式
    などなど

  • 1次あるいはN次方程式の解の式を筆算ではじき出すこと

これらは「できる前提」です。失礼ながら自分には質問者さんが上記のいくつかが少々怪しいのではないかと感じます。

karamarimoさんやepistemeさんは数式を示して回答しておられますが、それについても結局は上記の知識なしには式を眺めてもピンとこないのでは?

結局のところ上記について学び応用ができるようになればもはや本件のような質問は必要なくなります。

質問者さんがもし数学に苦手意識をお持ちなら「そういってもなぁ」と感じられるかも知れません。しかし、「こういうことするためのコードをちょうだい(A)」と言わずに「自分でコードを書けるようにする(B)」のであれば避けて通れないと思います。本サイトでの多くのみなさんの取り組み方は(A)ではなく(B)に近いので、学ぶことが順当に思えます。


ちなみに、プログラミング的な配慮という面でいえば、例えば「傾きdy/dxが大変大きくなる可能性があり、そのような直線を画面内いっぱいに書くときには無条件にx=Xlimitとの直線の交点を端点として求めるのではなく、傾きに応じてy=Ylimitを使ったり、あるいは直線上の点P0(画面内に含まれるとする)からの充分な距離Dだけ離れた点の座標を端点とする」といった話があります。これはGUIシステムに指定できる座標範囲に制限があるとか計算上の誤差といったプログラミング特有の話になりますが、これについても上に述べた数学的基礎の把握が必要で、それなしには「そういう問題がおきる」ことに気づけず、また「どう対処するか」が考えられない気がします。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

ナニがわからんのかわからんが、y = f(x) の x = t における接線の傾きは f'(t) やね。
だから接線は y = f'(t) + C となる。
この接線は (t, f(t)) を通るから f(t) = f'(t) + C。これより C が求まる。

あとは ふたつのx: x0, x1 をテキトーに用意してそれぞれに対する y0,y1 を求め、
2点 (x0,y0), (x1,y1) を結ぶ直線を引けばいい。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

接線を描画する範囲はどうしたいのでしょうか?
画面の左端から右端だと仮にすると、

(x0, y0)における接線の傾きをaとすると、接線の方程式は

y = a(x - x0) + y0

となるので、画面端のx座標を x = xl, xr とすると

(xl, a(xl - x0) + y0) から (xr, a(xr - x0) + y0) まで線を引けばいいということになります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

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

  • C++

    2928questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • OpenGL

    145questions

    OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。