2008057
2010-03-27, 09:10
我有一非线性最小二乘问题需用MATLAB求解,可是我是初学者,试了很多次都无结果,急,不知道怎么办了,m文件如下:用lsqnonlin应该可以求出最优解吧?请高人帮忙看看,
functions f =myfun111(a)
fa1 =@(x)x.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fa2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f1 =1-quad(fa1,50.40,50.60)/(50.5295.*quad(fa2,50.40,50.60));
fb1 =@(x)x.^2.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fb2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f2 =1-quad(fb1,50.40,50.60)/(2553.*quad(fb2,50.40,50.60));
fc1 =@(x)x.^3.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fc2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f3 =1-quad(fc1,50.40,50.60)/(129010.*quad(fc2,50.40,50.60));
fd1 =@(x)x.^4.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fd2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f4 =1-quad(fd1,50.40,50.60)/(6518900.*quad(fd2,50.40,50.60));
fe1 =@(x)x.^5.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fe2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f5 =1-quad(fe1,50.40,50.60)/(329390000.*)quad(fe2,50.40,50.60);
f=[f1;f2;f3;f4;f5];
functions f =myfun111(a)
fa1 =@(x)x.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fa2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f1 =1-quad(fa1,50.40,50.60)/(50.5295.*quad(fa2,50.40,50.60));
fb1 =@(x)x.^2.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fb2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f2 =1-quad(fb1,50.40,50.60)/(2553.*quad(fb2,50.40,50.60));
fc1 =@(x)x.^3.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fc2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f3 =1-quad(fc1,50.40,50.60)/(129010.*quad(fc2,50.40,50.60));
fd1 =@(x)x.^4.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fd2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f4 =1-quad(fd1,50.40,50.60)/(6518900.*quad(fd2,50.40,50.60));
fe1 =@(x)x.^5.*exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
fe2 =@(x)exp(a(1).*x+a(2).*x.^2+a(3).*x.^3+a(4).*x.^4+a(5).*x.^5);
f5 =1-quad(fe1,50.40,50.60)/(329390000.*)quad(fe2,50.40,50.60);
f=[f1;f2;f3;f4;f5];