| 查看: 316 | 回复: 1 | |||
| 当前主题已经存档。 | |||
[交流]
【原创】请问matlab里如何求一个局部极小值
|
|||
| 请问我想从一个初始点x出发,用局部搜索找到x点最近的局部极小点,有没有算法包可以直接调用。 |
» 猜你喜欢
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
leolau0318
木虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 2940.8
- 散金: 130
- 红花: 1
- 帖子: 507
- 在线: 35.5小时
- 虫号: 550872
- 注册: 2008-04-25
- 专业: 数论
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
bslt(金币+2,VIP+0):感谢交流! 11-10 08:10
bigfish413(金币+10,VIP+0):谢谢 12-4 10:50
bslt(金币+2,VIP+0):感谢交流! 11-10 08:10
bigfish413(金币+10,VIP+0):谢谢 12-4 10:50
|
如果是无约束一维极值问题,推荐使用Newton法 迭代公式为: x(k+1)=x(k)-f'[x(k)]/f''[x(k)] 初始值为你要求的x点附近的任意值 基本算法步骤如下: 1.给定初始点x(0),及精度epsilon>0,另k=0; 2.若|f'[x(k)]|<=epsilon,停止,极小点为x(k); 3.令 x(k+1)=x(k)-f'[x(k)]/f''[x(k)] 4.另k=k+1, 跳到2 matlab函数为: function [x,minf] = minNewton(f,x0,eps) format long; if nargin == 2 eps = 1.0e-6; end df = diff(f); d2f = diff(df); k = 0; tol = 1; while tol>eps dfx = subs(df,findsym(df),x0); if diff(d2f) == 0 d2fx = double(d2f); else d2fx = subs(d2f,findsym(d2f),x0); end x1 = x0 - dfx/d2fx; k = k + 1; tol = abs(dfx); x0 = x1; end x = x1; minf = subs(f,findsym(f),x); format short; 一个例子 求f(t)=t^2-lnt-5的极值 解:在MATLAB命令窗口输入 >> syms t; >>f=t^2-log(t)-5 >>x=minNewton(f,2) 所得结果为 x=0.7071 |
2楼2009-11-07 09:49:20












回复此楼