计算方法

课程简介

张瑞
中国科学技术大学数学科学学院
http://staff.ustc.edu.cn/~rui

课程简介

ieee-float

如何求解数学模型问题?

  • 最理想的结果,可以找到数学模型问题的解析解
  • 在大部分情形下,求解数学模型的解析解很困难,或者解析解很复杂,不利于计算、分析
  • 随着计算机的发展,可以用计算机来求解

计算方法是一种研究并求解数学问题的数值近似解的方法。

具体来说:

  1. 简单或复杂的数学问题。如$\sqrt x$, $\ln x$, $Ax=b$, $\displaystyle\int_a^b f(x)dx$, 微分方程(组) $...$ 等等问题
  2. 构造数值计算算法,将问题变为$+$, $-$, $\times$, $\div$的操作
  3. 编程让计算机计算,并得到结果

课程特点

计算方法是连接数学模型问题计算机的桥梁,它具有

  • 理论性: 需要对模型问题有些简单的认知(如:解的存在唯一性);需要对算法的一些特性进行分析
  • 实践性: 需要编程实现算法,

随着计算机技术的发展,计算方法已经广泛应用到包括物理、化学、生物学、经济学等各行各业。

程序作业

本课程有编程的要求:

  1. 编程语言不限。可以使用如:C, Python, Fortran, R, Matlab, Mathematica等, 但不能使用库函数完成主要功能。
  2. 至少使用双精度计算,给出小数点后12位以上的数字。
  3. 每次作业有截止日期,不许拖延。
  4. 提交网址: http://num.hpc.ac.cn

课程内容

本课程只是简单地介绍一些基础的数值分析算法,包括

  • 数值分析: 高等数学问题的数值求解。 如定积分的Newton-Leiberniz公式
    \[\int_a^b f(x)dx=F(b)-F(a) \]
    其中的原函数$F(x)$是理论上存在,但实际中很难找到,甚至不能表达。如$\int \sin\frac1x dx$
  • 数值代数: 线性代数问题的数值求解。如线性方程组的Gram法则
    \[Ax=b\,\quad \Rightarrow \quad x_i=\frac{D_i}{D} \]
    算法可以用计算机编程实现。但计算量太大。当$n=20$时,需要用10亿/秒的计算机算30年。
  • 常微分方程数值解: 只能得到很小部分常微分方程的解析解。对于一般的微分方程,只能寻求数值解。

课程基础

本课程需要掌握一门编程语言,一元微积分和线性代数的相关知识。

  • 连续函数的价值定理
  • (Rolle) 函数$f(x)$$[a,b]$上连续,在$(a,b)$内可导,且$f(a)=f(b)$, 则存在点$\xi\in(a,b)$满足
    \[f'(\xi)=0 \]
  • (Taylor公式) 设$f(x)$在区间$I$内具有$n+1$阶导数,$x$, $x_0$$I$内任意两点,存在$x$$x_0$之间的数$\xi$,满足
    \[\begin{aligned} f(x)=f(x_0)&+f'(x_0)(x-x_0)+\dfrac{f''(x_0)}{2!}(x-x_0)^2+\cdots \\ &+\dfrac{f^{(n)}(x_0)}{n!}(x-x_0)^n+R_n(x) \end{aligned} \]
    其中
    \[R_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}(x-x_0)^{n+1} \]
    $R_n(x)$称为Lagrange余项。
  • (积分中值定理) $f(x)$$[a,b]$上连续,则存在$\xi\in(a,b)$,使得
    \[\int_a^b f(x)dx=f(\xi)(b-a) \]
  • Gram法则,初等矩阵,初等变换等

目录

本节读完

例 1.

1.

% 实际问题的模型抽象 \begin{tikzpicture}[scale=2] \node (u) at (0,0)[shape=rectangle, draw] {实际问题}; \node (y) at (3,0)[shape=rectangle, draw] {数学模型}; \node (z) at (3,-1.5)[shape=rectangle, draw] {数学结论}; \node (x) at (0,-1.5)[shape=rectangle, draw] {解释实际问题}; \draw[->] (u) to node[auto, blue] {简化抽象} (y); \draw[->] (y) -- node[auto, blue] {求解} (z); \draw[->] (z) -- node[auto, blue] {结果分析} (x); \draw[->] (x) -- node[auto, blue] {检验} (u); \end{tikzpicture}
  1. need to install dvisvgm 2.8 to convert pdf to svg
  2. install
    ####### compile dvisvgm 2.8
    sudo apt install libkpathsea-dev pkg-config libfreetype6-dev libbrotli-dev libwoff-dev
    make
  3. install
    ###### xelatex metapost
    sudo apt install texlive-xetex texlive-metapost
    ####### free chinese fonts
    sudo apt install fontconfig fonts-arphic-ukai latex-cjk-chinese-arphic-gbsn00lp fonts-arphic-gbsn00lp latex-cjk-chinese-arphic-gkai00mp fonts-wqy-microhei fonts-wqy-zenhei fonts-noto