none
一定条件下での分子分母の合計値が最小になるプログラムの作成。 RRS feed

  • 質問

  • Visual basicについての質問です。連立方程式(例 0.3789=12*6/M, 0.0848=(15+2X)/M,0.0736=14/M)が与えられているとします。ここで以下の二つの条件を満たす、それぞれの連立方程式の左辺の値ががプラスマイナス0.03の範囲内で動かせて、かつXの値の分子と分母の合計の値が最小となるXの値を導き出せるプログラムを自作したいのですが、どのような流れでプログラミングすれば良いか教えてくださいませんか?

    2019年3月15日 0:20

すべての返信

  • 0.3789=12*6/Mと0.0736=14/MからMの動ける範囲が決まります。具体的には、
    0.3789±0.03 = 12.6/Mから求まるMの範囲と0.0736±0.03=14/Mから求まる範囲の論理和です。
    Mの範囲が求まれば、0.0848±0.03=(15+2X)/Mから、
    ((0.0848±0.03) * M - 15) / 2 = Xで、Xの範囲が求まります。これでMとXの範囲が求まったので、分母であるMとXの合計が最小になるのは、それぞれの範囲の最小値を加算したものになります。つまり求めるXの値はXの範囲の最小値となります。

    #何か質問文を読み違いしている気もするので、間違っていたらご指摘下さい。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年3月15日 1:50
    モデレータ
  • ご回答ありがとうございました。Mの範囲とXの範囲を求める方法は多分それで大丈夫だと思いますが。求めているのは、分母であるMとXの合計の最小ではなく、Xの範囲内において分子と分母の合計値が最小となるもの(例:0.45~0.53なら1/2)この部分をどのようにプログラミングしたらよいか分からなくて一番困ってます。
    2019年3月16日 0:23
  • プログラミングというよりも、その前の構想(アプローチ)ですが、

    - X=I/Jと表現する。
    - 例えばIを横軸、Jを縦軸にしたグラフを用意する。
    - Xの範囲内で許されるIとJの組み合わせの点をグラフに打つ。
    - 複数の点の中でI+Jが最小値になる点(つまりもっとも左下に位置する点)を選択する。

    これをプログラミングする、ってことかと。「線型計画法」で調べるといろいろ情報があると思います。

    • 編集済み 外池 2019年3月16日 2:28
    2019年3月16日 2:27
  • ご回答ありがとうございました。早速調べたのちにプログラミングさせて頂きます。いきづまったら再び質問させていただきますので、その時はまたよろしくお願いいたします。

    2019年3月16日 3:41