前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数学——Euler方法求解微分方程详解

数学——Euler方法求解微分方程详解

作者头像
py3study
发布于 2020-01-22 14:24:13
发布于 2020-01-22 14:24:13
2.4K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

算法的数学描述图解

实例

用Euler算法求解初值问题 \[ \frac{dy}{dx}=y+\frac{2x}{y^2}\] 初始条件\(y(0)=1\),自变量的取值范围\(x \in [0, 2]\)

算法Python3代码求解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入包
import numpy as np
import matplotlib.pyplot as plt
# 定义求解函数 y_dot = y + 2*x/(y*y)
def fx(y, x):
    return y + 2*x/(y*y)
# 算法定义
def ode_euler(f, y0, tf, h):
    """
    Solve and ODE using Euler method.
    Solve the ODE y_dot = f(y, t)
    Parameters
    ------------
    :param f: function
            Function describing the ODE
    :param y0: array_like
            Initial conditions.
    :param tf: float
            Final time.
    :param h: float
            Time step
    :return:
    y : array_like
        Solution to the ODE.
    t : array_like
        Time vector.
    """

    y0 = np.array(y0)
    ts = np.arange(0, tf + h, h)
    y = np.empty((ts.size, y0.size))
    y[0, :] = y0
    for t, i in zip(ts[1:], range(ts.size - 1)):
        y[i + 1, :] = y[i, :] + h * f(y[i, :], t)
    return y, ts
# 实例应用案例
def newton_cooling_example():
    print('Solving Newton Cooling ODE...')
    y, ts = ode_euler(fx, 1, 2, 0.01)
    print('Done.')
    plt.figure()
    plt.plot(ts, y)
    plt.xlabel('time [s]')
    plt.title('Solution to the Newton cooling equation')
    plt.show()

代码中的部分函数理解

numpy.array

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0) 参考numpy.array output:创建一个array,返回类型为ndarray 实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.array([1, 2, 3.0]) # array([1., 2., 3.])
np.array([[1, 2], [3, 4]]) # array([[1, 2], [3, 4]])
np.array([1, 2, 3], dtype=complex) # array([1.+0.j, 2.+0.j, 3.+0.j])

numpy.arange

参考numpy.arange numpy.arange([start, ]stop, [step, ]dtype=None) 作用:在给定间隔内返回均匀间隔的值。 值在半开区间[start, stop)内生成(换句话说,包括开始但不包括终止)。返回的是ndarray而不是列表。 np.arange()函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。 参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. 一个参数时,参数值为终点,起点取默认值0,步长取默认值12. 两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值13. 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。

案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.arange(3,7) # array([3, 4, 5, 6])
np.arange(3,7,2) # array([3, 5])

numpy.ma.size

numpy.ma.size(obj, axis=None) 参考 案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = np.array([[1,2,3],[4,5,6]])
np.size(a) # 6
np.size(a,1) # 3
np.size(a,0) # 2

numpy.empty

参考 numpy.empty(shape, dtype=float, order='C') shape : int or tuple of int Shape of the empty array, e.g., (2, 3) or 2. out : ndarray 案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.empty([2, 2])
# 结果
array([[ -9.74499359e+001, 6.69583040e-309],
       [ 2.13182611e-314, 3.06959433e-309]]) #random
np.empty([2, 2], dtype=int)
# 结果
array([[-1073741821, -1067949133],
       [ 496041986, 19249760]]) #random
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
故障管理杂谈
随着系统复杂度、团队规模的增加,需要一个套方法来应对系统中的各种"黑天鹅",以下为整理的故障应对方法。
wangning
2022/06/13
5380
【笔记】每一个开发都应该懂得故障处理
出现故障时,最重要的不是 debug 故障,而是尽可能地减少故障的影响范围, 并尽可能快地修复问题。
韩旭051
2021/06/22
4490
【笔记】每一个开发都应该懂得故障处理
有趣的MySQL(三):更新“丢失”问题
  趁着这几天过节,复盘了一下去年的一些历史遗留问题,其中有这样一个关于数据库的小问题让我忍不住翻出来又回味了一下,下面就让我们一起品味品味。
