当前位置: 首页 > news >正文

如何用Python求解微分方程组

文章目录

    • odeint简介
    • 示例

odeint简介

scipy文档中将odeint函数和ode, comples_ode这两个类称为旧API,是scipy早期使用的微分方程求解器,但由于是Fortran实现的,尽管使用起来并不方便,但速度没得说,所以有的时候还挺推荐使用的。

其中,odeint的参数如下

scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0, tfirst=False)

其中func为待求解函数;y0为初值;t为自变量列表,其他参数都有默认选项,可以不填,而且这些参数非常多,其中常用的有

  • args func中除了t之外的其他变量
  • Dfun func的梯度函数,当此参数不为None时,若将col_deriv设为True,则可提升效率。
  • full_output 如果为True,则额外返回一个参数字典
  • ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5,
  • printmessgTrue时打印信息。
  • tfirst 当为False时,func的格式为func(y,t...),否则格式为func(t, y...)

示例

对于常微分方程

θ′′(t)+bθ′(t)+csin⁡θ(t)=0b=0.25;c=5θ(0)=π−0.1;θ′(0)=0\theta''(t)+b\theta'(t)+c\sin\theta(t)=0\\ b=0.25;\quad c=5\\ \theta(0)=\pi-0.1;\quad \theta'(0)=0 θ′′(t)+bθ(t)+csinθ(t)=0b=0.25;c=5θ(0)=π0.1;θ(0)=0

将其中的二阶导数项用一个新变量替代,ω(t)=θ′(t)\omega(t)=\theta'(t)ω(t)=θ(t),则常微分方程可拆分成微分方程组

θ′(t)=ω(t)ω′(t)=−bω(t)−csin⁡θ(t)\begin{aligned} \theta'(t)&=\omega(t)\\ \omega'(t)&=-b\omega(t)-c\sin\theta(t) \end{aligned} θ(t)ω(t)=ω(t)=(t)csinθ(t)

y=[θ,ω]y=[\theta, \omega]y=[θ,ω],则y′=[θ′,ω′]y'=[\theta', \omega']y=[θ,ω],据此可设计函数func

import numpy as np
def pend(y, t, b, c):th, om = ydydt = [om, -b*om - c*np.sin(th)]return dydt

然后调用并求解

from scipy.integrate import odeint
y0 = [np.pi-0.1, 0]
t = np.linspace(0, 10, 101)
sol = odeint(pend, y0, t, args=(0.25, 5))

然后绘制一下结果

import matplotlib.pyplot as plt
plt.plot(t, sol[:,0], label="theta")
plt.plot(t, sol[:,1], label="omega")
plt.legend()
plt.show()

在这里插入图片描述

这个形状还是比较离奇的。

相关文章:

如何用Python求解微分方程组

文章目录odeint简介示例odeint简介 scipy文档中将odeint函数和ode, comples_ode这两个类称为旧API,是scipy早期使用的微分方程求解器,但由于是Fortran实现的,尽管使用起来并不方便,但速度没得说,所以有的时候还挺推荐…...

【微信小程序】-- 自定义组件 - behaviors(三十九)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

【微信小程序】-- 自定义组件 - 父子组件之间的通信(三十八)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

Java Web 实战 11 - 多线程进阶之常见的锁策略

常见的锁策略常见的锁策略1. 乐观锁 VS 悲观锁2. 普通的互斥锁 VS 读写锁3. 重量级锁 VS 轻量级锁4. 自旋锁 VS 挂起等待锁5. 公平锁 VS 非公平锁6. 可重入锁 vs 不可重入锁7. 常见面试题大家好 , 这篇文章给大家带来的是多线程中常见的锁策略 , 我们会给大家讲解 6 种类别的锁…...

(20)目标检测算法之YOLOv5计算预选框、详解anchor计算

目标检测算法之YOLOv5计算预选框、详解anchor计算 单节段目标检测算法中:预选框的设定直接影响最终的检测精度众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置文件config中的预设还是很重要yolo算法作为on…...

3-1 SpringCloud快速开发入门: Ribbon 是什么

接上一章节Eureka 服务注册中心自我保护机制,这里讲讲Ribbon 是什么 Ribbon 是什么 通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行,负载均和分为硬件负载均衡和软件负载均衡: **硬件负载均衡:**比如 F5、深信…...

