数值微分比较

news2024/11/26 11:47:07

对于序列 { x n } = x 1 , x 2 , ⋯   , x n \{x_n\}= x_1, x_2, \cdots, x_n {xn}=x1,x2,,xn,求其导数 { x n ′ } \{x'_n\} {xn}

一、精度 O ( h ) O(h) O(h)

x k ′ = { x 2 − x 1 h , k = 1 x k − x k − 1 h , k = 2 , 3 , ⋯   , n x_k' = \begin{cases} \frac{x_{2} - x_{1}}{h}, k=1 \\ \frac{x_{k} - x_{k-1}}{h}, k=2,3,\cdots, n \\ \end{cases} xk={hx2x1,k=1hxkxk1,k=2,3,,n

其中,对 k = 1 k=1 k=1时进行处理,保证导数序列长度也为 n n n

二、精度 O ( h 2 ) O(h^2) O(h2)

也即中心微分算法

x k ′ = { x 2 − x 1 h , k = 1 x k + 1 − x k − 1 2 h , k = 2 , 3 , ⋯   , n − 1 x n − x n − 1 h , k = n x_k' = \begin{cases} \frac{x_{2} - x_{1}}{h}, k=1 \\ \frac{x_{k+1} - x_{k-1}}{2h}, k=2,3,\cdots, n-1 \\ \frac{x_{n} - x_n-{1}}{h}, k=n \\ \end{cases} xk= hx2x1,k=12hxk+1xk1,k=2,3,,n1hxnxn1,k=n

三、精度 O ( h 4 ) O(h^4) O(h4)

x k ′ = { x 2 − x 1 h , k = 1 x 3 − x 1 2 h , k = 2 − x k + 2 + 8 x k + 1 − 8 x k − 1 + x k − 2 12 h , k = 3 , ⋯   , n − 2 x n − x n − 2 2 h , k = n − 1 x n − x n − 1 h , k = n x_k' = \begin{cases} \frac{x_{2} - x_{1}}{h}, k=1 \\ \frac{x_{3} - x_{1}}{2h}, k=2 \\ \frac{-x_{k+2} + 8 x_{k+1} - 8 x_{k-1} + x_{k-2}}{12h}, k=3,\cdots, n-2 \\ \frac{x_{n} - x_{n-2}}{2h}, k=n-1 \\ \frac{x_{n} - x_n-{1}}{h}, k=n \\ \end{cases} xk= hx2x1,k=12hx3x1,k=212hxk+2+8xk+18xk1+xk2,k=3,,n22hxnxn2,k=n1hxnxn1,k=n

四、比较

x = sin ⁡ ( t ) x=\sin(t) x=sin(t),真实导数为 cos ⁡ ( t ) \cos(t) cos(t),离散采样作比较。当 T s = 0.1 T_s=0.1 Ts=0.1 时如下,可见直接微分精度较低。

在这里插入图片描述

在这里插入图片描述

采样时间为 T s = 1 T_s=1 Ts=1 时如下

在这里插入图片描述
在这里插入图片描述

结论:很多时候中心微分就够了

代码如下

Ts = 1;
t = 0:Ts:20;
N = length(t);
t = reshape(t, [N,1]);

x = sin(t);
dx = cos(t);

dx1 = diff_1st(x, Ts);
dx2 = diff_2nd(x, Ts);
dx3 = diff_4th(x, Ts);


subplot(211);plot(t, dx1, t, dx2, t, dx3, t, dx, 'linewidth',1)
legend('O(h)', 'O(h^2)', 'O(h^4)', '真实值')
title('微分结果')

subplot(212);plot(t, dx-dx1, t, dx-dx2, t, dx-dx3, 'linewidth',1)
legend('O(h)', 'O(h^2)', 'O(h^4)')
title('微分误差')

function dx = diff_1st(x, dt)
    dx = (x(2:end) - x(1:end-1)) / dt;
    dx = [dx(1); dx];
end

function dx = diff_2nd(x, dt)   
    dx = (x(3:end) - x(1:end-2)) / (2*dt);
    dx1 = (x(2)-x(1)) / dt;
    dxend = (x(end)-x(end-1)) / dt;
    dx = [dx1; dx; dxend];
end

function dx = diff_4th(x, dt)
    dx = (-x(5:end) + 8 * x(4:end-1) - 8 * x(2:end-3) + x(1:end-4)) / (12 * dt);
    dx2 = (x(3) - x(1)) / (2*dt);
    dx1 = (x(2) - x(1)) / dt;
    dx_end2 = (x(end) - x(end-2)) / (2*dt);
    dx_end1 = (x(end) - x(end-1)) / dt;

    dx = [dx1; dx2; dx; dx_end2;dx_end1];
end

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

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

相关文章

优化多设备体验,让您的应用为 Samsung 全新设备做好准备

作者 / Android 开发者关系团队总监 Maru Ahues Bouza 从可折叠设备创新到无缝连接,Google 和 Samsung 一直携手合作,致力于打造适用于 Android 手机、平板电脑、智能手表等设备的实用体验。近期,在首尔举行的 Galaxy Unpacked 发布会上&…

权威认可!安全狗获CNVD“漏洞信息报送贡献单位”殊荣

9月24日,国家信息安全漏洞共享平台公布了2022年度CNVD支撑单位年度工作情况及优秀单位个人表彰名单。 作为国内云原生安全领导厂商,安全狗入选漏洞信息报送贡献单位。 厦门服云信息科技有限公司(品牌名:安全狗)成立于2…

C++,模板 /泛型(添加)

4、非类型函数模板参数 模板元编程是一种通过在编译时执行代码来生成程序的技术。它利用C模板系统的强大功能,在编译阶段进行计算和推导,支持的类型只有整型。 例1: 例2: 可以有默认值,当有多个默认值时,要全部位于最…

BUUCTF刷题十一道(09)

文章目录 October 2019 Twice SQL Injection[GYCTF2020]EasyThinking[BJDCTF2020]EzPHP[HFCTF2020]JustEscape(vm2沙箱逃逸)[GXYCTF2019]StrongestMind[GKCTF 2021]easycms[SUCTF 2018]GetShell[b01lers2020]Life on Mars[WMCTF2020]Make PHP Great Again[MRCTF2020]Ezaudit[CS…

奥迪 Q7 e-tron | 无法通过插电式充电器充电

虽然电动汽车似乎是未来的方向,但插电式混合动力车辆在实现最佳两全之间似乎是当下的主流。这类车辆可以纯电动驾驶,满足当前城市的低排放规定,然而,在内燃机的支持下,我们可以无缝地行驶,充分利用无需担心…

WebDAV之π-Disk派盘 + 纸间书摘

纸间书摘是专为喜欢做读书笔记的小伙伴量身打造的专属书摘app,不仅仅可以从别的app中导入图书,并且还能来帮助你选择性复制可以来轻松的搞定哦 所有功能完全免费,没有广告,不限制识别次数。 多种备份,本地备份和基于WebDAV协议的云端备份。 丰富的书摘导出功能,用户可…

求职应聘,在线测评要不要真实的去做?

求职的朋友们,今年的行情不容乐观,所以要更加努力才能争取到理想的工作岗位。找工作是一个不衰的话题,不仅仅是大学毕业生们,职场人都绕不过去的话题。 如今越来越的企业采用在线测评,在知乎上很多盆友都遇到了&…

多线程的死锁问题

可重入和不可重入😊😊😊 一个线程针对同一个对象,连续加锁两次,是否会有问题 ~~ 如果没问题,就叫可重入的.如果有问题,就叫不可重入的. 代码示例🍉🍉🍉: synchronized public void add(){synchronized (…

Mixin和HTX遭黑客攻击!后者全赔,前者只赔50%引投资者不满?

资产安全一直都是区块链老生常谈的话题,而最近一系列安全事件频发引起了投资者的担忧,先是V神的推特账号被盗,再是亿万富翁马克库班 (Mark Cuban) 的小狐狸钱包被攻击,如今,黑客又盯上了承载大量资金的加密机构。 9月2…

如何提取音频中的纯人声?新手也能快速掌握

在数字媒体时代,无论是音乐、电影还是短视频制作,音频处理都是一个不可或缺的技能,尤其是人声提取部分,今天就来教大家怎样在一段音频中把人声部分提取出来,新手也能快速掌握! 第一步:打开【音分…

(手撕)快速排序 ----->c语言实现 +图解

目录 目录: 1:快速排序的思想 2:快速排序的三种形式 3:快速排序的优化方法 前言:快速排序是一种非常重要的排序我们需要掌握它,当然肯定也相比前面的那些排序有一定的难度,但是相信本篇文章会让你对快排有重新的理解,…

vue3 + mark.js | 实现文字标注功能

页面效果 具体实现 新增 1、监听鼠标抬起事件,通过window.getSelection()方法获取鼠标用户选择的文本范围或光标的当前位置。2、通过 选中的文字长度是否大于0或window.getSelection().isCollapsed (返回一个布尔值用于描述选区的起始点和终止点是否位于一个位置&…

TensorFlow入门(三、TensorFlow模型的运行机制)

TensorFlow通过"图"和会话的方式分离了计算的定义和执行,即它的运行机制是"定义"与"运行"相分离的。从操作层面可以把它抽象成两种:模型构建和模型运行。 TensorFlow模型中的几个概念: ①张量(tensor):数据,即某一类型的多维数组 ②变量(Vari…

Wi-Fi直连分享:Android设备间的高速连接

Wi-Fi直连分享:Android设备间的高速连接 引言 随着无线局域网(Wi-Fi)的普及和发展,使用Wi-Fi直连技术(P2P)在没有中间接入点的情况下实现设备间直接互联成为可能。通过Wi-Fi直连,具备相应硬件…

链动2+1模式:如何用二级分销打造高效团队,实现销量突破

你是否想要拥有一个高效的团队,让你的销量快速提升?你是否厌倦了传统的多层级分销模式,觉得它太复杂、太难管理、太不合规?你是否想要找到一种简单、合理、合法的商业模式,让你的收益稳定、可持续、可复制?…

【深度学习实验】卷积神经网络(三):自定义二维卷积神经网络:步长和填充、输入输出通道

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 步长、填充 a. 二维互相关运算(corr2d) b. 二维卷积层类(Conv2D) c. 模型测试 d. 代码整合 2. 输入输出通道 a…

前缀树-Trie树

前缀树—Trie树,也叫作“单词查找树”、“字典树” 它属于多叉树结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利…

【前段基础入门之】=>玩转【CSS】开篇章!

目录 CSS 的简介:CSS的编写位置行内样式内部样式外部样式 样式表的优先级CSS语法规范: 总结: CSS 的简介: 层叠样式表(Cascading Style Sheets,缩写为 CSS)是一种样式表语言,用来描述…

前端项目练习(练习-007-typescript-02)

学习前,首先,创建一个web-007项目,内容和web-006一样。(注意将package.json中的name改为web-007) 前面的例子,我们使用了nodejswebpack,成功创建了包含html,ts,css三个文…

【.net core】使用nssm发布WEB项目

nssm下载地址:NSSM - the Non-Sucking Service Manager 配置方式 修改服务在nssm工具下输入命令:nssm edit jntyjr 其中 jntyjr为添加服务时设置的Service name nssm可以设置任何以参数启动的应用程序以服务形式启动,通过设置参数内容启动服务 以上配置等同于执行…