《工程数值计算Python教程》笔记

文章目录

第一章:绪论


1.1 1.1 1.1|数值计算在工程科学中的重要性


1.2 1.2 1.2|数值计算方法


1.3 1.3 1.3|程序设计

盒图
  • 盒图也称为 N − S N-S NS结构化流程图
  • 如果一个算法可以用 N − S N-S NS流程图描述,则说明它是结构化的
  • 盒图示例

1

计算方法的选取
减少运算次数
  • 计算多项式 P n ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a n x n P_{n} (x) = a_{0} + a_{1} x + a_{2} x^{2} + \cdots + a_{n} x^{n} Pn(x)=a0+a1x+a2x2++anxn的值
    • 如果逐项计算,所需乘法次数为 1 + 2 + ⋯ + n = 1 2 n ( n + 1 ) 1 + 2 + \cdots + n = \cfrac{1}{2} n (n + 1) 1+2++n=21n(n+1),所需加法次数为 n n n

S 0 = a 0 S k = a k x k ( k = 1 , 2 , ⋯ , n ) P n ( x ) = ∑ i = 0 n S i S_{0} = a_{0} \\ S_{k} = a_{k} x^{k} (k = 1 , 2 , \cdots , n) \\ P_{n} (x) = \displaystyle\sum\limits_{i = 0}^{n}{S_{i}} S0=a0Sk=akxk(k=1,2,,n)Pn(x)=i=0nSi

    • 如果采用递推法(秦九韶算法),则只需 n n n次乘法和 n n n次加法

S n = a n S k = x S k − 1 + a k ( k = n − 1 , n − 2 , ⋯ , 0 ) P n ( x ) = S 0 S_{n} = a_{n} \\ S_{k} = x S_{k - 1} + a_{k} (k = n - 1 , n - 2 , \cdots , 0) \\ P_{n} (x) = S_{0} Sn=anSk=xSk1+ak(k=n1,n2,,0)Pn(x)=S0

避免相近的数相减
  • 在计算过程中,应避免相近的数相减,不然会使有效数字的位数大大减少

1.4 1.4 1.4|误差的来源、表示及传递

误差的来源和分类
模型误差
  • 模型与实际问题的误差
观测误差
  • 通常数学模型中都包含一些需要实验测定的参数,这些参数存在测定值与真实值之间的误差
截断误差
  • 数值计算方法中,常用收敛无穷级数的前几项代替无穷级数
  • 截断误差与算法有关,常用截断误差限或截断误差的阶来判断某种算法的优劣
舍入误差
  • 由于计算机位数有限引起的误差称为舍入误差
  • 舍入误差与计算机有关,也与数学表达式有关
误差的表示
绝对误差
  • x x x表示准确值 x ∗ x^{*} x的近似值,绝对误差为 e = x − x ∗ e = x - x^{*} e=xx
  • 通常 x ∗ x^{*} x是未知的,故 e e e的真实值也是不知道的,常根据实际情况估算它的上限, ∣ e ∣ = ∣ x − x ∗ ∣ ≤ ε | e | = | x - x^{*} | \leq \varepsilon e=xxε x − ε ≤ x ∗ ≤ x + ε x - \varepsilon \leq x^{*} \leq x + \varepsilon xεxx+ε ε \varepsilon ε称为 x x x的绝对误差限
相对误差
  • e r = e x = x − x ∗ x e_{r} = \cfrac{e}{x} = \cfrac{x - x^{*}}{x} er=xe=xxx
  • ∣ e r ∣ = ∣ x − x ∗ x ∣ ≤ ε r | e_{r} | = | \cfrac{x - x^{*}}{x} | \leq \varepsilon_{r} er=xxxεr
平均误差
  • 算数平均值 x ˉ = 1 n ∑ i = 1 n x i \bar{x} = \cfrac{1}{n} \displaystyle\sum\limits_{i = 1}^{n}{x_{i}} xˉ=n1i=1nxi
  • 平均误差为 δ = 1 n ∑ i = 1 n d i = 1 n ∑ i = 1 n ∣ x ˉ − x i ∣ \delta = \cfrac{1}{n} \displaystyle\sum\limits_{i = 1}^{n}{d_{i}} = \cfrac{1}{n} \displaystyle\sum\limits_{i = 1}^{n}{| \bar{x} - x_{i} |} δ=n1i=1ndi=n1i=1nxˉxi
标准误差
  • σ = 1 n − 1 ∑ i = 1 n d i 2 \sigma = \sqrt{\cfrac{1}{n - 1} \displaystyle\sum\limits_{i = 1}^{n}{d_{i}^{2}}} σ=n11i=1ndi2
  • 标准误差也称为均方根误差
误差的传递
误差在和、差计算中的传递
  • x ∗ x^{*} x y ∗ y^{*} y的近似值为 x x x y y y z ∗ = x ∗ + y ∗ z^{*} = x^{*} + y^{*} z=x+y
