複数の範囲を通る直線の求め方について

このQ&Aのポイント
  • 複数の範囲を通る直線の求め方についての質問です。上限のグラフと下限の折れ線グラフが与えられていますが、その上限と下限の中を通る直線の式(y=ax+b)を求めたいという要望です。可変点の数や存在しない場合の処理など、具体的な条件が挙げられています。
  • Javaでプログラムを作成し、機械的に解きたいと考えている方からの質問です。複数の範囲を通る直線の式を求める解法についてのアイデアや考えが求められています。また、上限と下限の中を通る直線が存在しない場合の処理についても言及されています。
  • 複数の範囲を通る直線の式を求めたいという要望を持つ方からの質問です。可変点の数や直線の傾きの絶対値が最も小さい直線を求める条件が挙げられています。Javaでの実現方法についてのアイデアや解法が求められています。
回答を見る
  • ベストアンサー

複数の範囲を通る直線の求め方について

上限のグラフと下限の折れ線グラフがあり、その上限と下限の中を通る直線の式(y=ax+b)を求めたいと思っています。 プログラムを作って機械的に解きたい(Java)ので解法を考えていたのですが、なかなか良い方法が思い浮かびません。 ・X=1,2,3,4に対して、それぞれ上限の点と下限の点があります。上限のみ、下限のみということはありません。 ・図では横軸が1~4の4点の例ですが、3点以上で可変にしたいです。 ・直線は上限、下限と接しても問題ありません。 ・グラフによっては、中を通る直線が存在しない場合もありますので、その場合は解法の途中で「無理」であることを認識したいです。 ・グラフによっては、中を通る直線の可能性が沢山あると思いますが、その場合は傾きの絶対値が最も小さい直線を求めたいです。(図で言うと、青い点線よりも青い実線の式を求めたい。) 解き方や解き方のアイデアがある方がいましたら教えてください。 条件は書いたつもりですが、不明点や曖昧な点がありましたら指摘頂ければ追記させていただきます。 宜しくお願いします。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.8

nのオーダーで計算する方法です。 まず、凹点を除きます。 残りの点だけでグラフを作ると、凸グラフになります。(正確には、下限は上に凸、上限は下に凸) この2つの凸グラフが重なっていれば中を通る直線は存在しません。 重なっていなければ中を通る直線は必ず存在します。 重なっているかどうかの判定まではnのオーダーで計算できます。 以下は、凹点を除いた凸グラフで、2つの凸グラフが重なっていないとします。 下限の凸グラフの点がk個だとすると、グラフの直線はk-1本。 まず、そのk-1本が中を通るかどうかを判定します。 中を通る直線が存在した場合は、そのうちの絶対値が最小の傾きの直線を求めます。 で、その直線を定めた2点の大きい方の点と、上限の点を結んだ直線のうち、中を通るもので傾きの絶対値が最小の直線が求める直線となります。 ただし、下限の点が下限の最大値の場合は、傾き0の直線についても中を通るかどうか判定します。 ここまでもnのオーダーで計算できます。 下限の凸グラフのk-1本の直線が全て中を通らない場合は、 下限の左側の直線から調べていったとして、 はじめのうちは、2点の右側で枠外になっていて、ある時点から2点の左側で枠外になり、それ以降はずっと左側で枠外になります。 つまり、枠外になるのが右側から左側に変わる境界点がただ1つ存在します。(左右両方とも枠外になることはない) で、その境界点と上限の点を結んだ直線のうち、中を通るもので傾きの絶対値が最小の直線が求める直線となります。 これも、境界点が下限の最大値の場合は、傾き0の直線についても中を通るかどうか判定します。 これもnのオーダーで計算できますから、全体でもnのオーダーで計算できるはずです。 ただし、直線が中を通るかどうかの判定方法にも#5で書いたような工夫が必要だと思います。 あと、計算量をできるだけ少なくしたいなら、調べる直線の順番を傾きの絶対値が小さい順にすることでしょうか。 #7さんへ 端短,Um,Bmどれも通らない直線が求める直線になる場合もありますから、結局は全ての2点を通る直線が候補になります。

yamadeen
質問者

お礼

これ本当にnのオーダーで出来んの?と思ったら各ステップ毎に検査範囲が狭められていて恐れ入ります。 アルゴリズムレベルまで落としていただいて申し訳ありません。 で、済みませんが説明がよく分からない部分がありまして、「枠外」とはどんなことでしょうか? > 下限の左側の直線から調べていったとして、 から4行分が分かりません。 下限の左側の直線というのは下限のx=1とx=2の直線のことですか?

その他の回答 (11)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

X=1,2,・・・,n とすると、点の数は2n個 中を通る直線があるとすれば、それは2n個のうちの2個の点を通るとしてよい。 なので、高々n(2n-1)本の直線を調べればいいのでは。

yamadeen
質問者

お礼

回答ありがとうございます! 回答頂いて気づいたのですが、複数の線が存在したときの切片の条件がありませんでした。 切片の条件は最も小さいものとしたいと思います。 それで例えば載せた図で上限が80一定だった場合、x=3の下限の点1点のみを通る傾き0の直線になると思います。 つまり必ず2点は通らないのです。 回答を参考にもう少し考えてみます。

