数学建模常用方法MATLAB求解(好)

更新时间:2023-06-05 19:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数学建模中运用matlab的具体方法。

数学建模竞赛

数学建模中运用matlab的具体方法。

几种常见的数学方法及软件求解一、曲线拟合及MATLAB软件求解 已知离散点上的数据集 [( x1 , y1 )( x2 , y2 ) ( xn , yn )],

求得一解析函数y=f(x)使y=f(x)在原离散点 xi 上尽可能 接近给定 yi 的值,这一过程叫曲线拟合。最常用的 曲线拟合是最小二乘法曲线拟合,拟合结果可使误差的 平方和最小,即找出使

i 1

n

f ( xi ) yi

2

最小的f(x).

数学建模中运用matlab的具体方法。

格式:p=polyfit(x,y,n). 说明:求出已知数据x,y 的n次拟合多项式f(x)的系 数p,x 必须是单调的。 例1 已知某函数的离散值如表xi yi 0.5 1.75 1.0 2.45 1.5 3.81 2.0 4.80 2.5 7.00 3.0 8.65

求二次拟合多项式. 先画函数离散点的图形 输入命令 : >> x=[0.5 1.0 1.5 2.0 2.5 3.0]; >> y=[1.75 2.45 3.81 4.80 7.00 8.60]; >> scatter(x,y,5) 结果见图3

数学建模中运用matlab的具体方法。

由图可看出可用二次多项式拟合。 再输入命令 : >> p=polyfit(x,y,2) p= 0.5614 0.8287 1.1560 即二次拟合多项式为 f ( x) 0.5614 x 2 0.8287 x 1.1560

数学建模中运用matlab的具体方法。

画出离散点及拟合曲线: 输入命令 : >> x1=0.5:0.05:3.0; >> y1=polyval(p,x1); >> plot(x,y,'*r',x1,y1,'-b') 结果见图5.4

数学建模中运用matlab的具体方法。

二、一维插值

1、一维插值的定义已知 n+1个节点 ( x j , y j ) ( j 0,1, n, 其中

xj 互不相同,不妨设 a x0 x1 xn b),

求任一插值点

x ( x j ) 处的插值 y * .*

yy0

*

y1

x0 x1 x *

xn

数学建模中运用matlab的具体方法。

构造一个(相对简单的)函数 y f (x), 通过全部节点, 即

f ( x j ) y j ( j 0,1, n)再用

f (x) 计算插值,即 y f ( x ).* *

yy0

*

y1

x0 x1 x *

xn7

数学建模中运用matlab的具体方法。

拉格朗日(Lagrange)插值已知函数f(x)在n+1个点x0,x1,…,xn处的函数值为 y0,y1,…,yn 。求一n次多项式函数Pn(x),使其满足: Pn(xi)=yi,i=0,1,…,n. 解决此问题的拉格朗日插值多项式公式如下

Pn ( x ) L i ( x ) y ii 0

n

其中Li(x) 为n次多项式:

( x x 0 )( x x 1 ) ( x x i 1 )( x x i 1 ) ( x x n ) L i (x) ( x i x 0 )( x i x 1 ) ( x i x i 1 )( x i x i 1 ) ( x i x n )

称为拉格朗日插值基函数。

数学建模中运用matlab的具体方法。

拉格朗日(Lagrange)插值特别地: 两点一次(线性)插值多项式:

x x0 x x1 L1 x y0 y1 x0 x1 x1 x0三点二次(抛物)插值多项式:

x x1 x x2 y x x0 x x2 y x x0 x x1 y L2 x 0 1 2 x0 x1 x0 x2 x1 x0 x1 x2 x2 x0 x2 x1 直接验证可知, Ln x 满足插值条件.9

数学建模中运用matlab的具体方法。

分段线性插值y oLn ( x )

xj-1 xj xj+1 xn x

x0

yj 0

n

j

l j ( x)

x x j 1 , x j 1 x x j n越大,误差越小. x j x j 1 x x j 1 l j ( x)

, x j x x j 1 lim Ln ( x) g ( x), x0 x x j x j 1 n 0, 其它 10

计算量与n无关;

xn

数学建模中运用matlab的具体方法。

三次样条插值比分段线性插值更光滑。y

a

xi-1

xi

b

x

在数学上,光滑程度的定量描述是:函数(曲 线)的k阶导数存在且连续,则称该曲线具有k阶光 滑性。 光滑性的阶次越高,则越光滑。是否存在较低 次的分段多项式达到较高阶光滑性的方法?三次 样条插值就是一个很好的例子。11

数学建模中运用matlab的具体方法。

三次样条插值

S ( x) {si ( x), x [ xi 1 , xi ], i 1, n}1) si ( x ) ai x 3 bi x 2 ci x d i (i 1, n) 2) S ( xi ) yi (i 0,1, n) 3) S ( x ) C 2 [ x0 , xn ]

si ( xi ) si 1 ( xi ), si ( xi ) si 1 ( xi ), si ( xi ) si 1 ( xi ) (i 1, , n 1)4) S ( x0 ) S ( xn ) 0 ( 自然边界条件) 2) 3) 4) ai , bi , ci , d i S ( x)