绝对误差
  • e z = e x + e y e_{z} = e_{x} + e_{y} ez=ex+ey
  • ∣ e z ∣ ≤ ∣ e x ∣ + ∣ e y ∣ | e_{z} | \leq | e_{x} | + | e_{y} | ezex+ey
相对误差
  • e r z = ( x + y ) − ( x ∗ + y ∗ ) x + y = x − x ∗ x × x x + y + y − y ∗ y × y x + y e_{rz} = \cfrac{(x + y) - (x^{*} + y^{*})}{x + y} = \cfrac{x - x^{*}}{x} \times \cfrac{x}{x + y} + \cfrac{y - y^{*}}{y} \times \cfrac{y}{x + y} erz=x+y(x+y)(x+y)=xxx×x+yx+yyy×x+yy
    • x x x y y y同号时, ∣ x x + y ∣ ≤ 1 | \cfrac{x}{x + y} | \leq 1 x+yx1 ∣ y x + y ∣ ≤ 1 | \cfrac{y}{x + y} | \leq 1 x+yy1 e r z ≤ ∣ e r x ∣ + ∣ e r y ∣ e_{rz} \leq | e_{rx} | + | e_{ry} | erzerx+ery
    • x + y ≈ 0 x + y \approx 0 x+y0时,可能有 e r z ≫ ∣ e r x ∣ + ∣ e r y ∣ e_{rz} \gg | e_{rx} | + | e_{ry} | erzerx+ery
误差在积、商计算中的传递
  • x ∗ x^{*} x y ∗ y^{*} y均为正数,近似值分别为 x x x y y y,绝对误差为 d x = x − x ∗ dx = x - x^{*} dx=xx d y = y − y ∗ dy = y - y^{*} dy=yy,相对误差为 x − x ∗ x = d x x = d ln ⁡ x \cfrac{x - x^{*}}{x} = \cfrac{dx}{x} = d \ln{x} xxx=xdx=dlnx y − y ∗ y = d y y = d ln ⁡ y \cfrac{y - y^{*}}{y} = \cfrac{dy}{y} = d \ln{y} yyy=ydy=dlny
乘积的绝对误差
  • d ( x y ) = x d y + y d x d(xy) = x dy + y dx d(xy)=xdy+ydx
乘积的相对误差
  • d ln ⁡ x y = d ( ln ⁡ x + ln ⁡ y ) = d x x + d y y d \ln{xy} = d(\ln{x} + \ln{y}) = \cfrac{dx}{x} + \cfrac{dy}{y} dlnxy=d(lnx+lny)=xdx+ydy
商的绝对误差
  • d ( x / y ) = y d x − x d y y 2 d(x / y) = \cfrac{y dx - x dy}{y^{2}} d(x/y)=y2ydxxdy
商的相对误差
  • d ln ⁡ x / y = d ( ln ⁡ x − ln ⁡ y ) = d x x − d y y d \ln{x / y} = d(\ln{x} - \ln{y}) = \cfrac{dx}{x} - \cfrac{dy}{y} dlnx/y=d(lnxlny)=xdxydy

第二章:Python基础


2.1 2.1 2.1|概述


第三章:方程(组)的求解


3.1 3.1 3.1|非线性代数方程的求根

二分法
原理
  • f f f是一个连续函数,假设存在一个区间 [ a , b ] [a,b] [a,b] f f f在区间的两端点处的值符号相反,即 f ( a ) f ( b ) < 0 f(a) f(b) < 0 f(a)f(b)<0,于是, f f f在区间 [ a , b ] [a,b] [a,b]有一个根,这可由函数的中值定理得到
步骤
  • 有一个区间 [ a , b ] [a,b] [a,b]和值 u = f ( a ) u = f(a) u=f(a) v = f ( b ) v = f(b) v=f(b),满足 u v < 0 uv < 0 uv<0

  • 构造区间的中点 c = ( a + b ) / 2 c = (a + b) / 2 c=(a+b)/2并计算 w = f ( c ) w = f(c) w=f(c),可能碰巧 w = 0 w = 0 w=0,则算法结束

  • 通常情况下 w ≠ 0 w \neq 0 w=0,如果 w u < 0 wu < 0 wu<0,则可断定在区间 [ a , c ] [a,c] [a,c]中存在 f f f的一个根,因而将 c c c的值存储到 b b b中,将 w w w的值存储到 v v v中,如果 w v < 0 wv < 0 wv<0,则 f f f在区间 [ c , b ] [c,b] [c,b]中有一个根,因而将 c c c的值存储到 a a a中,将 w w w的值存储到 u u u

  • 重复进行,每次区间长度减少一半,直到区间达到需要的精度

  • 结束时,根的最佳估计是 ( a + b ) / 2 (a + b) / 2 (a+b)/2

  • 在程序运行过程中,中点处函数值 w = 0 w = 0 w=0的概率是极低的,为此增加一个判断语句是不值得的,对任意区间 [ a , b ] [a,b] [a,b],只要 u v ≤ 0 uv \leq 0 uv0即可保证区间中包含零点

