如何迅速而准确地确立递推关系

Romberg 龙贝格算法求积分值 RombergRombergRomberg龙贝格算法 由误差的事后估计I−T2nI−Tn≈14\frac{I-T_{2n}}{I-T_n}\approx\frac{1}{4}I−Tn​I−T2n​​≈41​将上式移项得I−T2n≈13(T2n−Tn)I-T_{2n}\approx \frac{1}{3}(T_{2n}-T_n)I−T2n​≈31​(T2n​−Tn​) 也就是如果用T2nT_{2n}T2n​作近似,则误差为约等于右边的部分, 那么将误差作为一种补偿加到T2nT_{2n}T2n​上,那么得到的T 阅读详情

一、引言

占卜师的咒语带你来到一个虚空的象限,并准确地看到了你的未来。然而,赋予他这种能力的,其实并不是你不解其意的咒语,而是蕴涵着神秘能量的水晶球。这正 如对于程序员来说,只要掌握了由现在衍化到将来的方法,同样可以随心所欲地写出一种以递推为核心的程序,完成一些在其他人看来是如此困难的事情——困难不 在于程序,而在于思想。

二、一个数值型的递推模型

    某年某月,《幸运52》的“看商品猜价格”环节改变了规则,主持人明确地告诉选手一件特定商品的价格为1到P元之间(P为整数),并给予选手总共G次“猜 价的机会”和L次“猜高的机会”——这就是说,如果选手猜的价格与实际价格不符,那么他失去一次“猜价的机会”,另外如果他猜的价格比实际价格还高,那么 还将失去一次“猜高的机会”。主持人对于选手每次所作出的不正确猜测给出“高了”或“低了”的判断,但是如果选手没能在用光自己全部的“猜价的机会”或者 “猜高的机会”之前猜出商品正确的价格,他就将失去免费获得这件商品的良机。

    节目播出了一段时间以后,主持人渐渐发现对于一组确定的G和L,如果P不高于一个数值的话,一些经过精心准备的选手总能在机会用光之前猜出正确的价格。为了改变这种状况,他想请你帮他计算一下,要把P至少升高到什么程度,才能让最聪明的选手也存在着猜不出正确价格的概率。

    这个问题直接入手处理很快就会陷入混乱,但是只要稍加分析就可以发现,所谓“足够聪明的选手”,就是能用固定的G和L覆盖最多种不同的价格,当P不大于这个种类数的时候,他就可以将猜测的过程完全纳入自己的轨道。具体的过程是:

    对于选手的每一次猜测,只有三种结果:要么猜对、要么猜低、要么猜高。现在假设记选手用(G,L)能覆盖的不同价格种类是F(G,L),那么如果他猜低 了,费掉一次“猜价的机会”,还能在低于这个价格的部分中覆盖F(G-1,L)的不同种价格;如果他猜高了,费掉一次“猜价的机会”以及一次“猜高的机会 ”,还能在高于这个价格的部分中覆盖F(G-1,L-1)的不同种价格;这样,F(G,L)就可以用自身的函数表示如下:

    F(G,L)=F(G-1,L)+F(G-1,L-1)+1    (L、G>=1)

    而在L=0时,有F(G,0)=G;在G=0时,有F(0,L)=0。这样一来,问题的递推过程就清晰了,F(G,L)实际上就是最聪明的选手存在必胜策略的P上限。

    在这个例子中,现在的问题分解为多个将来的问题,而且将来的问题比现在的问题规模小,这样就可以将问题的全过程正向地逐渐展开,从而得到需要的解决方案。

三、一个真假型的递推模型

    Adam和Eve两个人进行一项游戏。首先,随机地从1900年1月1日到2001年11月4日之间选定一个日期,然后Adam和Eve轮流地执行以下的 步骤(Adam首先进行):将日期推进到当前日期的下一天或者是下一个月的同一天(如果下个月没有同一天的话,则只能推进到当前日期的下一天,比如从任一 年的1月20日可以推进到1月21日或者2月20日,但是从1月31日只能推进到2月1日)。首先将日期精确地推进到2001年11月4日的人获胜,如果 其中一人将日期推进到2001年11月4日以后,他的对手同样会赢得胜利。现在的问题是,对于一个给定的起始日期,先手的Adam是否存在着必胜策略呢?

    对于这个问题,如果直接地建立博弈树,虽然可以得到正确的结果,但由于给定时间的跨度太大,程序运行上的时间消耗将会十分的巨大。本题的特点在于,我们只用判断真假而不必深入具体的分支过程,因此可以从容地利用真假的性质得出下面的结论:

    如果一个日期对于Adam来说存在着必胜策略,他可以选择推进到的日期中必然存在着至少一个日期对于Eve来说是不存在必胜策略的。具体地说,如果一个日 期只能推进到下一天,那么如果在这个“下一天”起手的玩家不存在必胜策略,那么给定日期便是存在必胜策略的。而如果一个日期可以推进到两个不同的日期,那 么除非在这两个日期起手的玩家都存在必胜策略,否则给定日期便是存在必胜策略的。如果考虑到这点,只要对边界处理稍加注意,就可以轻松地解决这个表面看起 来错综复杂的问题。

    在上面的例子中,早先得到的对于一个或两个日期的真假值可以联合起来推出对于另一个日期真假值,如此则可以逐渐扩大我们的“已知”范围,而以此来将更多的未知变为已知,这种过程无论从逻辑上还是从效率上都充分发挥了递推的优势。

四、问题局部递推后组合出新整体的递推模型

    以下这个问题的原型是2001年ACM竞赛北京赛区的一道题目:

    假设有C(C<=100)种不同颜色的巧克力,现在执行以下的步骤M次(M<=1000000):等概率随机选择一种颜色的巧克力放到桌子上,如果桌子上存在与该巧克力相同颜色的巧克力则一起拿掉它们。

    现在的问题是这个过程之后,桌子上恰好留有N(N<=1000000)块巧克力的概率是多少?

    这个问题首先可以得出一些可以加快处理速度的结论,比如:每种颜色的巧克力最多只有一块留在桌子上,因此不可能出现N>C的情况;另外,由于拿掉巧 克力时只能两个两个拿,因此不可能出现N和M的奇偶性不同的情况。但是,这些都不涉及问题的实质,问题的主要过程可以有两种解决方案:

    1、用概率算法随机模拟,这种方案思路简单,程序易于编写,而且在试验次数足够多的情况下可以得到近似程度很好的解,但它对时间的消耗与近似程度是成比例增长的,因此得出一定精度下的准确解需要耗费大量的时间。

    2、采用递推的过程逐步得出结论:

    记P(M,N)为步骤执行M次后桌面上剩余N块巧克力的概率(根据上面的结论,在这部分讨论中,限定N<=C),那么在M=1时,显然地有P(1,1)=1,P(1,X)=0(X不为1)。

    第M+1次的桌面状况概率分布可以由第M次的桌面状况概率分布间接获得:

    (1)对于P(M+1,0)的值:仅当执行M次步骤后桌面上留下一块巧克力,而且第M+1次放到桌上的又恰恰是同色巧克力的时候可以使执行M+1次步骤后桌面清空。因此有P(M+1,0)=P(M,1)/C。

    (2)对于P(M+1,C)的值:仅当执行M次步骤后桌面上留下C-1块巧克力,而且第M+1次放到桌上的又恰恰是与这C-1块巧克力均不同色的巧克力的 时候可以使执行M+1次步骤后桌面上剩余C块巧克力。根据前面的结论,之前留在桌面上的C-1块巧克力覆盖了C-1种颜色,因此取出不同色巧克力的概率为 1/C。由此得出,P(M+1,C)=P(M,C-1)/C。

    (3)对于不等于0和C的X,P(M+1,X)的值:

    当执行M次步骤后桌面上留下X-1块巧克力,而且第M+1次放到桌上的又是与这X-1块巧克力均不同色的巧克力的时候可以使执行M+1次步骤后桌面上恰有 X块巧克力。根据前面的结论,之前留在桌面上的X-1块巧克力覆盖了X-1种颜色,因此取出不同色巧克力的概率为(C+1-X)/C。

    当执行M次步骤后桌面上留下X+1块巧克力,而且第M+1次放到桌上的又是与这X+1块巧克力中任一块同色的巧克力的时候也同样可以使执行M+1次步骤后 桌面上恰有X块巧克力。根据前面的结论,之前留在桌面上的X+1块巧克力覆盖了X+1种颜色,因此取出与其中任一块同色的巧克力的概率为(X+1)/C。

    结合上面两种状况推出,P(M+1,X)=P(M,X-1)*(C+1-X)/C+P(M,X+1)*(X+1)/C。

    综合(1)(2)(3),我们就可以由第执行M次步骤后桌面上剩余巧克力数量的概率分布推得M+1次后的状况。如果把概论分布当作一个整体,我们在递推的 过程中实际上是先将整体拆成部分,各个部分之间相互组合推出新整体的各部分,然后再组合出新的整体。运用这种递推方法,并且在求解的过程中不断与需要的精 度做比较,我们可以很快地找到精确度很高的解,速度上会大大优于用概率模拟的方法。