Java【lambda表达式】语法及使用方式介绍

相关文章目录 第一篇: Java【EE初阶】进程相关知识 进程管理 内存管理 文章目录相关文章目录前言一、lambda表达式 是什么?1, lambda表达式 的背景2, 什么是 函数式接口3, lambda表达式 的语法二、lambda表达式 的使用方式1, 无参无返回值2, 有一个参…...

【AcWing】蓝桥杯备赛-深度优先搜索-dfs(2)

目录 写在前面: 题目:94. 递归实现排列型枚举 - AcWing题库 读题: 输入格式: 输出格式: 数据范围: 输入样例: 输出样例: 解题思路: 代码: AC &…...

‘conda‘不是内部或外部命令,也不是可运行的程序或批处理文件。

Anaconda环境搭建常见问题 conda不是内部或外部命令,也不是可运行的程序或批处理文件。 解决方案:配置环境变量 1.找到Anaconda Nvaigator单机右键 2.更多 3.打开文件所在位置 4.继续Anaconda Nvaigator单机右键,更多,选择文件…...

HTTP 3.0来了,UDP取代TCP成为基础协议,TCP究竟输在哪里?

TCP 是 Internet 上使用和部署最广泛的协议之一,多年来一直被视为网络基石,随着HTTP/3正式被标准化,QUIC协议成功“上位”,UDP“取代”TCP成为基础协议,TCP究竟“输”在哪里? HTTP/3 采用了谷歌多年探索的基…...

《JavaCV从入门到实战教程合集》介绍和目录

前言 《JavaCV从入门到实战教程合集》是2016年《JavaCV开发实战教程》和2018年《JavaCV入门教程》2022年《JavaCV音视频实战宝典》三合一汇总合集,完整包含JavaCV入门教程》、《JavaCV开发实战教程》系列和《JavaCV音视频实战宝典》系列所有付费内容。 《JavaCV入…...

Form Generator扩展 文本 组件

一、form-generator是什么?✨ ⭐️ 🌟 form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 但目前它提供的组件并不能满足我们在项目中的…...

【C/C++】必知必会知识点大总结

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…...

【JavaScript 逆向】百度旋转验证码逆向分析

声明本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!案例目标爱企查百度安全验证百度搜索:aHR0cHM6Ly93YXBwYXNzLmJhaWR1LmNvbS9zdGF0aWMvY2FwdGNoYS8以上均做了脱敏处理,B…...

