Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2008-02-26
年龄: 38
帖子: 158
声望力: 25 ![]() ![]() ![]() |
![]()
% 最小二乘法多项式拟合
% ******** 立方体抗压强度实验数据表 ******** % (1)-----选择拟合多项式拟合的阶数 x=[1 2 3 7 14 28]; y=[30.3 43.9 47.1 54.9 56.1 60.6]; n = 6; x1 = x(1); xn = x(n); % n个数据可以拟合(n-1)阶多项式,高阶多项式多次求导,数值特性变差 % polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的[Export]输出图形 polytool(x,y,1) % 观察多项式拟合的图形,选择置信区间最小的多项式阶数 % (2)-----计算多项式的各项系数和拟合值 m=input(' 输入多项式拟合的阶数 m = '); [p,S]=polyfit(x,y,m); disp ' 输出多项式的各项系数' fprintf (1,' a = %3.16f \n',p) disp ' 输出多项式的有关信息 S' disp (S) [yh,delta]=polyconf(p,x,S); disp ' 观测数据 拟合数据' disp ' x y yh' for i = 1 : n xy = [x(i) y(i) yh(i)]; disp (xy) end % (3)-----绘制观测数据离散点图和多项式曲线 plot(x,y,'r.') title('\bf 实验数据离散点图 / 多项式曲线 \it y = a0+a1x+a2x^2+a3x^3+...') grid hold on; xi=[x1:0.1:xn]; yi=polyval(p,xi); plot(xi,yi,'k-') % (4)-----拟合效果和精度检验 Q=sum((y-yh).^2); SGM = sqrt(Q / (n - 2)); RR = sum((yh-mean(y)).^2)/sum((y-mean(y)).^2); fprintf (1,' 剩余平方和 Q = %3.6f \n',Q) fprintf (1,' 标准误差 Sigma = %3.6f \n',SGM) fprintf (1,' 相关指数 RR = %3.6f \n',RR) x0=input(' 输入插值点 x0 = '); y0=polyval(p,x0); fprintf (1,' 输出插值点拟合函数值 y0 = %3.4f \n',y0) |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-02-26
年龄: 38
帖子: 158
声望力: 25 ![]() ![]() ![]() |
![]()
这是我上次做材料受力分析时做的一个程序,大家需要的话可以借鉴一下。很好用的。
|
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
【求助】想问一下有没有不用考虑期望输出的自适应算法 | klz | MATLAB论坛 | 1 | 2008-04-05 12:55 |
MATLAB计算中的小问题,那位大神帮帮忙! | stormbird | MATLAB论坛 | 2 | 2007-06-19 23:57 |