| 查看: 3064 | 回复: 18 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
matlab拟合参数显示初始点是一个局部最小值 已有5人参与
|
|||
|
小弟最近刚学习用matlab拟合参数,但编写完运行显示Initial point is a local minimum.得到的k值为k0,求给位大神给指点一下怎么解决这种问题!急求,新人啥也不懂啊!先在此谢过啦! function zixie clear all; clc; data=[0 8.32 0; 1 7.37 0.211; 2 6.74 0.738; 3 5.92 1.106; 4 5.68 1.296; 5 5.01 1.583; 6 6.09 1.364; 8 5.35 1.84; 10 4.99 2]; x0=[8.32 0]; k0=[10 10 10 10 10 ]; lb=[0 0 0 0 0]; ub=[+inf +inf +inf +inf +inf]; yexp=data(:,2:3); [k,resnorm,residual,exitflag,output,lambda,jacobin]=lsqnonlin(@objFunc1,k0,lb,ub,[],x0,yexp) fprintf('\tk1=%.4\n',k(1)), fprintf('\tk2=%.4\n',k(2)), fprintf('\tk3=%.4\n',k(3)), fprintf('\tk4=%.4\n',k(4)), fprintf('\tk5=%.4\n',k(5)) function f=objFunc1(k,x0,yexp) tspan=[0 1 2 3 4 5 6 8 10]; [t x]=ode45(@funceqs,tspan,x0,[],k); y(:,1)=x(:,1); y(:,2)=x(:,2); f1=y(:,1)-yexp(:,1); f2=y(:,2)-yexp(:,2); f=[f1;f2]; function dxdt=funceqs(t,x,k) dx1dt=-k(1)*k(2)*x(1)*sqrt(k(3)*x(2))/(k(1)+k(2)*x(1))-k(4)*k(5)*x(2); dx2dt=k(1)*k(2)*x(1)*sqrt(k(3)*x(2))/(k(1)+k(2)*x(1))+k(5)*x(2); dxdt=[dx1dt;dx2dt]; Initial point is a local minimum. Optimization completed because the size of the gradient at the initial point is less than the default value of the function tolerance. <stopping criteria details> k = 10 10 10 10 10 Optimization completed: The final point is the initial point. The first-order optimality measure, 0.000000e+00, is less than options.TolFun = 1.000000e-06. Optimization Metric Options relative first-order optimality = 0.00e+00 TolFun = 1e-06 (default) >> |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有117人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
dingd
铁杆木虫 (职业作家)
- 计算强帖: 4
- 应助: 1641 (讲师)
- 金币: 15037.3
- 散金: 101
- 红花: 234
- 帖子: 3410
- 在线: 1223.7小时
- 虫号: 291104
- 注册: 2006-10-28
18楼2014-02-27 15:03:05
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68123.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区

2楼2014-02-26 22:02:02
戴钢盔的猪头
木虫 (知名作家)
- 应助: 200 (高中生)
- 金币: 5083.9
- 散金: 1310
- 红花: 18
- 帖子: 6001
- 在线: 319.9小时
- 虫号: 2854040
- 注册: 2013-12-07
- 性别: GG
- 专业: 波谱分析与成像分析
3楼2014-02-26 22:09:59
dingd
铁杆木虫 (职业作家)
- 计算强帖: 4
- 应助: 1641 (讲师)
- 金币: 15037.3
- 散金: 101
- 红花: 234
- 帖子: 3410
- 在线: 1223.7小时
- 虫号: 291104
- 注册: 2006-10-28
【答案】应助回帖
★
感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2014-02-27 08:43:32
感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2014-02-27 08:43:32
|
x2的起始值为0(0 8.32 0)有问题吧?会导致计算值全部为0; 还有公式还可以化简,否则有过拟合现象。 dx1dt=-k1*k2*x1*sqrt(k3*x2)/(k1+k2*x1)-k4*k5*x2; dx2dt=k1*k2*x1*sqrt(k3*x2)/(k1+k2*x1)+k5*x2; 可简化为: dx1dt=-x1*sqrt(x2)/(k1+k2*x1)-k4*k5*x2; dx2dt=x1*sqrt(x2)/(k1+k2*x1)+k5*x2; |
4楼2014-02-26 23:10:52












回复此楼