拟合

一.拟合问题

10.拟合_命令窗口


10.拟合_命令窗口_02


10.拟合_最小二乘法_03


10.拟合_命令窗口_04


拟合与插值的区别例题

10.拟合_命令窗口_05


10.拟合_拟合_06

二.求解办法-线性最小二乘法

10.拟合_命令窗口_07


10.拟合_最小二乘法_08


例题

10.拟合_最小二乘法_09


10.拟合_拟合_10


matab代码:

x=0.1:0.1:1.1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
R=[(x.^2)' x' ones(11,1)];
A=R\y'

10.拟合_拟合_11

10.拟合_最小二乘法_12


matab代码:

=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
A=polyfit(x,y,2)
z=polyval(A,x);
plot(x,y,'k+',x,z,'r')

10.拟合_最小二乘法_13

10.拟合_最小二乘法_14

三.非线性函数拟合问题

例题

10.拟合_命令窗口_15


10.拟合_命令窗口_16


使用lsqcurvefit命令求解

先编写M文件 curvefun1.m定义函数,代码为

function f=curvefun1(x,tdata)
f=x(1)+x(2)*exp(-0.02*x(3)*tdata)

再在命令窗口输入下面的matlab代码:

tdata=100:100:1000
cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];
x0=[0.2,0.05,0.05];
x=lsqcurvefit ('curvefun1',x0,tdata,cdata)
f= curvefun1(x,tdata)

使用lsqnonlin命令求解

先编写M文件 curvefun2.m定义函数,代码为

curvefun2.m
function f=curvefun2(x)
tdata=100:100:1000;
cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];
f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata

再在命令窗口输入下面的matlab代码:

tdata=100:100:1000
cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];
x0=[0.2,0.05,0.05];
x=lsqcurvefit ('curvefun1',x0,tdata,cdata)
f= curvefun1(x,tdata)

四.拟合问题实例-给药方案

1.题目

10.拟合_最小二乘法_17


10.拟合_最小二乘法_18


10.拟合_命令窗口_19


2.模型假设

10.拟合_最小二乘法_20


3.模型建立

10.拟合_最小二乘法_21


10.拟合_命令窗口_22


4.求解

用线性最小二乘法拟合求解

d=300;
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];
y=log(c);
a=polyfit(t,y,1)
k=-a(1)
v=d/exp(a(2))

10.拟合_拟合_23


用非线性最小二乘拟合求解c(t)-用lsqcurvefit

1)先新建curvefun3.m定义函数

function f=curvefun3(x,tdata)
d=300
f=(x(1)\d)*exp(-x(2)*tdata)

2)命令窗口输入

tdata=[0.25 0.5 1 1.5 2 3 4 6 8];
cdata=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01];
x0=[10,0.5];
x=lsqcurvefit('curvefun3',x,tdata,cdata);
f=curvefun3(x,tdata)

5.给药方案设计

10.拟合_最小二乘法_24


10.拟合_拟合_25

​返回目录​

​下一篇:11.预测方法​