闲宇非鱼
2022/02/08
2K0
有趣的MySQL(三):更新“丢失”问题
SpringBoot+Mybatis配置多数据源及事务方案
可能由于业务上的某些需求,我们的系统中有时往往要连接多个数据库,这就产生了多数据源问题。
猿天地
2020/11/13
3.4K0
难调试的bug
当然还有一些其他Bug,不过这些Bug你觉得难吗?看一下维基百科和Software Testing里面的定义:
只喝牛奶的杀手
2023/01/12
3700
难调试的bug
3.3.1 构建持续提升的故障管理能力
随着系统架构不断升级,功能持续迭代,系统运行复杂性越来越高,故障的发生不可避免,且发生场景愈发无法预测。从企业角度看,系统故障影响客户体验,降低访问流量,带来交易损失,引发监管问责等;从系统架构角度看,系统故障反映的问题代表系统未来扩展性与局限性;从IT资源角度看,故障(尤其是重复性故障)将占用大量IT人力资源,影响IT价值创造能力;从运维角度看,故障是一个常态化的存在,故障既是业务连续性大敌,也是推动组织架构、人员能力、协同机制、工具平台持续优化的驱动力,对待好故障管理有助于建立学习型的运维组织。本文要解释的故障管理,除了指尽快恢复正常的服务以降低故障影响的相关措施,还尝试探索建立一个闭环的故障管理能力的模式。
彭华盛
2021/03/03
1.5K0
3.3.1 构建持续提升的故障管理能力
腾讯云4月8日故障复盘及情况说明
4月8日15点23分,腾讯云团队收到告警信息,云API服务处于异常状态;随即在腾讯云工单、售后服务群以及微博等渠道开始大量出现腾讯云控制台登录不上的客户反馈。
悟空聊架构
2024/04/15
1.1K0
腾讯云4月8日故障复盘及情况说明
Java面试题汇总---整理版(附答案)
spring能够很好的和各大框架整合,它通过IOC容器管理了对象的创建和销毁 工厂模式。在使用hiberna,mybatis的时候,不用每次都编写提交的事务的代码,可以使用spring的AOP来管理事务。AOP其实就是一个动态代理的实现(声明式事务和编程式事务)。
攻城狮的那点事
2019/06/28
7000
如何快速处理线上故障
线上故障通常是指大规模的影响线上服务可用性的问题或者事件,通俗点讲就是:掉“坑”里了,这个“坑”就是线上故障!线上故障的处理过程可以形象地表达为:“踩坑”、“跳坑”、“填坑”、“避坑”。
嘉为蓝鲸
2018/12/21
1.8K0
麻了,代码改成多线程,竟有9大问题
很多时候,我们为了提升接口的性能,会把之前单线程同步执行的代码,改成多线程异步执行。
苏三说技术
2022/09/22
7300
麻了,代码改成多线程,竟有9大问题
vivo 故障定位平台的探索与实践
本文基于故障定位项目的实践,围绕根因定位算法的原理进行展开介绍。鉴于算法有一定的复杂度,本文通过图文的方式进行说明,希望即使是不懂技术的同学也能理解。
2020labs小助手
2023/01/09
8880
跨系统数据一致性问题解决方案汇总
目前随着微服务化建设的普及,存在越来越多的跨系统数据交互情况,跨系统数据一致性问题越发凸显,那如何有效保证跨系统数据的一致性呢?
架构精进之路
2022/09/27
1.9K0
跨系统数据一致性问题解决方案汇总
电子政务云应急预案
为了加强电子政务云平台运维团队收到用户报障或巡检发现异常后的处理应急机制,特制定本预案,主要包括以下内容:
ICT售前新说
2021/03/11
5.7K0
跨系统数据一致性问题经验实战
目前随着微服务化建设的普及,存在越来越多的跨系统数据交互情况,跨系统数据一致性问题越发凸显,那如何有效保证跨系统数据的一致性呢? 本文旨在总结沉淀工作中问题的解决经验,整理解决跨系统数据不一致问题的经验方法。 ◆1、为什么会有跨系统数据一致性问题? 提到数据一致性,我们很容易想到的就是数据库中的事务操作。 事务的原子性和持久性可以确保在一个事务内,操作多条数据,要么都成功,要么都失败。这样在一个系统内部,我们可以很自然地使用数据库事务来保证数据一致性。但是在微服务的今天,一项操作会涉及到跨多个系统多个数据库
IT大咖说
2022/05/17
1.2K0
跨系统数据一致性问题经验实战
运维干货|如何通过故障复盘提升业务稳定性和连续性?
复盘,即反思。它最先出自围棋术语,指对局完毕后,复演该盘棋的记录,以检查对局中招法的优劣与得失关键。
覃春善
2021/07/22
3.3K0
如何运用结构化思维进行故障处理
导读:运用结构化思维进行故障处理,其目的是为了将故障应急操作标准化,进而提升处理效率。
宜信技术学院
2019/10/16
1.5K0
《一起学mongodb》之 第二卷 部署方式(一)
上一篇跟大家简单的介绍了一下 mongoDB 的特点,做了一个简单的入门,不知道大家是否还记得,不记得的小伙伴可以回顾一下《一起学》mongodb 之第一卷
moon聊技术
2022/02/17
6460
《一起学mongodb》之 第二卷 部署方式(一)
开发团队如何应对突发的技术故障和危机?从网易云音乐故障谈起
在数字化时代,软件和服务的稳定性是用户体验和企业声誉的关键。然而,即便是像网易云音乐这样的大型平台,也难免遭遇突发的技术故障。2024年8月19日下午,网易云音乐疑似出现服务器故障,网页端显示“502 Bad Gateway”错误,App也无法正常使用。这次事件不仅对用户体验造成了严重影响,还给公司带来了声誉和经济上的损失。那么,面对这种突发的技术故障,开发团队应该如何快速响应、有效解决问题,并从中吸取教训以防患未然呢?本文将探讨应对技术故障的策略和团队建设的思考。
watermelo37
2025/01/22
910
开发团队如何应对突发的技术故障和危机?从网易云音乐故障谈起
构建面向IT性能的运维组织
在复杂的IT运维组织事务活动中,如何确定IT运维的目标,对于很多运维组织来说也是一个难点。有些运维组织用的是稳定性/可用性/质量的指标,有些团队用的是效率,有些团队用的成本指标等等。说实话,在以上诸多指标中,能够带来巨大变革力和牵引力的,我个人认为还是效率,或者是性能,就是完成某个事情有多快。但很多时候,需要对这个IT性能形成精确的理解,才能形成真正的作用力。
用户1593318
2019/11/20
8100
构建面向IT性能的运维组织
Mybatis的缓存机制详解
MyBatis 包含了一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。mybatis默认情况下只会开启一级缓存,也就是局部的 session 会话缓存。
端碗吹水
2020/09/23
7090
Mybatis的缓存机制详解
相关推荐
故障管理杂谈
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验