yamadeen
質問者

補足

複数の線が存在したときの切片の条件がありませんでした。 切片の条件は最も小さいものとしたいと思います。

関連するQ&A

  • エクセル 散布図 横軸を円の角度にした時 繋げる?

    エクセルのグラフについて教えてください。 散布図の横軸を円の角度にするとします。 0°から360°までですが、実際は0°と360°は同じです。 ここで、例えば横軸の10°と350°にデータがある場合、散布図上にプロットされます。 それを「直線とマーカー」の散布図にした時に、横軸上で10°→350°の間に直線が惹かれるのですが、実際は 「下限値 ←10° <直線なし> 350°→上限値」このような表示が最短距離を結ぶ直線となるはずです。 このように表示させることは可能でしょうか? 教えて下さい。 是非、宜しくお願いします。

  • Excel折れ線グラフ、マーカー変えずに点線に

    Windows7、Excel2010で折れ線グラフを作成して、パワーポイント2010に貼り付けようとしています。折れ線グラフを点線にすると、マーカーの縁取りまで点線になってしまい困っています。マーカーの縁取りは実線に保ったままで、折れ線のみを点線にする方法はありますでしょうか?よろしくお願いいたします。

  • 近似線(直線)を書きたい。

    こんにちわ。 毎日100点満点のテストをしてそれを折れ線グラフにしています。 もちろん10点の時もあれば100点の時もあります。 これを月ごとに近時の直線を書いてレベルアップしているのかを 視覚的に見てみたいのですがどのようにすればよいかわかりません。 …というかこのような(ランダムな?)グラフに近似直線はかけるのでしょうか??

  • エクセルのグラフの作り方

    化学の実験結果としてグラフを作りたいのですが、私がほしいグラフが作れません。 縦軸を吸光度、横軸を酵素濃度にしてそれぞれの点をグラフに取り 平均を通るように直線のグラフにしたいんですが・・・。 縦軸、横軸は指定できず、直線にできず折れ線になってしまいます。 どなたか教えてください!!

  • エクセル折れ線グラフの線種を破線にできますか?

    エクセルで作成される折れ線グラフの線種は実線ですが、モノクロ印刷の場合は、破線(点線)や一点鎖線を使うと見やすいかと思います。 エクセルのグラフのデザインには、破線等の線種を変えるメニューがないので方法がわかりません。どなたかご教示いただけますでしょうか?

  • EXCELでのグラフ作成

    3つの系列(凡例?)があるデータで、縦軸(数値軸)が0~4.5まで、横軸(項目軸)が1~16までで、「データにマーカーがつけられた折れ線グラフ」を作成したいのですが、横軸の8と9の間のグラフを空白にしたいんです。ですから、1つのグラフ上で、折れ線は、1~8までと9~16までに分かれるようにしたいんです。できれば、8と9の間に縦に(縦軸と平行に)直線を入れたいです。 うまく説明できませんがわかるでしょうか?グラフは、横軸1~8までの所で3本の折れ線、折れ線が途切れて縦に線が入り、横軸9~16の所でまた3本の直線。このやり方を知ってる方、教えてください。よろしくお願いします。

  • 折れ線グラフで太い点線にする方法を教えてください。

    EXCELで折れ線グラフを作成しているのですが、線を太くした状態で点線に出来ず困っています。 線が細い場合はスタイルで点線を選択すればグラフ内の線も点線になりますが、太い場合は直線にしかなりません。 これは仕様なのでしょうか?太線で点線にする方法があれば教えてください。おねがいします。

  • エクセルのグラフ(サイズ・目盛り線の線種・凡例表示)について

    Excelのグラフについていくつかお尋ねしたいのですがよろしくお願いします。 1つのシートに折れ線グラフが10枚あります。 (1)それらのグラフのサイズ(プロットエリア、グラフエリア)を揃えたいです。10枚のグラフの縦軸横軸はバラバラです。それで、特にプロットエリアのサイズを変える方法がよく分かりません。数値で揃えることが出来れば一番良いのですが…。 (2)目盛線(縦軸ライン)で、-1~5の数値を扱っているグラフがあります。線種を点線に設定しますが、0のラインだけ実線にする方法はありますか? (3)凡例表示の順番を変える方法はありますか?グラフに上から表示される順に揃えたいです。

  • エクセル 近似直線の引き方

    プロットした点の中で明らかに直線に載らないデータがあります。 その点を入れないで近似直線を引くことは可能でしょうか? (グラフからその点を抜くことなく、近似直線を書く場合だけ無視するということです。) 回答よろしくお願いします。

  • エクセルのグラフで背景を横縞に塗り分けたい

    折れ線グラフの背景を オーストリアの国旗の様に塗り分けることは可能でしょうか。 (ドイツの国旗でもハンガリーの国旗でもいいです。) 要は 上限ラインと下限ラインの間だけ背景色を変えたいんです。 今はYが一定な横一直線のグラフを2本追加するか オートシェィプで半透明塗りつぶしの長方形を重ねるか しています。 Microsoft EXCEL 2002 SP3 です。