24小时热门版块排行榜    

查看: 690  |  回复: 1

keywsw

新虫 (初入文坛)

[求助] 求大神帮我分析分析我这个程序代码拟合出来误差较大的原因 已有1人参与

以下是我的代码,即定函数的拟合,感觉结果还是有误差,帮忙分析下是什么问题:
function Myfitting()
clear all
close all
% clc
a=[5.30E-08 62.9333
5.95E-08 62.8376
6.70E-08 62.6356
7.50E-08 62.5204
8.40E-08 62.0525
9.45E-08 61.6909
1.06E-07 61.2594
1.19E-07 60.7582
1.34E-07 60.2572
1.50E-07 59.6972
1.68E-07 59.0793
1.89E-07 58.5128
2.12E-07 57.9478
2.38E-07 57.3351
2.67E-07 56.8513
2.99E-07 56.4137
3.36E-07 55.9310
3.77E-07 55.6416
4.23E-07 55.2987
4.74E-07 54.9743
5.32E-07 54.6143
5.97E-07 54.1449
6.70E-07 53.7842
7.51E-07 53.4160
8.43E-07 53.0308
9.46E-07 52.7112
1.06E-06 52.3173
1.19E-06 51.9737
1.34E-06 51.6161
1.50E-06 51.2556
1.68E-06 50.9628
1.89E-06 50.6096
2.12E-06 50.3056
2.38E-06 49.9849
2.67E-06 49.6689
2.99E-06 49.3318
3.36E-06 49.0168
3.76E-06 48.6983
4.22E-06 48.3746
4.74E-06 48.0465
5.32E-06 47.7233
5.97E-06 47.3892
6.69E-06 47.0603
7.51E-06 46.7197
8.43E-06 46.3843
9.46E-06 46.0421
1.06E-05 45.6957
1.19E-05 45.3461
1.34E-05 44.9931
1.50E-05 44.6326
1.68E-05 44.2635
1.89E-05 43.8895
2.12E-05 43.5036
2.38E-05 43.1094
2.67E-05 42.7045
2.99E-05 42.2854
3.36E-05 41.8539
3.76E-05 41.4083
4.22E-05 40.9459
4.74E-05 40.4655
5.32E-05 39.9647
5.97E-05 39.4450
6.69E-05 38.9008
7.51E-05 38.3344
8.43E-05 37.7454
9.46E-05 37.1296
1.06E-04 36.4992
1.19E-04 35.8395
1.34E-04 35.1657
1.50E-04 34.4698
1.68E-04 33.7591
1.89E-04 33.0408
2.12E-04 32.3311
2.38E-04 31.6138
2.67E-04 30.9055
2.99E-04 30.2373
3.36E-04 29.5633
3.76E-04 28.9486
4.22E-04 28.1626
4.74E-04 27.4398
5.32E-04 25.7753 ];





global x y
x=a(:,1);y=a(:,2);
figure;plot(x,y,'o')
X=fminsearch(@fx,[-7.6657    0.0943   -1.5287    0.0029]);
y1=f(X);
fprintf('n0=%f,a=%f,c=%f,Gm=%f\n',X(1),X(2),X(3),X(4));
hold on
plot(x,y1,'r');
legend('Experimental Data','Size-dependent model(MJ3)')



function Y=fx(X)
n0=X(1);
a=X(2);
c=X(3);
Gm=X(4);
tao=1875;
global x y
L=x;
y1=log(n0)+a*L+((-1-a*tao*Gm)/(a*tao*Gm))*...
    log(((exp(a*(L+c)))/(exp(a*c))-1));
Y=norm(y-y1)

function y1=f(X)
n0=X(1);
a=X(2);
c=X(3);
Gm=X(4);
tao=1875;
global x y
L=x;
y1=log(n0)+a*L+((-1-a*tao*Gm)/(a*tao*Gm))*...
    log(((exp(a*(L+c)))/(exp(a*c))-1));
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
如果拟合公式选择合适,MATLAB拟合质量不高,常常因为初值设置不合理。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-07-08 09:36:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 keywsw 的主题更新
信息提示
请填处理意见