lim S ( x) g ( x)n

g(x)为被插值函数。

数学建模中运用matlab的具体方法。

2、一维插值的MATLAB软件命令: 已知离散点上的数据集[( x1 , y1 )( x2 , y2 ) ( xn , yn )], 求得一解析函数连接自变量相邻的两个点,并求得两点 间的数值,这一过程叫插值。 MATLAB在一维插值函数interp1中,提供了四种 插值方法选择:线性插值、三次样条插值、立方插值 和最近邻点插值。interp1的本格式为: yi=interp1(x,y,xi,'method') 其中x,y分别表示数据点的横、纵坐标向量,x 必须 单调,xi为需要插值的横坐标数据(或数组),xi不能 超出x的范围,而method为可选参数,有四种选择: ‘nearest’ :最邻近插值 ‘linear’ : 线性插值; 13

数学建模中运用matlab的具体方法。

‘spline’ : 三次样条插值; ‘cubic’ : 立方插值。 缺省时: 分段线性插值。 例2 在1-12的11小时内,每隔1小时测量一次温度,测 得的温度依次为:5,8,9,15,25,29,31,30, 22,25,27,24。试估计在 3.2,6.5,7.1,11.7小时的温 度值。 解 输入命令 : >> hours=1:12; >> temps=[5 8 9 15 25 29 31 30 22 25 27 24]; >> t=interp1(hours,temps,[3.2 6.5 7.1 11.7]) %线性插值 t= 14 10.2000 30.0000 30.9000 24.9000

数学建模中运用matlab的具体方法。

>> T=interp1(hours,temps,[3.2 6.5 7.1 11.7],'spline') %三次样条插值 T= 9.6734 30.0427 31.1755 25.3820 比较发现,两种结果有差异,这是因为插值是一 个估计或猜测的过程。

两种插值的画图如下;输入命令 : >> t0=1:0.1:12; >> T0=interp1(hours,temps,t0,'spline'); >> plot(hours,temps,'+',t0,T0,hours,temps,'r:') >> xlabel('时间'); >> ylabel('温度')

数学建模中运用matlab的具体方法。

>> gtext('线性插值') >> gtext('三次样条插值') 结果见图5.5

数学建模中运用matlab的具体方法。

三、二维插值 对二维插值问题,MATLAB分别给出了针对插值基 点为网格节点的插值函数及针对插值基点为散乱节点的 插值函数调用格式。 1、 用MATLAB作网格节点数据的插值

已知m n个节点:(xi ,yj ,zij ),(i=1,2, m; j 1, 2, , n)

且x1 x2 xn ;

y1 y2 yn ,

求点( x* , y* )( ( xi , y j ))处的插值z *.对上述问题,MATLAB提供了二维插值函数 interp2,其基本格式为:17

数学建模中运用matlab的具体方法。

z=interp2(x0,y0,z0,x,y,’method’) 其中x0,y0是自变量。X0,y0的分量值必须是单调 递增的。X0和y0分别是m维和n维向量,分别表示已 知数据点的横、纵坐标向量,z0是m*n维矩阵,标明 相应于所给数据网格点的函数值。向量x,y是待求函数 值所给定网格点的的横、纵坐标向量,x,y的值分别不 能超出x0,y0的范围。 而method为可选参数,有四种选择: ‘nearest’ 最邻近插值 ‘linear’ 线性插值 ‘spline’ 三次样条插值 ‘cubic’ 三次插值 缺省时, 是线性插值18

数学建模中运用matlab的具体方法。

例3:测得平板表面3×5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试求在平板表面坐标为(1.5,1.5),(2,1.6),(2.5,2) (3.5,4.5)处的温度,并作平板表面的温度分布曲面 z=f(x,y)的图形, (1)先在三维坐标画出原始数据,画出粗糙的温 度分布曲图. 输入以下命令: x0=1:5; y0=1:3; temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86]; 19

数学建模中运用matlab的具体方法。

mesh(x0,y0,temps) 结果见图5.6

分别用线性性插值和三次样条插值求已知点的温度。输入命令 :20

数学建模中运用matlab的具体方法。

>> t=interp2(x0,y0,temps,[1.5 2 2.5 3.5],[1.5 1.6 2 4.5],'liner')

t=76.2500 70.2000 62.0000 T= NaN>> T=interp2(x0,y0,temps,[1.5 2 2.5 3.5],[1.5 1.6 2 4.5],'spline')

71.4531 65.5200 60.9688 188.8906(2)以平滑数据,在x、y方向上每隔0.2个单位的地方 进行插值画出线性和三次样条插值的温度分布曲面图. 输入以下命令得温度的线性插值曲面图: >> x=1:0.2:5; >> y=1:0.2:3; >> z=interp2(x0,y0,temps,x',y,'linear'); >> mesh(x,y,z) 21

本文来源:https://www.bwwdw.com/article/9q41.html

Top