現在、学校であるプログラムについて作る課題をやっているのですが、
調べても解決できないので質問させていただきます。
ある式があり、簡単に書くと
(x+a)が100以上では、目標値=2log(x+a)+3log(4x+b)+5
(x+a)が100以下では、目標値=7log(x+a)+8log(4x+b)+9
です。a,bは別の計算からの値です。このときのxの値を求める計算をしたいと考えています。
今まではExcelでやっている時は上の2式をifで繋いで、ゴールシークを使い求めていました。
そこでpythonを用いてif文で繋いでいる式の逆算方法を教えて頂きたいです。よろしくお願いします。
※追記
言葉足りずだったので修正しました。
pulpなどを用いて逆算する場合だとxやa,bに対して制約条件が成り立つと考えています。
間違っていたら申し訳ありません。
今回は出てきた結果について制約条件をつけて
制約条件に対して式が変化するというものです。
様々なライブラリを見てみましたが、なかなか見つからない状況です。
Excelでは、まずC7=B7+20とし、
D7=IF(C7>20,2LOG(C710)+3LOG(4C7+20)+5,7LOG(C7+3)+8LOG(4*C7+20)+9)としています。
ゴールシークを実施する場合D7を計算するものをD7、目標値を20、変化させるセルをB7としています。
結果B7=-21.2908981、D7=20.00000574と出ます。
pulpは確かに線形しかできないとあったので、
pyomoというものでもやってみましたが、
“出てきた結果について制約条件をつけて
制約条件に対して式が変化するというもの”のところで詰まっています。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー