MATLAB实例:非线性曲线拟合

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

最小二乘法拟合非线性曲线,给出两种方法:(1)指定非线性函数,(2)用傅里叶函数拟合曲线

1. MATLAB程序

clear
clc
xdata=[0.1732;0.1775;0.1819;0.1862;0.1905;0.1949;0.1992;0.2035;0.2079;0.2122;0.2165;0.2208;0.2252;0.2295;0.2338;0.2384];
ydata=[-3.41709;-4.90887;-6.09424;-6.95362;-7.63729;-8.12466;-8.37153;-8.55049;-8.61958;-8.65326;-8.60021;-8.52824;-8.43502;-8.32234;-8.20419;-8.04472];
%% 指定非线性函数拟合曲线
X0=[1 1];
[parameter,resnorm]=lsqcurvefit(@fun,X0,xdata,ydata); %指定拟合曲线
A=parameter(1);
B=parameter(2);
fprintf('拟合曲线Lennard-Jones势函数的参数A为:%.8f,B为:%.8f', A, B);
fit_y=fun(parameter,xdata);
figure(1)
plot(xdata,ydata,'r.')
hold on
plot(xdata,fit_y,'b-')
xlabel('r/nm');
ylabel('Fe-C Ec/eV');
xlim([0.17 0.24]);
legend('观测数据点','拟合曲线')
% legend('boxoff')
saveas(gcf,sprintf('Lennard-Jones.jpg'),'bmp');
% print(gcf,'-dpng','Lennard-Jones.png');
%% 用傅里叶函数拟合曲线
figure(2)
[fit_fourier,gof]=fit(xdata,ydata,'Fourier2')
plot(fit_fourier,xdata,ydata)
xlabel('r/nm');
ylabel('Fe-C Ec/eV');
xlim([0.17 0.24]);
saveas(gcf,sprintf('demo_Fourier.jpg'),'bmp');
% print(gcf,'-dpng','demo_Fourier.png');
function f=fun(X,r)
f=X(1)./(r.^12)-X(2)./(r.^6);

2. 结果

拟合曲线Lennard-Jones势函数的参数A为:0.00000003,B为:0.00103726
fit_fourier = General model Fourier2:
fit_fourier(x) = a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w)
Coefficients (with 95% confidence bounds):
a0 = 79.74 (-155, 314.5)
a1 = 112.9 (-262.1, 487.9)
b1 = 28.32 (-187.9, 244.6)
a2 = 24.5 (-114.9, 163.9)
b2 = 13.99 (-75.89, 103.9)
w = 15.05 (3.19, 26.9) gof = 包含以下字段的 struct: sse: 0.0024
rsquare: 0.9999
dfe: 10
adjrsquare: 0.9999
rmse: 0.0154

Fig 1. Lennard-Jones势函数拟合曲线

Fig 2. 傅里叶函数拟合曲线

最新文章

  1. Leetcode 45. Jump Game II
  2. GCC 编译优化指南(转)
  3. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
  4. windows下apache配置https
  5. codeforces 680E Bear and Square Grid 巧妙暴力
  6. php透明合并png与jpg图片
  7. odoo 使用 80 端口
  8. ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]
  9. HTML5地理定位,百度地图API,知识点熟悉
  10. Alpha第五天
  11. 史上最全面的Neo4j使用指南
  12. Qt 4.6.2静态编译后,创建工程出现中文乱码的解决办法
  13. [Java初探04]__字符串(String类)相关
  14. Android 实现 WheelView
  15. CFS调度器
  16. undefined和NAN的区别(转)
  17. thinkphp5.0查询到的数据表中的路径是反斜杠导致无法正常显示图片怎么办?
  18. CF 1033 C. Permutation Game
  19. 第八周 yukun 20155335
  20. 小a的强迫症(组合数学)

热门文章

  1. Java集合内容
  2. Docker安全扫描工具之DockerScan
  3. 前端小白webpack学习(二)
  4. Appium+Java 自动化测试系列一:环境搭建
  5. Mysql - 高可用方案之MMM(一)
  6. node.js安装本地模块遇到的目录锁定问题【新手问题】
  7. swoole简介
  8. 拉丁方阵问题 -- python实现
  9. JavaScript 标准内置对象Promise使用学习总结
  10. Penetration testing“Linux install Nessus”