非线性拟合问题
本帖最后由 scott198510 于 2010-9-15 10:14 编辑之前用斑竹的方法求出的数据拟合的还比较好,因为用前面的数据求出来的与实际偏差太大,我把数据改成这样的:
就是说在温度确定的情况下:T=1053
H=1e-4, F=24*(10^6);
H=3e-4, F=58*(10^6);
H=1e-3, F=70*(10^6);
H=3e-3, F=107*(10^6);
参照斑竹的方法,把原来的表达式做一下变形,Q=160000值改小了一点,做出来的程序是这样的,可是为什么求出来的数据变成了虚数呢?即使把数据取绝对值,反带入方程里面求出的数据也感觉拟合的不好,远没有之前的数据那样对每组数据都比较接近:
function yhat = myTestFun(beta,x)
A0 = beta(1);
n = beta(2);
yb=x(:,1);
F=x(:,2);
Q=160000;
R=8.31;
yhat = Q/R./log(A0.*(F.^n)./yb);
x=;
y=1053+zeros(size(x,1),1);
% beta=;
beta=;
beta = nlinfit(x,y,@myTestFun,beta);
A0 = beta(1)
n = beta(2)
求出来的数据是这样的:
A0 =
8.8590e-008 +1.3118e-007i
n =
1.4836 - 0.0546i
1# scott198510
斑竹帮忙看看这个问题吧,还没解决呢?为什么求出的数据是虚数了呢? 楼主的函数myTestFun定义有问题, 可以把问题发给我,要发参数和拟合函数,我看看试试 本帖最后由 scott198510 于 2010-9-16 09:59 编辑
既然兄台都说了,问题是这样的:
比如这样一个公式:
H=A0*(F^n)*exp(-Q/(RT));% A0, n 为待求的参数
Q=160000;R=8.31;%两个参数为定值
当T=1053取定值时,对应的4组数据如下:
H=1e-4, F=24*(10^6);
H=3e-4, F=58*(10^6);
H=1e-3, F=70*(10^6);
H=3e-3, F=107*(10^6);
现在就是要求出系数A0与n的数值
最好用优化方法求解,用非线性拟合的效果差的太远
我在origin里面拟合的就不太准确 用1stOpt很简单啊:
a0 3.71058998617027E-19
n 2.97038393473184 1# scott198510
程序是没有问题的,一方面是模型能不能改进,另外一方面是初值的选取(你对此却视而不见,还是用的),因为你的物理模型我不了解,我不能很好的选取初值,所以我随机的取值,结果如下:
beta =
0.000000017306212
1.604610286438346
r =
1.0e-004 *
-0.166912878824423
-0.331699382373383
0.136892303534263
0.353846792662218
J =
1.0e+003 *
2.845642635642963 0.000000882603250
2.845642637604941 0.000000928432338
2.845642636623952 0.000000938199301
2.845642636623952 0.000000960238127
COVB =
0.000000000000047-0.000000143385253
-0.000000143385253 0.439979683084752
mse =
1.409157224142978e-009
本帖最后由 scott198510 于 2010-9-16 13:07 编辑
6# shamohu
请问斑竹,你的软件在哪里下载的,为什么我下载的1stOpt软件里面不能粘贴呢?老是提示未注册版本不能粘贴?另外我用这个软件求了一下,a0只要零点几的样子,偏差怎么这么大呢?
页:
[1]