Python实现
  • 求解 f ( x ) = x 3 − 3 x + 1 f(x) = x^{3} - 3x + 1 f(x)=x33x+1在区间 [ 0 , 1 ] [0,1] [0,1]上的零点
def bisect(f, a, b, eps=1e-9, args=()):u, v = f(a, *args), f(b, *args)if u * v <= 0:while abs(a - b) > eps:c = (a + b) / 2w = f(c, *args)if w * u <= 0:b, v = c, welse:a, u = c, wreturn (a + b) / 2else:print(f'The function values at {a} and {b} have the same sign')def f(x): return x * (x * x - 3) + 1if __name__ == '__main__':a, b = 0, 1eps = 1e-9res = bisect(f, a, b, eps)print('The result is:', res)
  • 求解 f ( x ) = cosh ⁡ ( x 2 + 1 − e x ) + log ⁡ ∣ sin ⁡ x ∣ f(x) = \cosh{(\sqrt{x^{2} + 1} - e^{x})} + \log{| \sin{x} |} f(x)=cosh(x2+1 ex)+logsinx在区间 [ 0 , 1 ] [0,1] [0,1]上的零点
    • 该式在 0 0 0点没有定义,计算会发生溢出,此时可以选择一个很小的值作为左边界,如 1 0 − 10 10^{-10} 1010
