正在加载


非线性函数的线性化

在做曲线拟合时,常用的是最小二乘法(method of least squares)。我们知道线性拟合很容易做,非线性模型的拟合就难多了。为了降低拟合难度,很多时候我们可以把模型转换为非线性的形式。这里讨论下一元非线性函数的线性化方法,并举一个用matlab来做拟合的例子。 用幂函数 y=ax^2做例子。这个函数怎么非线性化呢?在微积分中有种常用的技巧,对于幂函数和指数函数常常用取对数的方法是使之简化,因为对数运算可以把幂指运算转化为加法和乘法运算,这就转换成了我们更熟悉、更擅长的问题。 对y=ax^b等号两边取自然对数,得 lny = lna + blnx) 令Y=lny,X=lnx,得Y = lna + bX,这是一个线性函数,这样我们就完成了线性化处理。此函数可以用非线性拟合函数polyfit拟合,调用格式为 p= polyfit(x,y,n),其中:

  • x,y为需要拟合的数据,用数组方式输入;
  • n表示多项式的最高阶数,特别地,当n=1时可以省略;
  • 输出参数p为拟合多项式的系数。
以下是一个实例:

Nu

11.6

18.1

23.5

26.9

32.2

36.8

39.0

43.2

Re

3520

6050

8400

9970

12520

14810

15900

18080

 用经验模型Nu = a Re^b对表格中的的数据进行拟合,确定模型中的参数a,b。

令y=Nu,x=lnRe,则

y=lna + bx

以下为程序段:

>> Re=[3520 6050 8400 9970 12520 14810 15900 18080]‘;
>> Nu=[11.6 18.1 23.5 26.9 32.2 36.8 39.0 43.2]‘;
>> y=log(Nu)
y =
2.4510
2.8959
3.1570
3.2921
3.4720
3.6055
3.6636
3.7658
>> x=log(Re)
x =
8.1662
8.7078
9.0360
9.2073
9.4351
9.6031
9.6741
9.8026
>> p=polyfit(x,y,1)
p =
0.8011 -4.0852

即b=0.8011,lna=-4.0852

>> a=exp(-4.0852)
a =
0.0168

于是得关系式为:

Nu=0.0168Re^0.8011

17fav 收藏本文
标签: ,


转载原创文章请注明,转载自:涌泉[http://www.leafsea.com]

本文链接: http://www.leafsea.com/posts/linearization-470.html

相关文章


随机文章

  • 推荐《四川地震灾区考察笔记》
  • 离子电迁移数计算的几点注意
  • 有机化学笔记(11)——有机反应中的热力学与动力学
  • 化学工程历史里程碑
  • 读《Why Attend College?》
  • 如果您喜欢本文,欢迎评论让我们一起探讨 或者 订阅涌泉,这样您可及时获知后续文章

    请留言: