算法的数学描述图解

实例

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

算法Python3代码求解

# 导入包
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: functionFunction describing the ODE:param y0: array_likeInitial conditions.:param tf: floatFinal time.:param h: floatTime step:return:y : array_likeSolution to the ODE.t : array_likeTime vector."""y0 = np.array(y0)ts = np.arange(0, tf + h, h)y = np.empty((ts.size, y0.size))y[0, :] = y0for 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
实例

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()函数分为一个参数,两个参数,三个参数三种情况 :

1. 一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2. 两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3. 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。

案例

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)
参考
案例

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
案例

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

转载于:https://www.cnblogs.com/brightyuxl/p/9990958.html

数学——Euler方法求解微分方程详解(python3)相关推荐

  1. python2与python3性能对比_对Python2与Python3中__bool__方法的差异详解

    对Python2与Python3中__bool__方法的差异详解 发布时间:2020-08-28 00:08:58 来源:脚本之家 阅读:74 作者:grey_csdn 学习Python面向对象编程的 ...

  2. python3多行输入字符串_详解Python3 定义一个跨越多行的字符串的多种方法

    方法一:使用三引号 >>> str1 = '''Le vent se lève, il faut tenter de vivre. 起风了,唯有努力生存. (纵有疾风起,人生不言弃. ...

  3. 【 梯度下降算法 Gradient-Descend 数学推导与源码详解 深度学习 Pytorch笔记 B站刘二大人(2/10)】

    梯度下降算法 Gradient-Descend 数学推导与源码详解 深度学习 Pytorch笔记 B站刘二大人(2/10) 数学原理分析 在第一节中我们定义并构建了线性模型,即最简单的深度学习模型,但 ...

  4. python3中unicode怎么写_详解python3中ascii与Unicode使用

    这篇文章主要为大家详解python3中ascii与Unicode使用的相关资料,需要的朋友可以参考下# Auther: Aaron Fan ''' ASCII:不支持中文,1个英文占1个字节 Unic ...

  5. python3 yield 大文件_详解Python3中yield生成器的用法

    任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普 ...

  6. python socket自动重连_详解python3中socket套接字的编码问题解决

    一.TCP 1.tcp服务器创建 #创建服务器 from socket import * from time import ctime #导入ctime HOST = '' #任意主机 PORT = ...

  7. 详解Python3中yield生成器的用法

    这篇文章主要介绍了详解Python3中yield生成器的用法,是Python入门学习中的基础知识,需要的朋友可以参考下 任何使用yield的函数都称之为生成器,如: def count(n):whil ...

  8. python3字典详解_Python3字典操作详解 Python3字典操作大全

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:sking #Python3字典操作详解  Python3字典操作大全 #字典是无序的(因为它 ...

  9. 【分类器 Softmax-Classifier softmax数学原理与源码详解 深度学习 Pytorch笔记 B站刘二大人(8/10)】

    分类器 Softmax-Classifier softmax数学原理与源码详解 深度学习 Pytorch笔记 B站刘二大人 (8/10) 在进行本章的数学推导前,有必要先粗浅的介绍一下,笔者在广泛查找 ...

最新文章

  1. leetcode409.Longest Palindrome
  2. window.history 和 DWZ 框架
  3. 分布式锁(基于redis和zookeeper)详解
  4. lvs-dr模式原理详解和可能存在的“假负载均衡”
  5. python中paramiko模块的使用
  6. JasperReport学习笔记6-JRXML的标签
  7. 分布式存储系统学习笔记(一)—什么是分布式系统(4)—容错机制
  8. ie不支持replaceall_继IE之后,微软又要彻底放弃这些office了
  9. Photoshop制作印章效果
  10. android判断极光推送是不是注册成功,android极光推送用户怎么注册sdk
  11. bin code led_一种led颜色BIN划分方法与流程
  12. [51Nod 1035 最长的循环节] 循环小数的性质
  13. Instagram移动网页版推图片分享功能:追求国际增长
  14. html 导出 excel 列宽,Html2Excel 更名为 MyExcel,2.1.0 版本发布!
  15. 百度表格识别——原理解读
  16. 谷歌浏览器翻译插件的安装与使用
  17. 日本华人IT派遣那点事儿(2)
  18. 【Note4】shell语法,ssh/build/scp/upgrade,环境变量,自动升级bmc,bmc_wtd,peci,软连接
  19. 益聚星荣:网易有道、沪江小D等词典错误频现 莫让词典类APP误人子弟
  20. [回溯法] 回溯法介绍-回溯与递归的区别

热门文章

  1. js Date.parse()兼容性问题
  2. 最大整数(Noip1998连接多位数)
  3. c++面对对象设计 2
  4. 【Mood-9】搬家至博客园喽~~~
  5. 12 求1+2+...+n
  6. 一个项目涉及到的50个Sql语句(整理版)
  7. note-删除Visual Studio recent Projects list
  8. selenium + python 登录页面,输入账号、密码,元素定位问题
  9. JZOJ 3.10 1542——跑步(树状数组+模拟+排序/归并排序)
  10. 《Linux内核设计与实现》课程学习重点问题总结