问题标签 [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.
matlab - ode45 用于朗之万方程
我有一个关于使用 Matlab 计算随机微分方程解的问题。方程是本文(PDF)中第 3 页的 2.2a,b 。
我的教授建议使用ode45
小时间步长,但结果与文章中的不符。特别是时间序列和pdf。我对函数中白噪声的定义也有疑问。
这里是集成函数的代码:
主脚本:
如果您有任何建议,我将不胜感激。
这里是面对我的 EM 方法和“sde_euler”的新代码。
再次感谢您的帮助 !
r - ODE 时间 Matlab 与 R
如果在 matlab 中使用可变时间步长求解器,例如 ODE45 - 我将为输出定义一个时间跨度,即times = [0 50]
,matlab 将在 0 到 50 之间的不同时间步长处返回结果。
然而,在 R 中,我似乎必须定义我希望 ODE 返回结果的时间点,即如果我给出times = 0:50
,它将在 51 处返回 51 个结果0,1,2, ... 50
。否则,我必须提供一个序列,例如 , times = seq(0,50,0.1)
。
我有一个功能在开始时变化很快,然后逐渐变化。在 MATLAB 中,输出结果反映了这一点,结果中返回了 82 个时间步,其中 49 个在时间步 0 和 1 之间。
我想知道是否有办法让 R 以与 MATLAB 相同的方式返回结果,所以没有我预先指定我希望返回结果的时间点。
matlab - Matlab ode45 没有为我的“时间跨度”向量指定的每个增量输出解决方案
我正在使用以下代码调用 ODE45 的函数来解决:
我试图让 ode45 在 0 到 50 之间以 0.5e-3 的增量为我提供值,这应该输出大约 10000 的解向量长度,但我得到的解向量只有 2720 点。奇怪的是,我正在调用 ode45 的另一个函数来解决以下问题:
...这给了我想要的 10000 长度的解向量——直到最近。我尝试以这种方式调用它:
...这给了我一个 2720 长度的解向量,现在,即使我将代码本身更改回“@HH”,它仍然给我 2720 长度向量,而不是所需的 10000 长度向量。
我在 ode45 调用期间为被调用函数指定输入和输出的方式似乎把事情搞砸了,但我不知道是什么。
我将非常感谢任何人的建议!谢谢!
matlab - Matlab:ODE45+Shooting Method 似乎不起作用
我正在尝试以数值方式求解三个同时的 ODE 函数:
我正在解决一个分成两半的列,我想绘制 w 对 x1 并有一个正 w (现在似乎不可能的事情)。主要有以下三个功能:
- first_sec_w:使用 RK4 方法的那个,已经找到了 theta 的初始值(使用 shoot_first 和 shoot_second)。
- shoot_first:使用 RK4 求解函数的函数,假设 theta 的初始值,直到达到 L0/2 处的 0 边界条件并返回此初始值。
- shoot_second: 几乎和上面做的一样,但它从 L0 开始,一直到 L0/2。
谁能帮我吗?
我将上传代码,所以这里看起来不会太乱。
matlab - MATLAB ode45 函数“输入错误太多”
我的功能是:
当我在命令窗口中运行该函数时
我回来
任何帮助将非常感激。
matlab - 如果我必须使用一些取决于每个时间步的解决方案的参数,在 matlab 中使用 ode45 时如何设置 RHS?
C0
, C1
,C2
和C3
是 Const.,FF
是C2*y(3)^0.5
if y(3) > 100
; FF
是C3*y(3)^0.5
如果y(3)<=100
。
这种情况下怎么设置y(4)'
?
我试过y(4)' = y(2)*((y(3) > 100)*C2*y(3)^0.5 + (y(3)<=100)*C3*y(3)^0.5);
了,没用。有什么建议么?
先感谢您。
上面的方程被简化了。
好吧,在使用 ode15s 和其他求解器进行了几次测试后,我意识到矩阵接近奇异矩阵。所以身体状况是个问题。
matlab - 通过减少 ODE45 中的操作位数来提高速度
我正在使用 ODE45,我想强制 matlab 只使用多达 2 位小数。
我已经看到使用 vpa 可以做到这一点,但它在 ODE 中并没有真正起作用。有任何想法吗?
谢谢!
matlab - Events option ode45 MATLAB
I need help with the Events option in ode45. I have a pursuit problems which involves a dog chasing a rabbit. I have already solved the preliminary questions which involved plotting the trajectory of both the dog and rabbit.
This is the function / ode. THIS CODE IS CORRECT
I want to stop the simulation when the dog has caught the rabbit. This is when the distance between the two becomes smaller than a threshold value (10^-4)
Here is my events function (not sure if this 100% correct?):
And this is the script where I call ode45 (getting errors):
Thank you
matlab - 以非常大的数字作为约束的 ODE45
在 MATLAB 中求解的第二个ODE :
边界条件:
在哪里
t
是时候,x
是位置dx/dt
是速度d2x/dt2
是加速度a
,b
,v0
是常数f(t)
,k(t)
并且h(t)
是依赖于已知函数t
(我不写它们,因为它们很大)
例如,使用符号变量:
我怎样才能将其重写x
为y=dx/dt
?我是 Matlab 新手,非常欢迎任何帮助!
matlab - 带有矩阵初始条件的 ode45
我是 MATLAB 的新手用户。我有代码试图找到状态空间模型的时间历史。有四个一阶 ODE,我想同时使用ode45
. 待解方程的实质如下:
其中[M]
, [K]
, [C]
, [P3]
, 和[P4]
是 3x3 矩阵;x1
, x2
, x3
,x4
都是 3x1 向量;等x1_dot
表示时间导数(它们是 3x1 向量)。我只有初始条件x1
。
我编写的 MATLAB 代码如下。这段代码在我的整个程序中。我没有调用单独的函数,因为我不知道如何通过ode45
函数传递所有矩阵/向量。我收到错误消息:“索引超出矩阵维度。”
问题:
如何处理
x(1)
、x(2)
、x(3)
和x(4)
inode45
是 3x1 向量?如何为这个方程组应用初始条件?例如,我是否使用矢量格式,例如:
initial = [0 0.03491 0; 0 0 0; 0 0 0; 0 0 0]
?我是否正确使用/编写了函数(
f
)和ode45
?