查看: 187|回复: 0|关注: 0

[未答复] 含有积分函数的参数拟合问题

[复制链接]

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
发表于 2020-11-20 17:02:35 | 显示全部楼层 |阅读模式
本帖最后由 TouAkira 于 2020-11-20 07:52 编辑

目标函数有两个自变量(代码中分别命名I, Zeta)一个因变量(alfa),求未知参数A,公式如下:

公式

公式

疑问:1.nlinfit,lsqcurvefit,fittype都可以解决问题吗
            2.输入代码后,用三种函数拟合参数分别遇到了以下问题,请问怎么解决?

  1. %参数输入
  2. I=[0.05;0.1;1;3;5;7;10;25;100;300]
  3. Zeta=[7.123333333;7.723333333;8.01;-1.91;-4.153333333;-7.723333333;-11.56666667;-4.563333333;-5.663333333;-3.483333333]
  4. alfa=[0.445381526;0.498293173;0.520080321;0.724899598;1.009538153;0.963855422;0.933232932;1.114959839;0.965863454;1.013052209]
  5. b=5.32;l=100;R=500;T=298;K=1.38*10^(-23);z=1
  6. n=6.02*10^23*I
  7. k=3.28*I.^0.5*10^9
  8. e=1.6*10^(-19)
  9. u=z*e*Zeta/(K*T)

  10. %公式输入
  11. syms A h
  12. Va=-A*R/12*h*(1-b*h/l*log(1+l/(b*h)))
  13. Vr=2*pi*R*n*K*T.*(u.^2).*(k.^(-2)).*(log((1+exp(-k*h*10^(-9))).*(1-exp(-k*h*10^(-9))).^(-1))+log(1-exp(-2*k*h*10^(-9))))
  14. beta=(6*(h/R)^2+13*(h/R)+2)/(6*(h/R)^2+4*(h/R))
  15. fc1=beta*exp(Va/(K*T))/((2*R+h)^2)
  16. fc2=beta.*exp((Va+Vr)/(K*T))/((2*R+h)^2)
  17. func=@(I,Zeta)int(fc2,h,0,inf)/int(fc1,h,0,inf)
  18. alfa1=alfa.^(-1)
复制代码
  1. %lsqcurvefit进行参数拟合
  2. lsqcurvefit(func,I,Zeta,alfa1)
  3. %报错:LSQCURVEFIT requires all values returned by functions to be of data type double.

  4. %nlinfit进行参数拟合
  5. X=[I Zeta]
  6. beta0=[0,0]
  7. nlinfit(X,alfa1,func,beta0)
  8. %报错:无法从 sym 转换为 logical。

  9. %nlinfit进行参数拟合
  10. fittype('func','independent', {'I','Zeta'})
  11. %报错:Too many input arguments. For library models, only one input argument is allowed.
复制代码

通过百度查询了很多次,奈何基础不过关,实在无法解决,希望能得到高人指点,感激不尽

回复主题 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

快速回复 返回顶部 返回列表