matalb初学者提问 望各位多多指教如何求一个函数的的极值一种方法是用fminbnd 先画图像 观察好极值点所在的区间后在这个区间内求最小值 或者最大值就是它的极值但是当极值点很多的时候,
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/29 01:50:43
![matalb初学者提问 望各位多多指教如何求一个函数的的极值一种方法是用fminbnd 先画图像 观察好极值点所在的区间后在这个区间内求最小值 或者最大值就是它的极值但是当极值点很多的时候,](/uploads/image/z/14863086-54-6.jpg?t=matalb%E5%88%9D%E5%AD%A6%E8%80%85%E6%8F%90%E9%97%AE+%E6%9C%9B%E5%90%84%E4%BD%8D%E5%A4%9A%E5%A4%9A%E6%8C%87%E6%95%99%E5%A6%82%E4%BD%95%E6%B1%82%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%E7%9A%84%E7%9A%84%E6%9E%81%E5%80%BC%E4%B8%80%E7%A7%8D%E6%96%B9%E6%B3%95%E6%98%AF%E7%94%A8fminbnd+%E5%85%88%E7%94%BB%E5%9B%BE%E5%83%8F+%E8%A7%82%E5%AF%9F%E5%A5%BD%E6%9E%81%E5%80%BC%E7%82%B9%E6%89%80%E5%9C%A8%E7%9A%84%E5%8C%BA%E9%97%B4%E5%90%8E%E5%9C%A8%E8%BF%99%E4%B8%AA%E5%8C%BA%E9%97%B4%E5%86%85%E6%B1%82%E6%9C%80%E5%B0%8F%E5%80%BC+%E6%88%96%E8%80%85%E6%9C%80%E5%A4%A7%E5%80%BC%E5%B0%B1%E6%98%AF%E5%AE%83%E7%9A%84%E6%9E%81%E5%80%BC%E4%BD%86%E6%98%AF%E5%BD%93%E6%9E%81%E5%80%BC%E7%82%B9%E5%BE%88%E5%A4%9A%E7%9A%84%E6%97%B6%E5%80%99%2C)
matalb初学者提问 望各位多多指教如何求一个函数的的极值一种方法是用fminbnd 先画图像 观察好极值点所在的区间后在这个区间内求最小值 或者最大值就是它的极值但是当极值点很多的时候,
matalb初学者提问 望各位多多指教
如何求一个函数的的极值
一种方法是用fminbnd 先画图像 观察好极值点所在的区间后在这个区间内求最小值 或者最大值就是它的极值
但是当极值点很多的时候,这种方法就比较麻烦了
我的另一种想法是用 diff求一阶导后再求其=0的点
但是不知道后面一种想法用什么函数能实现
例如
syms x
y='x^2*sin(x^2-x-2)';
如何求其极值
matalb初学者提问 望各位多多指教如何求一个函数的的极值一种方法是用fminbnd 先画图像 观察好极值点所在的区间后在这个区间内求最小值 或者最大值就是它的极值但是当极值点很多的时候,
怎么说呢,实际上转移到了函数求解的问题
>> syms x
y1=diff(x^2*sin(x^2-x-2))
y1 =
2*x*sin(x^2-x-2)+x^2*cos(x^2-x-2)*(2*x-1)
一阶导数很容易求,但怎么求其零点是关键
我搜集了一些方案,:roots()、polyder()、fzero()、solve()
前两个都只能解决多项式问题,对于非多项式的都无能为力
solve针对于线性方程组,可批量解决问题但对于非多项式的仍是无能为力
只有fzero()能求出上述函数的零点,但需要给定一个初值,且只能求出距所给初值最近的一个根
fzero('2*x*sin(x^2-x-2)+x^2*cos(x^2-x-2)*(2*x-1)',2)
ans =
1.5951
且,所取初值离真实根太远则求出错误根
>> fzero('2*x*sin(x^2-x-2)+x^2*cos(x^2-x-2)*(2*x-1)',10)
ans =
10.2436
>> fzero('2*x*sin(x^2-x-2)+x^2*cos(x^2-x-2)*(2*x-1)',100)
ans =
99.5866
可能是本人修行太浅,我得出了这样的结论,毕竟算法有局限性,不能较好的求解函数,造成不能较好的求解极值,只能通过图像人工的弥补
个人意见,姑且一观