Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-12-17
年龄: 37
帖子: 4
声望力: 0 ![]() |
![]()
函数如下:
function F=myfun1(x,X,Y) lamda=0.0000006328; pi=3.1415926; w=x(1); x0=x(2); F=w*(1+((lamda*(X-x0))/(pi*w*w)).^2).^(1/2)-Y; m文件如下: X=21:40; Y=[0.15267800423 0.14925281098 0.14634795631 0.14121052685 0.13016573550 0.11923299345 0.11755029933 0.10693783691 0.10293788971 0.09738574331 0.09576117495 0.09379011980 0.09411160161 0.09997933479 0.10494864962 0.11352656282 0.11699422484 0.12614298468 0.12699806179 0.13521383159]; xc=[1,1]; % 设置用中等模式(memdium-scale)算法 options=optimset('Largescale','off'); %通过调用LSQNONLIN重现计算新的系数 x=lsqnonlin(@myfun1,xc,[],[],options,X,Y); disp(x); % 绘制原始数据与新的计算的数据 lamda=0.0000006328; w=x(1); x0=x(2); Y_new=w*(1+((lamda*(X-x0))/(pi*w*w)).^2).^(1/2); plot(X,Y,'+r',X,Y_new,'b'); 运行出现错误: Optimization terminated: directional derivative along search direction less than TolFun and infinity-norm of gradient less than 10*(TolFun+TolX). 0.1186 1.0000 图形拟合的结果和实际数据相差也很大 请教各位大侠是什么原因?殷切的盼望回复 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-12-17
年龄: 37
帖子: 4
声望力: 0 ![]() |
![]()
其实要解决的是这样一个问题:
我有一组数据X,Y X=21:40; Y=[0.15267800423 0.14925281098 0.14634795631 0.14121052685 0.13016573550 0.11923299345 0.11755029933 0.10693783691 0.10293788971 0.09738574331 0.09576117495 0.09379011980 0.09411160161 0.09997933479 0.10494864962 0.11352656282 0.11699422484 0.12614298468 0.12699806179 0.13521383159]; 满足如下非线性方程: Y=w*(1+((lamda*(X-x0))/(pi*w*w)).^2).^(1/2) Lamda和pi是常数 Lamda=0.0000006328 Pi=3.1415926 需要根据这组数据求w和x0. 诚恳的求教 |
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
若用简单一些的模型:
fx=@(b,x)b(1)*(1+b(2)*(x-b(3)).^2).^(1/2); b=[0.0974246891767, 0.0147507384521, 31.8328161638] SSy=0.0070504 RSS=0.0002611548294 MSe= 1.6322e-005 R^2 = 0.96296 |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2009-12-17
年龄: 37
帖子: 4
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2009-12-17
年龄: 37
帖子: 4
声望力: 0 ![]() |
![]()
谢谢你的回复,能说得具体点不?我那个方程就是要求的未知数实际所满足的方程,相当于就是有20个方程组,求解2个未知数。哪种方法使求得的未知数最接近真实值?
|
![]() |
![]() |