问题标签 [ode45]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
23804 浏览

python - 在 Python 中模仿 MATLAB 中的 ode45 函数

我想知道如何将 MATLAB 函数 ode45 导出到 python。根据文档应该如下:

结果完全不同,Matlab 返回的维度与 Python 不同。

0 投票
0 回答
305 浏览

matlab - 如何在 MATLAB 中更改 ODE 求解器(例如 ODE45)中的参数值?

当 T 在 [0,12] 范围内时,我必须在 matlab 中用 ode45 求解这个方程:

在此处输入图像描述

我想要那个时候:

  • T > Tend,开关为0,
  • (T < Tin and dT/dt > 0),开关为 1。

我在这里看到了文档,但我不明白怎么做。

odefun 函数:


正如我上面所说,我不想将参数传递给函数!也许以前的标题具有误导性,但我认为我的问题很清楚。但是,我尝试更好地解释。Ode45 数值积分我的函数,所以它给了我在时间 t_i ( f(t_i) ) 的函数值,并且对于 [0:12] 中的每个 t_i 重复此操作。我想根据时间 t_i 的函数值来更改时间 t_(i+1) 的积分开关的值。[规则在上面解释]。

0 投票
1 回答
3475 浏览

matlab - 四分之一汽车模型matlab代码ode45绘图

我有一个四分之一的汽车模型,它是一个带有阻尼器和弹簧的 2 自由度系统,带有以下代码和图表;

四分之一汽车模型

在这里,我尝试将输入作为道路条件。首先,我将步长输入设置为 0.5 秒后 0.01 米的高度,因此我将函数 dx(4) 更改为如下更改函数文件;

添加;

在代码 dx=zeros(4,1) 和 dx(1)=x(2) 之间。

回想一下这个函数,我可以绘制 x1 和 x2(即汽车和轮胎)位移的图形,如下所示;

问题1,我有一个图表

图1

但这不是我想要的图表,我怎样才能得到 x1 稳定在 0.7 和 x2 分别在 0.35 作为初始条件的图表,而不是 0?

此外,我尝试更改 x1、k1 和 k2 值,以查看它如何通过分别更改函数文件中的 x1、k1 和 k2 值并单独保存来影响位移。

问题 2,我尝试在不同的图中同时绘制所有 x1 和 x2 的图形,如下所示;

但我有一个错误,向量数组必须匹配。它实际上是不同的,因为 x1_position 是 1361x1 而 x2_position_2700 是 1041x1 等。如何更改代码以匹配数组?

问题 3,如果我想设置一个幅度为 0.01 米的正弦输入,我应该如何更改输入?

谢谢

0 投票
1 回答
54 浏览

matlab - 使用 ode45 设置两个事件

有人可以解释一下以这种方式设置 ode45 事件时我做错了什么吗?

当我尝试运行代码时,它会到达第 6 行,但是无论我isTerminal=[1,1]在第 7 行设置了什么,它都不会停止计算 ode,而是会一直持续到结束:当第二个事件 z(3) 达到 0 时,它会到达第 10 行,取决于我是否设置isTerminal=[1,1]isTerminal=[0,1]然后停止计算isTerminal(1)作为触发事件和isTerminal(2)后一种情况。

我的问题是,为什么 ode 一旦到达第 7 行就不会停止计算?这是我能想到的最简约的例子。如果还有什么我应该补充的,请告诉我。

0 投票
1 回答
49 浏览

matlab - 是否可以通过非连续函数触发事件?

有人可以通过为不连续的函数指定事件来为我指明正确的方向吗?例如,假设我有一个沿 x 轴移动的 Object1,我还有另一个在 x=100 处垂直移动的 Object2。

我希望每当 Object1 通过 x=100 并且两个对象之间的距离为 10 时触发事件函数。问题是当事件触发时,距离必须从 d=10 跳到 -1,而我这对我不起作用,因为该功能不连续。

任何人都知道如何指定此功能?

0 投票
0 回答
41 浏览

matlab - 我无法解决这个等式,在 Matlab 中使用 ode45

dθ/dτ=-θ-b*θ^4

我需要通过 ode45 求解这个方程 我尝试了以下方法,但我不确定它是否正确

情节(t,a)


0 投票
1 回答
31 浏览

matlab - Matlab:其他 odes 正在工作,除了 ode45 我需要 - 为什么?

我有以下脚本:

请考虑上述代码块中的以下行:

如果我将其更改为ode113ode23,则会生成该图形,但是当我将其更改ode45为时出现错误:

我可以进行哪些更改以使其完美运行?

0 投票
1 回答
40 浏览

matlab - 使用 MATLAB 绘制由 ODE 系统定义的函数

我正在尝试用 MATLAB 解决一阶 ODE 系统,

我已经定义了函数:

时间间隔为[0,100],初始条件为z0 = [0.01 0.01 0.01 0.01]

使用ode45求解器,我使用了以下命令:

我很容易得到z(1)=x_1.

但我想绘制函数f(t)=(t+1)*x_1(t), t\in [0,100]x_1=z(1)系统的第一个未知数在哪里。我怎么能这样做?

0 投票
1 回答
20 浏览

matlab - 在指定域上绘制函数

我正在尝试绘制 ODE 系统的解决方案。代码是:

为什么输出绘制在区间 [0,60] 而不是 [0,10] 上,如代码中所示? 在此处输入图像描述

0 投票
0 回答
25 浏览

matlab - 在同一输出中绘制三个函数

我已经定义了函数

我已经使用了命令

我只得到了 z(3) 和 z(5) 的绘图,z(1) 根本没有绘图。为了在同一输出中绘制所有三个函数 z(1)、z(3)、z(5),我该怎么做?