関数のある区間における最大値を求めたい
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
お世話になります.
シンボリック関数に値を代入したときの, ある区間における最大値を求める方法についてお教え頂けないでしょうか?
例えばy=a*x^2という式があり, 任意のaかつxが任意の区間(e.g.[3 5])のとき, 関数yの最大値とそのときのxを知りたいと思っています.(この場合xが大きいほどyが大きくなるので区間の上限を代入すれば良いですが, 実際にやろうとしているのは非常に複雑な関数であります)
微分して0となるときを求めることで極値を出すという手法は調べて見つけたのですが, 今回の場合極値を持つとは限りませんのでこの手法は使えないと考えています.
現状は, 事前に任意の区間を細かく分割した配列(e.g. x=3:1e-3:5)を用意して, それを関数に代入して出てきた配列からmaxで最大値を取得しています.
しかしこの方法だと, 正確な解を求めるには配列のステップを細かく刻む必要があり, そうすると計算時間が長くなってしまいます.
この最大値を求める作業を多数繰り返しますので, なるべく一回あたりの実行時間を短くしたいと考えています.
なにかうまい方法があるはずと思うのですが, 頭が固く思いつきません.
何卒知恵をお貸しください.
0 Kommentare
Antworten (1)
Hernia Baby
am 27 Sep. 2021
Bearbeitet: Hernia Baby
am 27 Sep. 2021
逆数をとってその最小値を取るというのはいかがでしょうか
g = @(x) x^2;
f = @(x) 1/g(x)
x1 = 3;
x2 = 6;
xmin = fminbnd(f,x1,x2)
y = g(xmin)
3 Kommentare
Hernia Baby
am 30 Sep. 2021
返信遅くなりました。やってみましたが、x*sin(x)の場合、取り方によってはうまくいかないケースがありました。 複雑な式と伺いましたので、やってみてうまくいかなければ再度ご質問頂けたらと思います。
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!