这是给的程序 我是个matlab小白 不知道那一段是要粘贴到matlab里的?
function xmc02
clear all
clc
% deta
global A
r=[0.0051,0.0065,0.0073,0.008,0.0086,0.0043,0.0059,0.0067,0.0073,0.0079,0.0065,0.0039,0.0024,0.0019,0.0013]';
X1=[0.1 0.15 0.2 0.25 0.3 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2]';
X2=[0.8 0.8 0.8 0.8 0.8 0.2 0.4 0.6 0.8 1 0.8 0.8 0.8 0.8 0.8]';
X3=[0 0 0 0 0 0 0 0 0 0 0.02 0.04 0.06 0.08 0.1]';
A=[X1,X2,X3];
% objfun r=a*b*c*X1*X2/(1+aX1+bX2+dX3)^2
% 非线性拟合
beta0=[1 2 1 1]; % 依次为 a b c d
[beta,resnorm,resid,exitflag] = ...
lsqnonlin(@OptObjFunc,beta0,[],[],[],r,A)
% ------------------------------------------------------------------
function f = OptObjFunc(beta,r,A)
f = r-beta(1)*beta(2)*beta(3).*A(:,1).*A(:,2)./(1+beta(1).*A(:,1)+beta(2).*A(:,2)+beta(4).*A(:,3)).^2;
运行结果:
Optimization terminated: relative function value
changing by less than OPTIONS.TolFun.
beta =
5.006082883296007 1.799732413072861 0.061596203399673 35.660702878551518
resnorm =
2.798689414484294e-006
resid =
-0.000034980338998
-0.000041384319011
-0.000199113436192
-0.000145723489928
0.000027180441694
0.000318305366339
-0.000095947962104
-0.000315230960303
-0.000199113436192
0.000217442282819
0.001354807417095
0.000152165876446
-0.000451091514209
-0.000341537035504
-0.000508450568973
exitflag =
3
QQ截图20140701204831.png |