数学建模培训第四次课程_计算方法

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

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

数学建模 计算方法

1. 2. 3. 4. 5. 6. 7. 8. 9.

误差 方程求根 解线性方程组的直接法 解非线性方程组的迭代法 插值 拟合 数值积分与数值微分 概率论与数理统计问题的计算机求解 非传统解法

数学建模 计算方法

舍入误差:计算机只能存储有效数字而引起的。数值计算的若干原则 1.避免两相近数相减去 2.避免绝对值太小的数做除数 3.要防止大数“吃掉”小数 4.简化计算步骤,提高计算效率 截断误差:由于用离散、代数的公式近似代替连续的数学 表达式时产生的。 f x0 x f x0 f x0 lim 2 3 x 0 x x x x e 1 x f x0 x f x0 2! 3! x

数学建模 计算方法

ax2 bx c 0 b b2 4ac 求根公式:x 2a比如:

直接利用求根公式在计算机进行计算,得到:

x1 54.30, x2 -0.0016产生了误差,误差是多少?

x2 54.32 x 0.1 0精确解:

x1 54.318158995 x2 0.0018410049576

b b2 4ac 对x 进行分子有理化,得到 2a

b 4ac2

x

2c b b 2 4ac

2951 0.4000 54.32

b

数学建模 计算方法

1 lim 1 e n n

n

n越大,数列越接近无理数e

当n是10的次幂时,不能使用1/2的次幂来精确表示1/n 当n很大时,由于1和1/n的有效数数位位置不匹配, 因而计算1+1/n产生的误差相对于1/n的值来说是很大

(1+1/n)^n 的n次幂又放大了这种误差。

x.xxx xxxx xxxx xxxx + 0.000 0000 yyyy yyyy yyyy yyyy = x.xxx xxxx zzzz zzzz yyyy yyyy

数学建模 计算方法

方程求根

数学建模 计算方法

不动点迭代 x 1, 则迭代收敛

数学建模 计算方法

二分法

数学建模 计算方法

解线性方程组的直接法高斯消元法 数值求解线性方程组的局限性算法 向后代入法或向前代入法高斯消去法 局部选主元的高斯消去法 全选主元的高斯消去法 局部选主元的LU分解 Cholesky 分解

计算量 n^2 浮点操作2n^3/3 浮点操作 2n^3 /3 浮点操作 和 n^2比较 2n^3 /3 浮点操作 和 n^3比较 2n^3 /3 浮点操作 和 n^2比较 n^3 /3 浮点操作

数学建模 计算方法

病态矩阵

条件数

k 近似为1时 方程组为良态 k 很大时 方程组为病态

残差残差的向量为 若数值解接近精确解,那么 接近零, 反过来,当 接近零不能保证是精确解

数学建模 计算方法

分解法1. LU分解法 2 cholesky分解法

X=A\b

数学建模 计算方法

对方程组Ax=b,如果A中的系数或b中元素依赖于一个或多个x, 那么此方程组成为非线性的

牛顿法 (雅可比)x A 1 x b x

用迭代求解非线性系统x A 1b令 得到:

f 0 或迭代过程:step 1

f 0

step 2step 3 step 4

A k A x k b k b x k

f k A k x k b k 判断f的范数是否足够小 k 1

step 5

x

go to

step 1

数学建模 计算方法

1 基本思想 2 任意阶的插值多项式单项式插值 拉格朗日插值

牛顿插值

3 分段多项式插值分段线性 三阶样条插值

4 MATLAB的内置插值函数linterp函数 linterp2函数

数学建模 计算方法

拟合:

拟合函数与数据点不一致插值:插值函数要精确地经过每个已经数据点

数学建模 计算方法

线性多项式插值

插值(内插)

二次多项式插值

数学建模 计算方法

y c1x2 c2 x c3此函数通过 (-2,-2),(-1,1) (2,-1),代入上式,得到 2 c1 2 c2 2 c32

已知数据点: 1, y1 , x2 , y2 , x3 , y3 x

x12 2 x2 2 x3