五、结语

    就如同编程本身,递推既是科学,也是艺术。熟练而巧妙地运用递推思维,可以将很多问题化繁为简,笔者在这篇文章提到的例子都不算是很复杂,只是借此说明一 下递推的特点,更多精妙的运用技巧还需要读者自己体会。其实,递推的空间虽然宽广,但原理并不深奥,只要注意分析问题的实质,准确地判断各种量的对应关 系,就能很快地找到解决这种问题的捷径。希望大家在此都能有自己的收获和提高。

1、探索具体数学的魅力与奥秘 本文深入探讨了具体数学的诞生背景、定义特点及其在计算机科学、物理学、工程学和经济学等领域的广泛应用。具体数学融合了连续与离散数学,强调公式操作技巧,涵盖求和、递推、数论、生成函数、概率与渐近分析等内容。文章介绍了其课程发展、学习资源、独特教学风格及字体设计,并分析了学习难点与未来发展趋势,旨在引导读者探索这一兼具挑战与魅力的数学领域。 阅读详情

相关推荐

MATLAB递推最小二乘法实战指南

最小二乘法是一种数学优化技术,通过最小化误差的平方和寻找数据的最佳函数匹配。其在统计学、数据分析、预测模型和许多工程领域中具有核心作用,因为它能提供一种简单而又有效的方式来近似复杂问题。递推最小二乘法(Recursive Least Squares, RLS)是一种在线式的参数估计方法,其目的是在给定一系列观测数据的情况下,递归地更新参数估计值,使得预测模型的误差平方和达到最小。RLS算法特别适用于数据流不断涌入的动态系统中,能够快速适应系统参数的变化。

weixin_42588877的博客 820

递推算法-五种典型的递推关系

递推算法 递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复...

lybc2019的博客 1万+

从零开始:使用Remix和MetaMask在测试网部署智能合约的完整指南

本文提供了一份完整的指南,教你如何使用Remix和MetaMask在测试网上部署智能合约。从环境搭建、获取测试网代币到编写和部署合约,再到与合约交互和连接Python后端,涵盖了智能合约开发的各个环节。特别适合初学者快速上手区块链开发,同时介绍了安全注意事项和调试技巧。

weixin_29019241的博客 474

算法之递推及其应用(递推关系的建立及在信息学竞赛中的应用 安徽 高寒蕊)...

定义:给定一个数的序列H0,H1,…,Hn,…若存在整数n0,使当nn0时,可以用等号(或大于号、小于号)将Hn与其前面的某些项Hn(0i<n)联系起来,这样的式子就叫做递推关系。 递推关系中存在着三大基本问题:如何建立递推关系,已给的递推关系有何性质,以及如何求解递推关系。 五种基本的递推关系: Ⅰ.Fibonacci数列 在所有的递推关系中,Fibonacci数列应该是最为大家...

weixin_30408309的博客 348

MySQL下载和安装教程

1.下载MySQL数据库可以访问官方网站:https://www.mysql.com/ 2.点击DOWNLOADS模块下的Community模块下的MySQL Community Server进行下载。 由于目前最新版本是:MySQL Community Server 5.7.21 建议博友下载历史版本,本博下载的是5.6.39 下载步骤: 进入,选择MySQL的版本及主机 根据自己的电脑选择相应的位数进行下载,本机是64位,点击download。 进入下.

