查看单个帖子
旧 2008-08-24, 16:19   #4
pslpsl
普通会员
 
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20
pslpsl 是一个将要出名的人pslpsl 是一个将要出名的人
箭头 回复: [求助]如何求出函数表达式?

如果你觉得线性回归不行的话可以自己设计函数拟合
比如你想用 z=a+b*x^2+c/y 具体函数你自己定

对回归模型建立M文件model.m如下:
代码:
function yy=model(beta0,X) a=beta0(1); b=beta0(2); c=beta0(3); x1=X(:,1); x2=X(:,2); yy=a+b.*x1+c./x2 ;
这样调用

代码:
x=[-2005.18774,-176.903191,1292.067478,859.336087,771.7266316,327.546568,-1478.3107] ; y=[-465.189718,-41.0403195,544.4413107,479.943397,610.9354918,317.374685,-1432.4029] ; z=[-6039.86603,-6378.41532,-6225.05472,-6304.62979,-6304.62979,-6364.6799,-6039.8663] ; X=[x;y]'; Y=z'; beta0=[0.50 1 1]; %设定初始值 [fit,r,J] = nlinfit(X,Y,'model',beta0)


结果如下
HTML 代码:
fit =
  1.0e+003 *
   -6.2252   -0.0001    6.4908
 
r =
    6.6350
  -12.0559
  112.3579
  -10.3944
  -15.9118
 -128.4641
   47.8333
 
J =
  1.0e+003 *
    0.0010   -2.0052   -0.0000
    0.0010   -0.1769   -0.0000
    0.0010    1.2921    0.0000
    0.0010    0.8593    0.0000
    0.0010    0.7717    0.0000
    0.0010    0.3275    0.0000
    0.0010   -1.4783   -0.0000

z=1.0e+003*(-6.2252-0.0001*x+6.4908/y)

在x[100 200 ] y[100 200]积分

代码:
jifen=dblquad(@(x,y)1.0e+003*(-6.2252-0.0001.*x+6.4908./y),100,200,100,200)
结果如下
代码:
 
 
jifen=
 
       -6.1952e+007

你自己根据实际设计函数就行了
pslpsl 当前离线   回复时引用此帖