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