x1 1 c1 y1 x2 1 c2 y2 x3 1 c3 y3

1 c1 1 c2 1 c32

插值多项式为:

1 c1 2 c2 2 c32

y c1x2 c2 x c3

4 2 1 c1 2 1 1 1 c2 1 4 2 1 c 1 3

数学建模 计算方法

function yi = lagrint(x,y,xi) dxi = xi - x; n = length(x); L = zeros(size(y));

已知数据点: 1, y1 , x2 , y2 x

P 1 x y1L1 x y2 L2 x yn Ln x nLj x k 1 k j n

L(1) = prod(dxi(2:n))/prod(x(1)-x(2:n)); P x c1x c2 1 L(n) = prod(dxi(1:n-1))/prod(x(n)-x(1:n-1)); for j=2:n-1 进行线性插值,得到方程: num = prod(dxi(1:j-1))*prod(dxi(j+1:n)); y y1 y1 x2 y2 x1 den = 2 prod(x(j)-x(1:j-1))*prod(x(j)c1 c2 x(j+1:n));x1 x2 x2 x1 L(j) = num/den; end P x y1L1 x y2 L2 x 1 yi = sum(y.*L);

x xk x j xk

x xk n x xk Lj x k 1 x j xk k j 1 x j xk

j 1

x x2 L1 x x1 x2

L2 x

x x1 x2 x1

function y=lagrange(x0,y0,x) ii=1:length(x0); y=zeros(size(x)); for i=ii ij=find(ii~=i); y1=1; for j=1:length(ij), y1=y1.*(x-x0(ij(j))); end y=y+y1*y0(i)/prod(x0(i)-x0(ij)); end

数学建模 计算方法

x0=-1+2*[0:10]/10; y0=1./(1+25*x0.^2); % 产生数据点 x=-1:.01:1; y=lagrange(x0,y0,x); % Lagrange 插值 ya=1./(1+25*x.^2); plot(x,ya,x,y,':') y1=interp1(x0,y0,x,‘cubic’); % 三次Hermite插值 y2=interp1(x0,y0,x,‘spline’); % 三次分段样条插值 plot(x,ya,x,y1,':',x,y2,'--')

数学建模 计算方法

一维插值函数

interp1

y=interp1(x,y,x1,方法)

x,y :已知数据点 x1 : 插值横坐标 方法:默认为‘linear’(线性插值) ‘nearest’ 最近点等值方式 ‘cubic’ 三次Hermite插值 ‘spline’ 三次样条插值

数学建模 计算方法

二维网络数据插值函数

interp2

z=interp2(x0,y0,z0,x1,y1,‘方法’) 什么叫“网格形式”?

[x,y]=meshgrid(-2:2,-1:1)x= -2 -1 0 1 -2 -1 0 1 -2 -1 0 1 2 2 2

x0,y0,z0 :已知数据点 (网格形式) x1,y1: 插值(网络形式) 方法:默认为‘linear’(线性插值) ‘cubic’ 三次Hermite插值 ‘spline’ 三次样条插值

y= -1 -

1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1

数学建模 计算方法

二维一般分布数据的插值问题

griddata

z=griddata (x0,y0,z0,x1,y1,‘方法’)x0,y0,z0 :已知数据点 x1,y1: 插值 方法:‘linear’(线性插值) ‘cubic’ 三次Hermite插值 ‘nearest’ 三次样条插值 ‘v4’

数学建模 计算方法

下表给出在以码为单位的直角坐标为 X ,Y 的水面一点处以英尺计的水深ZX 129.0140.0 108.5 88.0 185.5 195.0 105.5

Y 7.5141.5 28.0 147.0 22.5 137.5 85.5

Z 48 6 8 6 8 8

X 157.5107.5 77.0 81.0 162.5 117.5 162.0

Y -6.5-81.0 3.0 56.5 84.0 -38.5 -66.5

Z 99 8 8 4 9 9

船的吃水深度为5英尺,在矩形区域(75,200)*(-50,150) 里的哪些地方船要避免进入

本文来源:https://www.bwwdw.com/article/7an4.html

Top