Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2011-04-23
年龄: 39
帖子: 4
声望力: 0 ![]() |
![]()
各位高手s,请问谁有曲线参数拟合对初值不那么敏感的自编MATLBA程序代码啊? 传一份救救急吧! 叩谢! 叩谢! 要疯啦 ……
附件有我问题的相关文件,一个自编的没办法稳定实现系数拟合的程序,一份原始数据,一个目标公式。 [email protected] |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-09-14
年龄: 43
帖子: 351
声望力: 24 ![]() |
![]()
用优化算法可以 它们对初始不要求
__________________
qq604443022 |
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
这个问题难度较大,内含积分形式不太好处理,若能将积分部分以原函数的形式表示,问题可相对简单一些。另外,数据文件中哪些是xdata, 哪些为ydata? 函数的似乎形式也有问题,第二个等于号难于让人看得懂。
|
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2011-04-23
年龄: 39
帖子: 4
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2011-04-23
年龄: 39
帖子: 4
声望力: 0 ![]() |
![]()
优化方法有不少啊 …… 我试过模拟退火法,不知道是不是我编得不对,误差竟然以1e-6的数量级一点一点减小!!! 实在太慢了 ……
您能帮我看看错哪儿了吗? 多谢了! function [x0,f0]=Opt_Simu(f,x0,l,u,kmax,q,TolFun) %%%%%%%% 第一步,根据输入变量数,将默写量设为默认值。 if nargin<7 TolFun=1e-8; end if nargin<6 q=1; end if nargin<5 kmax=100; end %%%%%%%%%%%% 第二步,求解一些基本变量 N=length(x0); x=x0; fx=feval(f,x); x0=x; f0=fx; %%%%%%%%%%%% 第三步,进行迭代计算,找出近似全局最小点。 for k=0:kmax Ti=(k/kmax)^q; mu=10^(Ti*100); dx=Mu_Inv(2*rand(size(x))-1,mu).*(u-l); x1=x+dx; x1=(x1 < l).*l+(l <= x1).*(x1 <= u).*x1+(u < x1).*u; fx1=feval(f,x1); df=fx1-fx; if df < 0 | rand < exp(-Ti*df/(abs(fx) +eps)/TolFun) x=x1; fx=fx1; end if fx<f0 x0=x; f0=fx1; end end 其中, function x=Mu_Inv(y,mu) x=(((1+mu).^abs(y)-1)/mu).*sign(y); 另外,退火法里面的f我定义的是f=@fun422 function F=fun422(X) data(:,1)=importdata('xdata.txt'); data(:,2)=importdata('ydata.txt'); nt=100; data_nt=data(1:nt,1:2); tt=importdata('tt.txt'); for i=1:nt d=tt(i+1)-tt(i); for j=0:i-1 sc1_data_nt(j+1)=data_nt(i-j,1)*gamma(j-X(5))/gamma(j+1); end sc2_data_nt=cumsum(sc1_data_nt); fun4202_D_data_nt(i)=d^(-X(5))*sc2_data_nt(i)/gamma(-X(5)); end fun4202_D_data_nt=fun4202_D_data_nt'; sum=0; for i=1:nt f(i)=(X(1)*data_nt(i,1)+X(2)*data_nt(i,1).^2+X(3)*data_nt(i,1).^3+X(4)*fun4202_D_data_nt(i)-data_nt(i,2))^2; sum=sum+f(i); end F=sum; 请不吝指教,谢谢!! |
![]() |
![]() |
![]() |
#6 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
结果如图,不知能否发出,先试一下。
|
![]() |
![]() |