数学建模培训第四次课程_计算方法
时间:2025-07-12
时间:2025-07-12
数学建模 计算方法
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’ 最近点等值方式 ‘cubi …… 此处隐藏:1628字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:医用机器人应用及发展论文
下一篇:必修三数学检测试题