PCL 点云投影到直线(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示1、原始点云2、投影结果一、算法原理 直线方程有三种表示法:一般式、点向式、参数式。PCL中统一采用的是点向式,直线的点向式方程为: x − x 0 m = y −...

中缀表达式转后缀表示式,及后缀表达式的运算规则

后缀表达式又称为逆波兰表达式 一,中缀表达式如何转后缀表达式 假定给出以下中缀表达式 132*2-1; 要将该表达式转为后缀表达式,我们要按照一定的规则去走,并且用到栈。 先来看规则中缀转后缀的规则: 前提&#x…...

【C++】STL简介

文章目录什么是STLSTL版本 原始版本(HP版本) P.J.版本 RW版本 SGI版本STL六大组件 容器 算法 仿函数 空间配置器 迭代器 配接器STL缺陷什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不…...

(小甲鱼python)文件永久存储(上)总结 python文件永久存储(创建打开文件、文件对象的各种方法及含义)

一、文件永久存储 如何将数据永久的存放在硬盘上,具体如下。 1.打开文件 定义:往大了讲计算机系统中由操作系统管理的具有名称的存储区域,往小了讲是生活中的PPT、Excel、word三剑客、视频文件、音频文件等。 创建打开文件: open…...

甲酸溶液除钠离子,丙酸溶液除钾离子,医药液体除钾

水是医药行业中用量大、使用 泛的一种原料,它在生产过程中和药剂药品的制备中发挥着极其重要的作用。制药用水的原水通常为自来水或深井水,原水不能直接用作制剂用水或实验用水。因为原水中含有各类盐类和化合物,溶有CO2,还存在大…...

操作系统(2.2)--进程的描述与控制

目录 二、进程的描述 1.进程的定义和特征 1.1进程的定义 1.2进程的特征 2.进程的基本状态及转换 2.1进程的三种基本状态 2.2 三种基本状态的转换 2.3创建状态和中止状态 3.挂起操作和进程状态的转换 3.1 挂起状态的引入 3.2 引入挂起操作后三个进程状态的转换 …...

量子程序员紧急预警:VSCode 2026插件已默认启用量子噪声建模沙箱(含Rigetti Aspen-M2/Quantinuum H2实测参数),你的本地模拟还准确吗?

第一章:量子程序员紧急预警:VSCode 2026插件已默认启用量子噪声建模沙箱(含Rigetti Aspen-M2/Quantinuum H2实测参数),你的本地模拟还准确吗?VSCode 2026.1 版本正式将 qsim-noise-sandbox 插件设为量子开发…...

AI绘画工具部署:Nunchaku FLUX.1-dev在ComfyUI中的分步安装指南

AI绘画工具部署:Nunchaku FLUX.1-dev在ComfyUI中的分步安装指南 1. 环境准备:确保系统满足要求 在开始安装前,请确认您的系统满足以下基础要求: 1.1 硬件要求 显卡:NVIDIA显卡(支持CUDA)&…...

UE5实战:Alembic文件导入全攻略(含Maya导出避坑技巧)

UE5实战:Alembic文件导入全流程解析与性能优化指南 在影视级实时动画制作流程中,Alembic文件格式已成为跨软件协作的黄金标准。作为开源的几何体缓存交换格式,它能够将Maya中复杂的动态模拟完美迁移到UE5的实时渲染环境中。本文将深入解析从M…...

丹青幻境部署教程:从Docker镜像拉取到本地模型路径映射的完整操作链

丹青幻境部署教程:从Docker镜像拉取到本地模型路径映射的完整操作链 1. 环境准备与快速部署 在开始部署丹青幻境之前,请确保您的系统满足以下基本要求: 操作系统:Ubuntu 20.04 或 CentOS 8(推荐Ubuntu)D…...

163MusicLyrics:重构音乐歌词管理的效率引擎

163MusicLyrics:重构音乐歌词管理的效率引擎 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 问题场景:当音乐爱好者遇上歌词管理困境 深夜制作播…...

WuliArt Qwen-Image Turbo场景应用:如何用它为你的PPT快速制作精美配图?

WuliArt Qwen-Image Turbo场景应用:如何用它为你的PPT快速制作精美配图? 1. 从“找图难”到“生成快”:PPT配图的新解法 你有没有过这样的经历?明天就要做工作汇报,PPT内容都写好了,就差几张能撑起场面的…...

从NLDM到CCS:揭秘先进工艺下时序模型的演进与实战选择

1. 时序模型的基础概念与重要性 在芯片设计领域,时序模型就像建筑师的施工图纸一样关键。想象一下,如果你要建造一座摩天大楼,但没有精确的图纸告诉你每根钢筋的承重能力和连接方式,结果会怎样?同样,在芯片…...

基于端口激励-响应建模的无源网络故障检测系统

1. 项目概述2023年全国大学生电子设计竞赛J题“线路故障自动检测系统”是一项面向复杂无源网络故障诊断的嵌入式硬件系统工程。该系统需在限定拓扑结构的测试网络中,准确识别单点故障的位置与类型——包括电感断路/短路、电容断路/短路、二极管断路,并支…...

避坑指南:uview CountDown倒计时组件在uniapp中的常见问题与解决方案

uView CountDown倒计时组件深度避坑指南:从原理到实战的完整解决方案 第一次在uni-app项目里引入uView的CountDown组件时,我盯着那个静止不动的数字发呆了半小时。控制台没有报错,props配置看起来也没问题,但倒计时就是纹丝不动。…...

Qwen2.5-VL-7B-Instruct快速上手:3分钟完成start.sh启动+浏览器访问验证

Qwen2.5-VL-7B-Instruct快速上手:3分钟完成start.sh启动浏览器访问验证 1. 项目简介 Qwen2.5-VL-7B-Instruct是一款强大的多模态视觉-语言模型,能够同时处理图像和文本输入,生成高质量的文本输出。这个模型特别适合需要结合视觉理解和语言生…...