1. 简介
在工程问题的计算中,我们经常需要处理一些离散数据的拟合问题,而最小二乘法是处理曲线拟合问题的常用方法。目前,许多软件都提供有基于最小二乘法进行曲线拟合的功能,例如在origin和excel中均可直接利用离散数据进行曲线拟合。然而,这些软件只能处理一些简单函数的拟合问题,当需要拟合的函数较为复杂时,或者无法用简单的表达式来表述时,则往往无法直接进行拟合。为此,本文将对最小二乘法的基本原理做简单介绍,随后介绍如何利用matlab的lsqnonlin函数处理复杂函数的拟合问题。
1.1 曲线拟合的最小二乘法原理
利用最小二乘法进行曲线拟合的本质为寻找某个近似函数 φ ( x ),使得该函数与离散点之间尽可能地逼近。若将偏差定义为近似函数的近似值 φ ( xi )与离散点 yi *之间的差值:
求解上述线性方程组即可得到拟合多项式的系数。
2. 利用matlab处理曲线拟合问题
基于上述计算原理,matlab提供了polyfit函数用于处理多项式曲线的拟合问题,对于一些较为复杂但仍可通过简单表达式进行表述的函数,也可以利用matlab的拟合工具箱(curve fitting)进行拟合。但在某些情况,当拟合函数非常复杂,以致于无法用简单表达式进行表述时(例如分段函数以及涉及到条件语句),则无法使用拟合工具箱进行拟合。对于此类问题,可以使用matlab优化工具箱中的lsqnonlin函数进行解决。
2.1 lsqnonlin函数
lsqnonlin函数用于求解以下述形式表示的非线性最小二乘法拟合问题:
在使用该函数进行最小二乘法拟合时,lsqnonlin函数并不需要用户提供min || f ( x )||(平方和),而是需要用户提供自定义函数fun,用于计算矢量形式表示的 f ( x ):
lsqnonlin函数常用语法为:
x = lsqnonlin(fun,x0)x = lsqnonlin(fun,x0,lb,ub)其中fun为用户自定义函数,x0为计算采用的初始值,lsqnonlin函数首先利用x0通过自定义函数fun计算 fi (x)的取值并计算平方和,随后通过优化算法调整x的取值直至得到平方和的最小值。此外,lb和ub还可以用于定义x的取值范围,使得x满足lb≤x≤ub。
例如,对于节1.1中所述的多项式,根据最小二乘法的定义,则自定义函数 f ( x )应表示为:
注意此时 f ( x )中的x为以向量形式表示的多项式 p ( x )的系数:
在计算时,用户需要指定多项式系数的初始值,则lsqnonlin函数将利用最小二乘法计算多项式系数。
下面,本文将以笔者所在领域常用的nasgro方程为例,介绍如何利用lsqnonlin函数处理此类复杂函数的曲线拟合问题。
2.2 nasgro方程简介
在进行基于断裂力学的损伤容限分析时,应力强度因子和裂纹扩展速率模型是最为重要的输入。一般来说,应力强度因子可以通过经验公式或数值方法进行计算,而裂纹扩展速率模型则需要通过裂纹扩展速率试验获得的试验数据拟合得到。例如,大量的试验结果表明,在裂纹扩展的中速率区域,应力强度因子幅值δk和裂纹扩展速率d a /dn满足良好的对数线性关系,可以通过paris公式进行描述:
其中c和m为材料常数。
尽管paris公式已经得到广泛的应用,但是paris公式仅仅描述了裂纹在中速率区域的扩展行为,没有描述近门槛区域和接近断裂的高速率区域的扩展行为,也没有考虑应力比r和裂纹闭合效应对裂纹扩展速率的影响,因此给出的计算结果将过于保守。另一个常用的裂纹扩展速率模型为newman提出的nasgro模型,该模型基于forman模型改进了裂纹扩展速率模型,同时比paris和walker模型更加全面,不仅考虑了应力强度因子门槛值和断裂韧度,还体现了应力比以及裂纹闭合效应对裂纹扩展速率d a /dn的影响,如图2.1所示,其表达式如下:
其中r为应力比,δk为应力强度因子幅值,δkth为应力强度因子幅值门槛值,kmax为最大应力强度因子,可表示为:
图2.1 nasgro方程
nasgro方程中的应力强度因子门槛值δkth可采用下面的经验公式进行估算:
其中a0为裂纹张开函数中的多项式系数,δk1是 r =1时的应力强度因子门槛值,cth是对于正应力(上标为p=positive)和负应力比(上标为m=minus, negative)取不同值的材料常数,*a*~0~是内在小裂纹尺寸(典型值为0.0381mm)。在基于nasgro方程开发的疲劳裂纹扩展分析软件nasgro中,正应力比下*c*~th~^p^和δ*k*~1~是保存在数据库里的值,负应力比下*c*~th~^m^的默认值为0.1。
2.3 nasgro方程拟合
图2.2为疲劳裂纹扩展分析软件nasgro材料库中某铝合金材料的裂纹扩展速率数据,已知试验时采用的试样为中心平板试样(m(t)),σmax和σf的比值为0.3,塑性约束因子α为2.0,材料断裂韧度kc为65.7,应力比r为1时的门槛值δk1为1.23,c th ^p^为1.06,c th ^m^为0.1,下面需要通过拟合试验数据获得nasgro方程的参数 c , m , p , q 。
图2.2 疲劳裂纹扩展数据
拟合nasgro方程的难点主要有以下几点:
(1)裂纹扩展速率d a /dn不仅与应力强度因子幅值δk有关,还与使用的应力比r有关,因此实际上为多变量的拟合问题;
(2)裂纹张开函数f为分段函数,并且使用了计算最大值的max函数,该函数在拟合时无法用简单函数进行表述。
针对以上问题,nasgro软件给出的拟合方法为首先给参数p和q确定一个初始值,并利用最小二乘法确定参数c和 m ,随后根据工程经验来获得可接受的结果,如果对拟合效果不满意,可以调整任意参数,直至获得满意的结果。
显然,这样的拟合策略具有很大的随意性,如果参数p和q选取不当,很可能对拟合效果有很大的影响。下面,本文将介绍如何利用lsqnonlin函数在不提前定义参数p和q的情况下对nasgro方程进行拟合。
根据lsqnonlin函数的介绍,首先需要构造自定义函数 f ( x )使其满足最小二乘法计算的基本原理,由于paris公式具有对数线性的关系,因此尝试将nasgro方程两边取对数,可得:
上式可以用如下所示的通式表示:
系数bj为与 c , n , p和q有关(b 0 =log( c ), b 1 = n , b 2 = p , b 3 =- q )的系数,而gj为与δ k 、r和nasgro中所有剩余参数有关的函数。
根据最小二乘法的定义,应选取参数bj使得:
参考lsqnonlin函数对目标函数的定义,则自定义函数 f ( x )应表示为:
y= r .^2 * (r >0) + r * (r =0)+f2.*(r=-2&r=0)+... dkth_p2.*(r=0 f=a0+a1*r+a2*r^2+a3*r^3; f=max([f;r]);elseif r=0 dkth=dkth1*sqrt(a/(a+a0))*((1-r)/(1-f))^(1+r*cth_p)/... (1-a0)^((1-r)*cth_p);else dkth=dkth1*sqrt(a/(a+a0))*((1-r)/(1-f))^(1+r*cth_m)/... (1-a0)^(cth_p-r*cth_m);endend试验数据
fcg_data.txt
应力强度因子幅值 裂纹扩展速率 应力比
11.9896 2.43e-05 0.711.6632 2.51e-05 0.710.5603 1.71e-05 0.710.916 1.43e-05 0.710.5604 1.43e-05 0.710.1043 1.10e-05 0.79.25035 8.18e-06 0.78.89987 5.91e-06 0.78.61001 5.10e-06 0.78.46855 6.09e-06 0.78.05821 4.95e-06 0.77.83889 4.40e-06 0.77.41798 3.91e-06 0.77.54187 3.48e-06 0.76.98103 3.38e-06 0.76.86652 1.99e-06 0.76.25152 1.99e-06 0.76.01454 2.44e-06 0.76.11514 1.17e-06 0.75.66032 1.62e-06 0.75.35634 1.82e-06 0.75.47599 1.24e-06 0.75.18191 1.39e-06 0.75.32693 1.24e-06 0.74.93077 1.44e-06 0.75.09686 1.07e-06 0.74.48922 9.23e-07 0.74.61486 8.20e-07 0.74.43997 7.73e-07 0.74.36708 6.48e-07 0.74.06469 6.87e-07 0.74.64051 4.41e-07 0.74.82333 4.04e-07 0.73.59998 4.04e-07 0.73.78335 3.49e-07 0.73.8678 3.70e-07 0.73.91075 3.39e-07 0.73.86786 2.38e-07 0.73.62002 1.72e-07 0.73.31402 1.93e-07 0.73.2238 2.05e-07 0.73.20604 2.38e-07 0.73.10161 2.24e-07 0.73.05068 2.05e-07 0.72.83944 2.31e-07 0.72.6722 1.82e-07 0.72.59947 1.57e-07 0.72.61388 1.24e-07 0.72.68703 1.17e-07 0.72.7929 9.53e-08 0.72.31499 1.28e-07 0.72.315 1.10e-07 0.72.34071 9.81e-08 0.72.26445 1.10e-07 0.72.20281 1.10e-07 0.72.00554 8.22e-08 0.71.96175 7.75e-08 0.71.92954 7.10e-08 0.71.88741 6.50e-08 0.71.86669 6.31e-08 0.71.82592 6.89e-08 0.71.74707 4.98e-08 0.71.70894 3.93e-08 0.71.68088 3.60e-08 0.71.64418 3.50e-08 0.71.63523 6.32e-09 0.71.58198 5.00e-09 0.743.3791 6.61e-04 039.9322 6.61e-04 035.9575 3.36e-04 033.2835 3.36e-04 031.4968 1.97e-04 031.3239 1.43e-04 028.8351 1.23e-04 028.6768 8.15e-05 026.6911 9.17e-05 026.5444 6.83e-05 024.9811 4.94e-05 023.7706 4.02e-05 023.2517 3.37e-05 022.6188 3.37e-05 021.7614 3.90e-05 020.8215 3.57e-05 020.8217 2.51e-05 021.4044 2.36e-05 021.7617 2.66e-05 019.9226 1.81e-05 019.062 1.71e-05 018.6457 1.98e-05 019.2735 2.16e-05 019.5951 2.51e-05 017.7421 1.76e-05 017.9392 1.52e-05 017.0698 1.61e-05 016.6051 1.61e-05 016.3325 1.47e-05 016.5139 1.27e-05 015.888 1.24e-05 015.7137 1.10e-05 015.6275 6.65e-06 014.465 1.16e-05 014.4652 9.20e-06 014.3065 6.65e-06 013.8403 9.76e-06 013.8402 1.13e-05 013.2425 8.18e-06 013.3159 7.48e-06 013.2427 6.09e-06 012.5315 7.27e-06 012.3939 7.71e-06 012.1233 6.85e-06 011.9902 6.27e-06 012.5316 5.10e-06 011.7285 4.95e-06 010.8563 5.91e-06 010.7371 5.41e-06 010.7966 4.95e-06 010.6193 4.67e-06 010.3875 4.15e-06 09.99386 3.28e-06 09.40513 3.28e-06 09.30192 2.91e-06 09.25075 2.67e-06 08.99896 2.51e-06 08.90013 2.75e-06 08.19305 1.93e-06 07.97006 1.71e-06 07.79604 1.62e-06 07.796 1.87e-06 07.54204 1.87e-06 06.9813 1.24e-06 07.05883 1.07e-06 06.53398 7.96e-07 06.829 7.08e-07 06.67993 5.76e-07 06.49812 5.27e-07 06.32121 5.93e-07 06.08171 4.29e-07 06.32129 4.16e-07 06.32131 3.81e-07 06.35634 3.29e-07 05.85128 3.10e-07 05.66068 3.01e-07 05.75522 2.67e-07 05.26876 2.67e-07 05.26878 2.38e-07 05.41621 2.38e-07 05.35678 2.05e-07 05.35682 1.72e-07 05.29803 1.57e-07 05.21103 1.53e-07 05.15379 1.72e-07 05.21097 1.99e-07 05.09716 2.24e-07 05.06913 1.99e-07 04.95844 1.99e-07 04.82348 1.82e-07 04.71814 1.93e-07 04.74422 2.31e-07 04.58968 2.38e-07 04.61513 1.77e-07 04.9312 1.48e-07 04.6407 1.57e-07 04.66641 1.36e-07 04.48956 1.28e-07 04.39151 1.40e-07 04.29561 1.40e-07 04.31936 1.72e-07 04.29556 1.99e-07 04.20179 1.62e-07 04.20181 1.40e-07 04.24848 1.21e-07 04.15571 1.21e-07 04.11007 1.36e-07 04.06492 1.57e-07 04.04256 1.40e-07 03.97618 1.40e-07 03.9325 1.67e-07 03.84666 1.32e-07 03.88939 1.04e-07 03.88942 8.47e-08 04.04264 8.47e-08 03.70087 1.32e-07 03.7009 1.10e-07 03.60016 1.10e-07 03.62006 1.32e-07 03.52153 1.24e-07 03.52155 1.04e-07 03.38806 1.21e-07 03.50218 8.98e-08 03.6002 8.22e-08 03.5022 7.75e-08 03.42573 7.53e-08 03.36947 7.53e-08 03.31411 9.25e-08 03.2239 9.25e-08 03.18854 7.31e-08 03.25972 6.89e-08 03.31417 5.77e-08 03.36953 4.84e-08 03.08471 5.13e-08 03.08473 4.43e-08 03.1536 4.17e-08 03.31424 3.40e-08 03.20635 1.83e-08 03.01752 1.14e-08 03.01755 9.28e-09 03.17125 8.49e-09 02.96804 6.14e-09 03.08497 5.79e-09 03.10206 4.85e-09 03.05116 3.40e-09 02.87152 1.37e-09 02.79336 1.37e-09 021.6401 2.50e-04 0.521.8805 1.97e-04 0.520.8201 1.97e-04 0.519.9211 1.23e-04 0.520.7061 9.17e-05 0.517.9382 6.83e-05 0.517.9383 5.56e-05 0.517.6438 4.94e-05 0.516.6044 5.09e-05 0.516.6965 3.90e-05 0.515.8873 4.02e-05 0.515.6265 3.37e-05 0.515.0343 3.27e-05 0.514.5447 2.51e-05 0.514.3059 2.29e-05 0.513.0967 2.10e-05 0.512.0561 1.71e-05 0.512.3253 1.47e-05 0.512.4623 1.13e-05 0.511.7281 1.13e-05 0.511.1597 1.24e-05 0.511.0983 1.13e-05 0.510.5023 1.24e-05 0.510.5024 9.76e-06 0.510.33 9.20e-06 0.510.4447 8.42e-06 0.510.2732 7.71e-06 0.59.93858 6.65e-06 0.59.50927 6.65e-06 0.58.89981 7.06e-06 0.58.99867 5.74e-06 0.58.8022 5.25e-06 0.58.28374 4.27e-06 0.58.32966 3.38e-06 0.57.92594 3.91e-06 0.57.71025 3.28e-06 0.56.90432 4.40e-06 0.57.21618 2.51e-06 0.56.75371 2.37e-06 0.56.67961 1.99e-06 0.56.21708 2.23e-06 0.56.04791 1.77e-06 0.56.04792 1.66e-06 0.55.38609 1.10e-06 0.55.29767 8.96e-07 0.55.23953 8.20e-07 0.55.12513 7.73e-07 0.55.01323 7.08e-07 0.55.26863 4.97e-07 0.54.9038 5.93e-07 0.54.66611 7.29e-07 0.54.41561 4.68e-07 0.54.31924 3.59e-07 0.54.20166 3.59e-07 0.53.99806 3.19e-07 0.53.66015 2.45e-07 0.53.50207 2.18e-07 0.53.48282 1.77e-07 0.53.18843 1.77e-07 0.53.03396 1.17e-07 0.53.01723 1.53e-07 0.52.83949 1.44e-07 0.52.80833 1.32e-07 0.52.65752 1.36e-07 0.52.45989 1.48e-07 0.52.54274 1.14e-07 0.52.59952 9.53e-08 0.52.44638 1.04e-07 0.52.39295 1.14e-07 0.52.3798 9.25e-08 0.52.2896 8.98e-08 0.52.22728 9.53e-08 0.52.21503 8.47e-08 0.52.16666 8.47e-08 0.52.13107 9.25e-08 0.52.11936 7.53e-08 0.52.09609 7.10e-08 0.52.05032 7.10e-08 0.52.07309 6.31e-08 0.52.0731 5.77e-08 0.52.05034 5.77e-08 0.52.01667 5.77e-08 0.51.99453 5.28e-08 0.51.99454 4.84e-08 0.51.99454 4.56e-08 0.51.98357 4.17e-08 0.51.92958 3.82e-08 0.51.98358 3.71e-08 0.51.98361 2.68e-08 0.51.9727 2.38e-08 0.52.0279 2.18e-08 0.52.02791 2.06e-08 0.51.98367 1.14e-08 0.51.86688 4.71e-09 0.51.84641 3.21e-09 0.51.83625 3.12e-09 0.5
新型系统可以自动“学习”如何在数千台服务器上调度数据处理操作
iPhone手机的售价仍然在扶摇直上 但利润率却大不如从前了
SEW变频器MOVIfit的PLC组态/S11安全控制设置流程分享
这样的设计才应该是iphone8该有的,Home键炫酷!
等电位联结的分类_等电位联结的作用
如何利用Matlab的lsqnonlin函数处理复杂函数的拟合问题
丰田汽车固态电池将于今年发布:续航 500 公里,10 分钟充满
英特尔宣布收购SoC芯片设计工具供应商NetSpeed
新快报:光伏产业 下一个金矿
如何借助边缘智能网关打造智慧城市便民驿站
如何选择合适的称重传感器
三坐标测量机是具体检测什么?
智慧农业怎样发展才是比较好的
锂电隔膜瑕疵在线检测设备可实时检测产品瑕疵
什么是CPU的位和字长
联想Z5图赏
纯电动车型电池每年衰减2.3% 但寿命还会大于车辆本身的使用寿命
NVIDIA DeepStream SDK是什么 有哪些特性
服务器机房里都有哪些比较重要的系统
三相无刷直流电机原理