NumPy odeint 输出额外变量

2023-12-14

在仿真过程中保存中间变量的最简单方法是什么odeint在 Numpy 中?

例如:

def dy(y,t)
    x = np.rand(3,1)
    return y + x.sum()

sim = odeint(dy,0,np.arange(0,1,0.1))

保存存储在中的数据的最简单方法是什么x模拟期间?理想情况下在指定的点t参数传递给odeint.


破解 odeint 的一种便捷方法(有一些注意事项)是将您对 odeint 的调用包装在类中的方法中,使用dy作为另一种方法,并通过self作为你的论点dy功能。例如,

class WrapODE(object):
    def __init__(self):
        self.y_0 = 0.
        self.L_x = []
        self.timestep = 0
        self.times = np.arange(0., 1., 0.1)

    def run(self):
        self.L_y = odeint(
            self.dy,
            self.y_0, self.times,
            args=(self,))

    @staticmethod
    def dy(y, t, self):
        """"
        Discretized application of dudt

        Watch out! Because this is a staticmethod, as required by odeint, self
        is the third argument
        """
        x = np.random.rand(3,1)
        if t >= self.times[self.timestep]:
            self.timestep += 1
            self.L_x.append(x)
        else:
            self.L_x[-1] = x
        return y + x.sum()

需要明确的是,这是一个很容易陷入陷阱的黑客行为。例如,除非 odeint 执行欧拉步进,否则 dy 被调用的次数将超过您指定的时间步数。为了确保你得到一个x对于每个y,猴子生意if t >= self.times[self.timestep]:块在数组中选择一个位置来存储每个时间值的数据times向量。您的特定应用程序可能会导致其他疯狂的问题。请务必针对您的应用彻底验证此方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NumPy odeint 输出额外变量 的相关文章

随机推荐

  • 如何检查Python字典中的内部字典中是否存在某个键?

    有一个Python字典 a b c x 1 y 2 z 3 我想知道是否a b c z 存在 但我还不知道是否a b c or a b 都存在 所以 如果我这样做 if z in a b c 我可能会得到一个 key c doesn t e
  • 为什么 C++ 模板类型匹配不检索引用限定符“&”?

    我有以下程序 include
  • 为什么在C语言中可以定义一个变量两次?

    我一直在测试全局变量 定义和声明 但我在这种情况下停了下来 main c include stdio h void func void int a int main void a 20 printf in main d n a func r
  • Java中如何通过分段请求上传大文件?

    我在用this教程上传大文件 但无法上传甚至 300KB 的文件 此外 它不会上传除 txt or log文件 需要可以帮助我上传大文件 无论文件类型如何 的指针 分享修改后的代码 public class MultipartUtility
  • sonarqube“应用项目排除”非常慢

    我们使用的是 sonarqube 5 1 1 应用项目排除 步骤通常非常非常慢 有时在 1 2 5 小时范围内 我们有 全局源文件排除 来排除 2 种模式 swagger ui min js 我不确定这是多久以前的更改 因为我们的 sona
  • Haskell第一步编译错误

    我刚刚从这里安装了完整的 Haskell 平台和安装程序https www haskell org platform mac html 现在 作为菜鸟 我创建了一个非常简单的程序 只是为了看看它是否有效 f Int gt Int f x x
  • 为什么每次我在 CosmosDB 文档资源管理器中查询 SELECT count(1) FROM c 时,它的值都会更改?

    我有一个包含大约 600 700 000 个文档的数据库 当我在文档资源管理器中执行 SELECT value count 1 FROM c 时 它返回的值范围从 64 000 到 72 000 看起来是随机的 当我使用 Python SD
  • 从 python 重新启动本地计算机

    有没有办法让电脑重启后运行Python程序 通用解决方案很好 但特别是我在 Windows 上 据我所知 没有通用的方法可以做到这一点 对于 Windows 您需要访问 Win32 API 就像这样 import win32api win3
  • 使用 Google 表格创建嵌套 JSON 对象

    我正在尝试自学一些 AppScript Javascript 作为练习 我想生成以下 JSON 对象 config type City Details config data city type MAJOR CITY city data c
  • 全局变量(再次)

    我一直听说全局变量应该never被使用 但我倾向于忽略 never 规则头脑发热 真的没有例外吗 例如 我目前正在使用 SDL 用 C 编写一个小游戏 在我看来 拥有一个带有指向屏幕缓冲区的指针的全局变量很有意义 因为代表游戏中不同类型事物
  • Jquery数据表在其中一列中显示图像

    我正在使用 Jquery 数据表并使用 Ajax 从服务器获取数据 基本上我发送的数据是关于Order并且有不同类型的订单 我想要实现的目标是发送Order type与订单数据一起并在客户端显示图像 我主要有两种类型 Surplus and
  • 远程 JMX 连接

    我正在尝试打开与远程计算机上运行的 java 应用程序的 JMX 连接 应用程序 JVM 配置有以下选项 com sun management jmxremote com sun management jmxremote port 1088
  • 维护 MySQL“IN”查询中的顺序

    我有下表 DROP TABLE IF EXISTS test foo CREATE TABLE test foo id int 10 unsigned NOT NULL auto increment name varchar 45 NOT
  • updatepanel 中的 asp.net 链接按钮不触发

    我有一个 ASP NET Web 应用程序 在我的 aspx页面我有一个更新面板 其中有 3asp LinkButton这应该调用后面的 C 代码 问题是 onclick 不起作用 代码如下 div div
  • 如何在 R 中创建分组箱线图?

    我想合并分组的三个数据集并获得一个只有两个框的图 1 个用于 A 1 个用于 B 您能建议如何实现吗 我正在尝试在 R 中创建分组箱线图 我有 2 个组 A 和 B 在每个组中我有 3 个子组 每个子组有 5 个测量值 以下是我构建箱线图的
  • Java:用于异步数据库写入的TaskExecutor?

    我正在考虑使用 Java 的 TaskExecutor 来触发异步数据库写入 可以理解的是 线程不是免费的 但假设我使用固定的线程池大小 例如 5 10 这怎么是一个坏主意呢 我们的应用程序使用缓冲区从一个非常大的文件中读取数据 并在执行一
  • 对于每个单独线程一次写入的位集单独位线程是否安全?

    我想知道我们是否在操作口号或者甚至是 64 位字长 我可以同时对位集中的各个位进行操作吗 假设我有 10 个线程 每个线程都有threadId 所有线程是否可以同时设置bits threadId value std bitset 运算符 数
  • applicationContextProvider 未被调用

    我使用的是Spring 3 0 3 我想使用 applicationContextProvider 所以我声明
  • 如何在android中的EditText的错误文本中写入样式?

    我正在尝试为我的 Android 应用程序编写新的自定义样式 我需要为设置后出现的 errorText 提供样式setError in EditText 我怎样才能定制它的风格 例如 我想设置它background白色和textColor
  • NumPy odeint 输出额外变量

    在仿真过程中保存中间变量的最简单方法是什么odeint在 Numpy 中 例如 def dy y t x np rand 3 1 return y x sum sim odeint dy 0 np arange 0 1 0 1 保存存储在中