残雪的剑的博客 4万+

快速上手springboot+vue的前后端分离项目

使用webStorm新建项目后,把 .lock文件删除后项目运行才不报错,配置文件 vue.config.js 中加入 lintOnSave: false 关闭eslint语法检测。在多层嵌套的父子组件之间传递状态已经十分麻烦,而Vue更是没有为兄弟组件提供直接共享数据的办法。基于这个问题,许多框架提供了解决方案——使用全局的状态管理器,将所有分散的共享数据交由状态管理器保管,Vue也不例外。其中一种解决CORS 的方法, 在springboot项目中跨域的方法或类加上@CrossOrigin注解。

m0_61950264的博客 1907

五种典型的递推关系

一,递推算法概述: 通过已知某个条件,利用特定的关系得出中间推论,然后逐步递推,直到得到结果为止。 由此可见,递推算法要比枚举算法“聪明”,它不会"一根筋"的寻找每一种可能方案。 (1)顺推法 (2)逆推法 裴波那契数列可以说是典型的递推算法: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: 1、1、2、3、5、8、13、21、34、……在数学上,

qq_46987086的博客 1253

基于唤醒音频的目标说话人语音识别系统设计报告

摘要 本报告设计了一套基于唤醒音频的目标说话人语音识别系统,通过五级流水线架构(唤醒检测→声纹注册→语音分离→目标ASR→拒识决策)解决复杂声学场景下的目标说话人识别问题。系统整合ECAPA-TDNN声纹模型、Conv-TasNet语音分离网络和Whisper ASR引擎,在L20 GPU上实现高效端到端推理,支持-5dB~5dB SNR范围和0~100%重叠率的双人语音场景处理。系统在目标说话人CER、拒识率和推理效率等关键指标上均达到设计目标,为智能语音交互提供了有效的身份感知解决方案。

huanghm88的专栏 73

五种典型的递推关系——一步一步算法篇

五种典型的递推关系 1.Fibonacci数列 在所有的递推关系中,Fibonacci数列应该是最为大家所熟悉的。在最基础的程序设计语言Logo语言中,就有很多这类的题目。而在较为复杂的Basic、Pascal、C语言中,Fibonacci数列类的题目因为解法相对容易一些,逐渐退出了竞赛的舞台。可是这不等于说Fibonacci数列没有研究价值,恰恰相反,一些此类的题目还是能给我们一定的启发的。

1万+

基于STM32L4XX、HAL库的TESEO-LIV4FTR定位模块驱动程序设计

支持多星座系统:GPS、GLONASS、Galileo和北斗。支持NMEA 0183协议和ST专有协议。高灵敏度:-167dBm跟踪灵敏度。低功耗设计,适合物联网和便携设备。内置LNA和SAW滤波器。

zhusl6688的博客 237

063、推挽变换器的磁偏问题与解决

本文针对推挽变换器中的磁偏问题展开分析。作者通过实际案例指出,磁偏主要由开关管导通压降差异和驱动信号不对称引起,会导致变压器饱和、MOS管炸毁等问题。文章提供了四种解决方案:采用电流模式控制、添加隔直电容、优化对称驱动设计以及引入磁芯气隙(作为最后手段)。调试时应重点观察原边电流波形对称性、变压器声音和直流分量。作者强调实践经验的重要性,建议预留隔直电容位置,并指出推挽拓扑在500W以上功率场合的局限性。这些基于实战的经验总结为电源工程师提供了有价值的参考。

Jack010169的博客 312

java中加权滤波怎么用_加权递推滤波算法。

