使用 matlab 求解 ode 系统

2024-01-27

我有 9 个带有时间相关系数的方程g

% MY M file
function dy =tarak(t,y)
G= 3.16;
g =  0.1*exp(-((t-200)/90).^2);
dy=zeros(9,1);
dy(1)=-2*2*y(1)+2*G*y(5)+2*g*y(7);
dy(2)=2*y(1)-2*G*y(5);
dy(3)=2*y(1)-2*g*y(7);
dy(4)=-2*y(4)+g*y(9);
dy(5)=-2*y(5)+G*(y(2)-y(1))+g*y(8);
dy(6)=-2*y(6)-G*y(9);
dy(7)=-2*y(7)+g*(y(3)-y(1))+G*y(8);
dy(8)=-G*y(7)-g*y(5);
dy(9)=G*y(6)-g*y(4);

然后在命令窗口中:

[T,Y] = ode45(@tarak,[0 ,500],[0 0 1 0 0 0 0 0 0])

其中系数G = 3.16 and g = 0.1*exp(-((t-200)/90).^2)是时间相关系数和时间t = 0:500;初始条件[0 0 1 0 0 0 0 0 0].

我得到错误的输出负值y(1), y(2)。有人可以尝试解上面的方程吗ode45这样我就可以比较结果。


通过 RK4 的简单应用,我得到了这张照片

非常积极,有一个奇怪的初始跳跃y(1)成分。但要注意整体的规模y(1)是相当小的。看来此时系统是僵硬的,所以 rk45 可能会出现问题,隐式 Runge-Kutta 方法会更好。

以及初始振荡的放大


Python代码

import numpy as np
import matplotlib.pyplot as plt
from math import exp

def dydt(t,y):
    dy = np.array(y);

    G = 3.16;
    g = 0.1*exp(-((t-200)/90)**2);

    dy[0]=-2*2*y[0]+2*G*y[4]+2*g*y[6];
    dy[1]=   2*y[0]-2*G*y[4];
    dy[2]=   2*y[0]-2*g*y[6];
    dy[3]=  -2*y[3]+  g*y[8];
    dy[4]=  -2*y[4]+  G*(y[1]-y[0])+g*y[7];
    dy[5]=  -2*y[5]-  G*y[8];
    dy[6]=  -2*y[6]+  g*(y[2]-y[0])+G*y[7];
    dy[7]=  -G*y[6]-  g*y[4];
    dy[8]=   G*y[5]-  g*y[3];
    return dy;

def RK4Step(f,x,y,h):
    k1=f(x      , y         )
    k2=f(x+0.5*h, y+0.5*h*k1)
    k3=f(x+0.5*h, y+0.5*h*k2)
    k4=f(x+    h, y+    h*k3)
    return (k1+2*(k2+k3)+k4)/6.0


t= np.linspace(0,500,200+1);
dt = t[1]-t[0];
y0=np.array([0, 0, 1, 0, 0, 0, 0, 0, 0]);

y = [y0]

for t0 in t[0:-1]:
    N=200;
    h = dt/N;
    for i in range(N):
        y0 = y0 + h*RK4Step(dydt,t0+i*h,y0,h);
    y.append(y0);

y = np.array(y);

plt.subplot(121);
plt.title("y(1)")
plt.plot(t,y[:,0],"b.--")
plt.subplot(122);
plt.title("y(2)")
plt.plot(t,y[:,1],"b-..")
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 matlab 求解 ode 系统 的相关文章

  • MATLAB:比较两个不同长度的数组

    我有两个长度不同的数组 由于采样率不同 需要比较 我想对较大的数组进行下采样以匹配较小的数组的长度 但是该因子不是整数而是小数 举个例子 a 1 1 375 1 75 2 125 2 5 2 875 3 25 b 1 2 3 有什么方法可以
  • 为什么matlab的mldivide比dgels好这么多?

    Solve Ax b 真正的双 A是超定的 Mx2 其中 M gt gt 2 b是MX1 我运行了大量的数据mldivide 并且结果非常好 我用 MKL 写了一个 mex 例程LAPACKE dgels但它远没有那么好 结果有大量噪音 并
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca

随机推荐

  • 通过querySelectorAll()获取节点列表

    给出以下示例代码 import LitElement html css from lit element class ItemsDisplay extends LitElement static get styles static get
  • 如何在json渲染中获取完整的belongs_to对象?

    基本上 我有一个属于 company 的对象 并具有 company id 属性 当我渲染 json coupons 时 JSON 是否可以包含其所有者的属性而不是 company id 你也许可以做类似的事情render json gt
  • Python argparse:如何将“--add”更改为“add”,同时仍然是可选参数?

    我想要这个功能 python program py add Peter Peter was added to the list of names 我可以通过以下方式实现这一点 add代替add像这样 import argparse pars
  • MACOSX - 如何自定义 IKImageBrowserView 以在每个项目上添加 NSButton?

    我想自定义 IKImageBrowserView 以便我可以在 IKImageBrowserView 的单元格上添加 NSButton 或其他控件 我尝试剪切 IKBrowserViewCell 类 但我不知道如何以及在哪里添加 NSbut
  • libGDX中如何处理不同的宽高比?

    我已经使用 libGDX 实现了一些屏幕 显然会使用ScreenlibGDX 框架提供的类 但是 这些屏幕的实现仅适用于预定义的屏幕尺寸 例如 如果精灵适用于 640 x 480 尺寸的屏幕 4 3 宽高比 则它不会在其他屏幕尺寸上按预期工
  • 从命令行调用 Roslyn 分析器

    在 Visual Studio 2015 中进行开发时使用 Roslyn 分析器非常棒 然而 如果能够从预提交挂钩或像 TeamCity 这样的 CI 调用分析器 以确保标记不合格的代码 那就更好了 有没有办法通过调用命令行实用程序来获取分
  • C# double 的尾数标准化

    编辑 现在开始工作 在规范化螳螂时 首先设置隐式位很重要 在解码隐式位时不必添加 我将标记的答案保留为正确的 因为那里的信息确实有帮助 我目前正在实现一种编码 可区分编码规则 并且在编码双值时遇到一些小问题 因此 我可以使用以下方法从 c
  • 使用单选按钮更改表单操作

    我想实现类似于带有单选按钮的谷歌搜索的东西 根据所选的单选按钮 将更改搜索类型 搜索 图像 视频等 现在我有 div div
  • 在 Node.js 和 Sass 之间共享配置变量

    我正在开发一个具有客户端 服务器架构的浏览器游戏 该游戏涉及一个 HTML 画布作为游乐场 我希望能够在单个配置文件中设置该画布的尺寸 然后在 CSS 中重用它 1 来定义画布的实际尺寸和 2 在游戏服务器的代码中用于碰撞和其他内容 做这个
  • Consul HTTP请求获取所有kv值

    我需要得到所有consul使用 http api 的 kv 值 目前我可以使用以下命令获取一个值 curl k X GET https consul banuka1 us east 2 test 8543 v1 kv banuka test
  • Android SDK 彩信

    有谁知道如何通过 Android SDK 以编程方式发送彩信 任何版本的 SDK 都可以 只需要知道从哪里开始 我知道如何发送 接收短信 现在我需要在发送之前在消息中添加图片 这对我有用 Intent sendIntent new Inte
  • 我们能否仅通过后序遍历或先序遍历来构造一棵满二叉树?

    例如 我们只提供后序遍历数组或者只提供前序遍历数组 我们可以重建二叉树吗 如果我们知道二叉树是满的 此外 如果不是 如果同时知道前序和后序 是否可以构造完整的二进制文件 不 你不能仅凭一份清单 想想邮购清单 4 5 2 3 1 1 1 2
  • 核心数据和 iTunes 文件共享 - 在应用程序更新时移动/隐藏 .sqlite 文件?

    我有一个 iPad 应用程序 它使用 Core Data 进行数据存储 我想在 iTunes 中启用文件共享 但我真的不希望用户能够删除或修改 sqlite 文件 我可以将该文件移动到其他隐藏目录吗 或者 可以将该文件设置为只读吗 只要文件
  • ARC 应用程序在 google chrome 45 上崩溃

    今天 当使用 arc 运行时测试 Android 应用程序时 由于某种原因 它在我没有注意到的情况下进行了更新 我得到的只是它立即崩溃 我尝试过使用电弧焊机重新包装 但不知何故也更新了但没有结果 更新 因为我在稳定通道上没有看到任何进展 所
  • 如何检查我的 AVPlayer 是否正在缓冲?

    我想检测我的 AVPlayer 是否正在缓冲当前位置 以便我可以显示加载程序或其他内容 但我似乎在 AVPlayer 的文档中找不到任何内容 你可以观察你的价值观player currentItem playerItem addObserv
  • Magento 中 /app/code/core/Mage/Core/Model/Resource/Resource.php 出现致命错误

    刚刚将 Magento 安装从 1 5 升级到 1 6 并出现以下错误 致命错误 在非对象上调用成员函数 insert hsphere local home t21004 XXXXXXXXXXXXX com app code core Ma
  • 需要 C# 程序集来松散引用强命名程序集

    所以问题就在这里 我正在编写一些 StyleCop 插件程序集 供我工作的公司使用 因此 这些程序集需要引用强命名的 Microsoft StyleCop CSharp dll 问题在于 如果我构建这个并将其传递给我组中的开发人员 他们必须
  • 使用内置 Hive 运行 Spark 并为 Hive Metastore 配置远程 PostgreSQL 数据库

    我正在运行带有内置 Hive 的 Spark v1 0 1 使用 SPARK HIVE true sbt sbt 程序集 程序集安装 Spark 我还配置 Hive 将 Metastore 存储在 PostgreSQL 数据库中 如下所示
  • Conda 包冲突,Geopandas

    在通过 conda forge 命令在终端中失败后 尝试在我的环境中安装 geopandas 时 我收到以下错误 有没有办法更新和修复这个问题 Output in format Requested package gt Available
  • 使用 matlab 求解 ode 系统

    我有 9 个带有时间相关系数的方程g MY M file function dy tarak t y G 3 16 g 0 1 exp t 200 90 2 dy zeros 9 1 dy 1 2 2 y 1 2 G y 5 2 g y 7