import numpy as np
from bisection import bisectdef f(x): return np.cosh(np.sqrt(x * x + 1) - np.exp(x)) + np.log10(np.abs(np.sin(x)))if __name__ == '__main__':a, b = 1e-10, 1res = bisect(f, a, b)print(f'The result is: {res}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/227179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ消息顺序性保障

RabbitMQ 没有属性设置消息的顺序性&#xff0c;只能设置消息的优先级&#xff0c;因此消息顺序性保障只能在 consumer 上实现 场景分析&#xff1a; 生产者向 RabbitMQ 里发送了三条数据&#xff0c; 顺序依次是 data1-> data2 -> data3&#xff0c;压入的是一个内存…

基于vue+element-plus+echarts制作动态绘图页面(柱状图,饼图和折线图)

前言 我们知道echarts是一个非常强大的绘图库&#xff0c;基于这个库&#xff0c;我们可以绘制出精美的图表。对于一张图来说&#xff0c;其实比较重要的就是配置项&#xff0c;填入不同的配置内容就可以呈现出不同的效果。 当然配置项中除了样式之外&#xff0c;最重要的就是…

Stable Diffusion 微调及推理优化实践指南

随着 Stable Diffsuion 的迅速走红&#xff0c;引发了 AI 绘图的时代变革。然而对于大部分人来说&#xff0c;训练扩散模型的门槛太高&#xff0c;对 Stable Diffusion 进行全量微调也很难入手。由此&#xff0c;社区催生了一系列针对 Stable Diffusion 的高效微调方案&#xf…

Qt之QNetworkAccessManager 从本地和内存中上传数据到Http服务器

简述 接连做了好几个服务器的项目&#xff0c;例如文件传输用的Ftp和对象存储服务器(Object Storage Service)&#xff0c;简单的信息传输用的WebServer&#xff0c;之前也有用过HttpServer不过都和WebServer一样简单的调用接口提交数据并没有上传过文件&#xff0c;正好趁这次…

力扣LCR 130. 衣橱整理(DFS 解法)

Problem: LCR 130. 衣橱整理 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 首先该问题可以归纳为一类遍历二维矩阵的题目&#xff0c;此类中的一部分题目可以利用DFS来解决&#xff0c;具体到本题目&#xff1a; 我们可以利用一个布尔类型的二维数组记录我们已经访…

no module named ‘xxx‘

目录结构如下 我想在GCNmodel的model里引入layers的GraphConvolution&#xff1a;from GCNmodel.layers import GraphConvolution&#xff0c;但这样却报错no module named GCNmodel&#xff0c;而且用from layers import GraphConvolution也不行。然后用sys.path.appen(xxx)…

selenium-grid4.3.0两种模式记录

selenium-grid4.3.0两种模式记录 本文运行&#xff0c;需要提前配置好Java11以及安装好Chrom、Firefox、Safari其中一个浏览器&#xff0c;如果是Chrom、Firefox需要下载对应版本的驱动&#xff0c;并给 webdriver 配置环境变量&#xff0c;Safari浏览器Mac系统会自带&#xf…

使用下载代替物理串口输出-STM32 Debug (printf) Viewer

使用下载代替物理串口输出-STM32 Debug 硬件要求配置方法代码要求打印输出结果 硬件要求 STM32的PB9、PB10引脚的串口1通常用作其他功能使用后&#xff0c;无法通过printf()函数打印输出想要调试输出查看变量或调试信息。现已使用另外一种方法实现printf()函数打印输出。 ST…

Mr. Cappuccino的第67杯咖啡——MacOS通过PD安装Win11

MacOS通过PD安装Win11 下载ParallelsDesktop安装ParallelsDesktop激活ParallelsDesktop下载Windows11安装Windows11激活Windows11 下载ParallelsDesktop ParallelsDesktop下载地址 安装ParallelsDesktop 关闭上面的窗口&#xff0c;继续操作 激活ParallelsDesktop 关闭上面的…

【LeetCode刷题】-- 161.相隔为1的编辑距离

161.相隔为1的编辑距离 方法&#xff1a;一次遍历 首先&#xff0c;我们要确认字符串的长度不会相差太远。如果长度差了2个或更多字符&#xff0c;那么 s 和 t 就不可能是一次编辑之差的字符串。 接下来&#xff0c;我们假设 s 的长度总是短于或等于 t 的长度。如果不是这样&…

【MATLAB第82期】基于MATLAB的季节性差分自回归滑动平均模型SARIMA时间序列预测模型含预测未来

【MATLAB第82期】基于MATLAB的季节性差分自回归滑动平均模型SARIMA时间序列预测模型含预测未来 一、模型介绍 1、模型简介 季节性差分自回归移动平均模型&#xff08;Seasonal Autoregressive Integrated Moving Average Model, SARIMA&#xff09;&#xff0c;又称为周期性…

uniapp的uni-im 即时通信使用教程【用户与商家对话、聊天 / 最新 / 最全 / 带源码 / 教程】

目录 使用场景用户图片商家图片 官方文档官方文档地址插件地址 项目创建uniCloud开发环境申请开发环境申请完后 概括开始使用步骤1App.vue 步骤2找到软件登录图片找到软件登录接口登录源码如下 步骤3找到软件注册图片注册源码如下 步骤4找到index.vue首页图片 index.vue源码如下…

佛山IBM System x3550 M4服务器维修检查

案例背景&#xff1a; 一家位于东莞的制造公司&#xff0c;在其佛山分厂中安装了一台IBM X3550 M4服务器作为其关键业务设备。该服务器负责管理和存储公司的生产数据、ERP系统和供应链数据。在生产过程中&#xff0c;该服务器突然发生了故障&#xff0c;导致佛山分厂的生产中断…

LT7911D是TYPE-C/DP或者EDP转2 PORT MIPI和LVDS加音频

1.概述&#xff1a; T7911D是一款高性能TYPE-C/DP/EDP转2 PORT MIPI或者LVDS的芯片&#xff0c;目前主要在AR/VR或者显示器上应用的很多&#xff0c;对于DP1.2输入&#xff0c;LT7911D可配置为1/2/4车道。自适应均衡化使其适用于长电缆应用&#xff0c;最大带宽可达21.6Gbps。…

编译android的C版本Lua库

本文讲述如何使用android studio 编译最新版本的Lua开源库),请自行下载。 我们提供的Demo,可以自行下载,工程结构如下: 本文编译的是Lua 5.4.6的版本,编译采用cmake的方式,我们支持编译静态库和动态库(我们在这一讲里:“Lua与***C在Android上的互调”是使用静态库)…

管理类联考——数学——真题篇——按知识分类——几何——解析几何

文章目录 解析几何2023真题&#xff08;2023-07&#xff09;-几何-解析几何-最值-画图求最值-两线相减求最大-联想三角形的“两边差小于第三边”&#xff0c;当为第三边为最大真题&#xff08;2023-19&#xff09;-几何-解析几何-最值-画图求最值-圆方程画出圆的形状-两点间距离…

自动驾驶学习笔记(十九)——Planning模块

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 Planning作用 Planning内容 Plannin…

Python 爬虫之简单的爬虫(一)

爬取网页上所有链接 文章目录 爬取网页上所有链接前言一、基本内容二、代码编写1.引入库2.测试网页3.请求网页4.解析网页并保存 三、如何定义请求头&#xff1f;总结 前言 最近也学了点爬虫的东西。今天就先给大家写一个简单的爬虫吧。循序渐进&#xff0c;慢慢来哈哈哈哈哈哈…

selenium 与 chromedriver安装

本文章向大家介绍selenium 安装与 chromedriver安装&#xff0c;主要包括selenium 安装与 chromedriver安装使用实例、应用技巧、基本知识点总结和需要注意事项供大家参考。 一、安装selenium 1、Selenium简介 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开…

计算机毕业设计 基于SpringBoot的二手物品交易管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…