TC264 ADC采集电磁传感器的数据进行处理。/************************************************************************** 函数名称:void InductorDispose(void)* 功能说明:读取ADC值并进行处理* 参数说明:无* 函数返回:无* 修改时间:2020年12月27日* 备 注: ...

weixin_39976575的博客 268

YOLOv13|损失函数优化篇:Focal EIOU 保持良好性能的同时,提供更高效的计算和更稳定的训练过程-包源码

Focal IoU与EIoU:目标检测中的损失函数优化 摘要:本文深入探讨了目标检测中两种重要的边界框回归损失函数优化方法。Focal IoU借鉴Focal Loss思想,通过(1-IoU)^γ因子调节损失权重,使模型更关注难样本(低IoU预测框),有效解决了传统IoU Loss对难易样本权重相同的问题。EIoU则在CIoU基础上改进,通过简化长宽比计算、分离宽高损失项,提升了计算效率和训练稳定性。两种方法分别从样本权重分配和损失函数结构优化角度,显著提升了目标检测性能,为实际应用提供了更高效的解决方案。文

FJN110的博客 1864

3a2b递归排列java,高考数学解题技巧-递推数列通项公式的十种策略例析

求递推数列通项公式的十种策略例析递推数列的题型多样,求递推数列的通项公式的方法也非常灵活,往往可以通过适当的策略将问题化归为等差数列或等比数列问题加以解决,亦可采用不完全归纳法的方法,由特殊情形推导出一般情形,进而用数学归纳法加以证明,因而求递推数列的通项公式问题成为了高考命题中颇受青睐的考查内容。笔者试给出求递推数列通项公式的十种方法策略,它们是:公式法、累加法、累乘法、待定系数法、对数变换法、...

weixin_34553415的博客 296

025、空间降噪与时域降噪:噪声抑制与细节保留的平衡艺术

《降噪技术的平衡艺术:空间与时域降噪的协同优化》 本文深入探讨了图像处理中空间降噪与时域降噪的技术原理与工程实践。空间降噪通过像素级处理提升单帧质量,而时域降噪则利用帧间信息增强稳定性。文章揭示了两种方法在实际应用中的矛盾点:过度降噪会导致细节损失,影响后续算法性能。作者结合车载环视系统等实战案例,详细分享了参数调优经验,包括运动自适应策略、边缘保持技巧和嵌入式平台优化方案。特别强调降噪的最终目标应服务于下游算法需求,而非单纯追求图像美观。文章为工程人员提供了从理论到实践的完整指导,展现了降噪技术在效果与性

sundong_81的博客 186

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

函数递推式:从数学基石到算法核心的动态规划与递归优化

函数递推式是描述序列项之间关系的数学工具,它通过初始条件和递推关系,定义了如何从已知项推导出后续项。其核心原理在于将复杂问题分解为重复的子问题,这构成了递归和动态规划等算法思想的基石。理解递推式的技术价值在于,它能将问题结构形式化,是设计高效算法(如动态规划的状态转移)和进行复杂度分析(如主定理)的关键。在应用场景上,递推式不仅用于计算斐波那契数列、解决汉诺塔问题等经典案例,更是动态规划、分治算法以及金融复利、人口增长等跨领域建模的基础。本文以斐波那契数列为例,深入探讨了如何将递推式转化为递归、迭代及记忆化

weixin_33851429的博客 408

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

约瑟夫环问题详解:从暴力模拟到O(n)递推的算法优化实战

约瑟夫环是计算机科学中经典的循环链表与数学递归问题,它模拟了一个环状结构中按固定间隔依次移除元素的场景。其核心原理在于通过递推公式 f(n, m) = (f(n-1, m) + m) % n,将问题规模从 n 递归降至 1,从而避免了直接模拟带来的 O(n²) 时间复杂度。这一优化在算法设计中极具价值,它不仅是理解递归与动态规划思想的绝佳案例,也是处理大规模数据时效率优化的典范。在实际的工程实践与竞赛(如信息学奥林匹克)中,面对“数据加强版”的约瑟夫环变体(例如“猴子选大王”问题),掌握 O(n) 的递推解

weixin_30522183的博客 411

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

蜜蜂路线ヽ( ̄▽ ̄)و(递推)

m-n的方案数=斐波那契数列。

2501_93630979的博客 128

C++实现勒让德多项式:从递推原理到高性能数值计算模块

正交多项式是数值分析和科学计算中的基础数学工具,用于解决微分方程、函数逼近及物理场分析等问题。其核心原理在于利用递推关系,以稳定的数值方法高效生成多项式序列,避免了直接求导带来的计算复杂度和精度损失。这一技术价值在于为物理仿真、图形学及地球物理等领域的底层计算提供了可靠支撑。在C++高性能计算场景中,针对勒让德多项式及其连带形式的计算,常面临标准库缺失和数值稳定性挑战。本文通过解析递推算法、处理归一化方式及预防浮点溢出,构建了一个工业级的计算模块,并重点优化了批量计算性能与边界条件处理,为需要嵌入特殊函数计

weixin_30680385的博客 300

C++递推算法核心:从状态定义到动态规划实战

递推是计算机科学中一种基础且强大的算法思想,其核心在于利用已知状态和明确的递推关系,通过循环迭代逐步求解复杂问题。从原理上看,递推算法通过定义清晰的状态、建立状态转移方程并设定准确的边界条件,将大规模问题分解为可重复求解的子问题序列。这种自底向上的计算模式,在技术价值上体现为高效解决重叠子问题,避免了递归带来的栈溢出和重复计算开销,是动态规划的重要基础。在应用场景上,递推广泛适用于序列计算、动态规划、数值模拟、图像处理以及金融建模等领域。例如,在解决经典的“爬楼梯”和“斐波那契数列”问题时,递推通过状态转移

weixin_33754065的博客 429

精度项目实战:准确度与精密度的误差控制指南

测量精度是工程实践中的核心命题,却常被笼统理解为“准不准”。准确度与精密度分别对应系统偏差与随机离散,是误差分析的两个独立维度。理解二者差异,才能制定有效的校准与滤波策略,将不确定性压缩到业务可接受的区间。高精度不是靠设备堆砌,而是源于对测量链路的分层拆解、标准化流程和持续度量机制。从传感器采集、采样率选择到数据评估指标,精度控制贯穿物联网、数据处理与算法实验的各个环节。准确度、精密度、误差分析、数据采集等概念构成了一整套可落地的工程方法论。当精度从形容词变成动词,每一个指标都具备可量化、可复现、可追溯的严

weixin_30613343的博客 304

时间序列八: 以NASA之名: 卡尔曼滤波器

以NASA之名: 卡尔曼滤波器'That's one small step for man,one giant leap for mankind.' — Neil Alden Armstron[TOC]引言二十世纪的阿波罗登月计划在人类历史上是浓墨重彩的一笔, 是人类科学发展极其重要的里程碑. 在此计划中, 阿姆斯特朗在月球上说出了上面的一句话,是对此计划最最恰当的注释. 说起来这个计划很''简单...

YZXnuaa的博客 2660

数理思维

数字推理:给出一个数列,缺少一项,观察数字的规律,填补空缺 关系:加、减、乘、除、幂、位置 基础排列:常数、等差、等比、质数、合数、对称、周期、简单递推 是以上两者的各种组合关系 有8项或8+时考虑,多重数列,隔项看、相邻 / * - + 广义位置隔离,+、小数点 隐藏项,自己变出来 广义分组 9项 333. 拼出第三项。 A*B+(A+B) 或者指数 九宫格 横竖 分组。 加和,等式 (a,b)=(c,d) 横竖分组,通过+ * -/等式 有相同项的不优先考虑,先去看有不

静水流深 1445

计算机算法实际应用,数学方法在计算机算法中的应用分析

牛静【摘要】计算机技术在现如今的社会中发展迅速,应用范围广泛,分析计算机技术的具体应用情况对于计算机技术的研究与发展有突出的现实意义。就目前掌握的情况来看,在计算机技术的具体应用中,其使用的计算机算法是数学方法的重要表现,换言之,数学方法在计算机方法的应用中发挥着重要的作用,所以在计算机算法的具体使用中分析数学方法的具体应用,这对于计算机算法完善与发展有突出的现实价值。文章分析研究数学方法在计算机...

weixin_30097621的博客 1345

(三)C语言算法概述

算法-程序的灵魂

大学僧成长纪的博客 1501
上一篇: CentOS 下Enable TeX数学公式备忘
下一篇: Apache + Windows 2003 配置网站目录权限小结
setoy
博客等级 码龄24年 69粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值