浅谈Lingo软件求解非线性曲线拟合

2020-03-11 21:29黄渊
数学大世界·中旬刊 2020年1期
关键词:MATLAB软件

黄渊

【摘 要】 本文以给药方案制定问题为例,阐述了应用Lingo软件求解非线性曲线拟合,无需初始值,弥补了Matlab软件的不足,是求解非线性曲线拟合的一种比较好的方法。

【关键词】 Lingo软件;非線性曲线拟合;Matlab软件

一、非线性曲线拟合的概念

假设已知经验公式(这里b和x均可为向量),要求根据一批有误差的数据0,1,2,…,n,确定参数b。这样的问题称为曲线拟合,其基本原理是最小二乘法,即求b使得均方误差

达到最小。如果关于b是非线性函数,那么称这样的曲线拟合为非线性曲线拟合。

二、非线性曲线拟合的软件实现

对于非线性曲线拟合,数学软件Matlab提供了nlinfit函数,它的调用格式为:

a=nlinfit(x,y,fun,b0)

其中,b0为待定参数b的初始值,其他的含义参见文献[1]第71页。关于初始值,一般要根据函数模型的数学意义和实际意义来猜测b0,这往往是比较困难的事,而且大部分数学建模教材通常直接给出初始值,不会解释初始值是怎么来的。所以笔者在给大专生讲授此内容时也直接给出初始值,但学生不易接受。

由于非线性曲线拟合实际上是一个无约束优化问题,即

决策变量是拟合函数含有的待定参数b,因此可以用Lingo软件来解决。下面举一个例子。

例:给药方案制定问题,详细介绍参见文献[2]第145页。

模型假设:

[1]机体看作一个房室。

[2]药物进入机体到分布均匀所需的时间不计。

[3]药物排出速率与血药浓度成正比,比例系数。

[4]血药容积为v,t=0时注射剂量为d,则t=0,血药浓度为。

由假设[3]得:,由假设[4]得。解微分方程:得(其中d=300mg)。

下面通过非线性拟合求出参数。

在Lingo软件中输入以下程序:

model:

sets:

gh/1.9/:t,c;

endsets

data:

t=0.25,0.5,1,1.5,2,3,4,6,8;

c=19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01;

enddata

min=@sum(gh:(((300/a1)*@exp(-a2*t))-c)^2);

end

运行程序得最优值为1.065887,即误差为1.06589,a1=14.82116,。由此得到拟合函数。

在Matlab软件中输入以下程序:

>>t=[0.25,0.5,1,1.5,2,3,4,6,8];

c=[19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01];

f=@(t)(300/14.82116).*exp(-0.24197.*t);

plot(t(1:9),c(1:9),'r*',[0.25:0.1:8],f([0.25:0.1:8]),'k')

运行程序,得到散点图和拟合曲线图如下:

三、制定给药方案

假设:

每次注射剂量D,间隔时间。

血药浓度应。

初次剂量应加大。

给药方案记为:,则:

将代入计算得:

故可制定给药方案:

D0=370.5mg,D=222.3mg,t=3.8h,

即首次注射mg,其余每次注射mg,注射的间隔时间为h。

用Lingo软件求解非线性曲线拟合,不需要给定初始值,弥补了Matlab软件的不足,同时,程序简单,结果可靠,是求解非线性曲线拟合的一种比较好的方法,但是Lingo软件不会作图,无法展示散点图和拟合曲线图,此时可借助Matlab软件来解决。综上所述,对于求解非线性曲线拟合,最好将Lingo软件与Matlab软件两者结合起来使用,各取所长。

【参考文献】

[1]章绍辉.数学建模[M].北京:科学出版社,2009.

[2]刘保东,宿洁,陈建良.数学建模基础教程[M].北京:高等教育出版社,2015.

[3]袁新生,邵大宏,郁时炼.LINGO和Excel在数学建模中的应用[M].北京:科学出版社,2007.

猜你喜欢
MATLAB软件
MATLAB软件在数学模型课程中的应用
基于神经网络对CFRP砼梁的可靠度分析
磁性材料磁化曲线和磁滞回线的Matlab绘制与拟合
太阳影长的参数模型研究
引入计算机仿真的数学物理方法教学构想与实践
基于应用型本科院校《自动控制原理》课程教学改革
基于模糊分析的区域出租车资源紧缺程度评价研究
Matlab符号函数绘图在普通物理教学中的应用
大学物理实验教学中基于MATLAB的液体表面张力系数测定的实验数据处理
MATLAB软件可视化效果和数值计算在高等数学学习中的应用