问题标签 [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 投票
1 回答
2386 浏览

matlab - ode45 用于朗之万方程

我有一个关于使用 Matlab 计算随机微分方程解的问题。方程是本文(PDF)中第 3 页的 2.2a,b 。

我的教授建议使用ode45小时间步长,但结果与文章中的不符。特别是时间序列和pdf。我对函数中白噪声的定义也有疑问。

这里是集成函数的代码:

主脚本:

如果您有任何建议,我将不胜感激。

这里是面对我的 EM 方法和“sde_euler”的新代码。

再次感谢您的帮助 !

0 投票
2 回答
366 浏览

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 相同的方式返回结果,所以没有我预先指定我希望返回结果的时间点。

0 投票
0 回答
132 浏览

matlab - Matlab ode45 没有为我的“时间跨度”向量指定的每个增量输出解决方案

我正在使用以下代码调用 ODE45 的函数来解决:

我试图让 ode45 在 0 到 50 之间以 0.5e-3 的增量为我提供值,这应该输出大约 10000 的解向量长度,但我得到的解向量只有 2720 点。奇怪的是,我正在调用 ode45 的另一个函数来解决以下问题:

...这给了我想要的 10000 长度的解向量——直到最近。我尝试以这种方式调用它:

...这给了我一个 2720 长度的解向量,现在,即使我将代码本身更改回“@HH”,它仍然给我 2720 长度向量,而不是所需的 10000 长度向量。

我在 ode45 调用期间为被调用函数指定输入和输出的方式似乎把事情搞砸了,但我不知道是什么。

我将非常感谢任何人的建议!谢谢!

0 投票
0 回答
167 浏览

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。

谁能帮我吗?

我将上传代码,所以这里看起来不会太乱。

RK.zip

0 投票
1 回答
234 浏览

matlab - MATLAB ode45 函数“输入错误太多”

我的功能是:

当我在命令窗口中运行该函数时

我回来

任何帮助将非常感激。

0 投票
0 回答
47 浏览

matlab - 如果我必须使用一些取决于每个时间步的解决方案的参数,在 matlab 中使用 ode45 时如何设置 RHS?

C0, C1,C2C3是 Const.,FFC2*y(3)^0.5if y(3) > 100; FFC3*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 和其他求解器进行了几次测试后,我意识到矩阵接近奇异矩阵。所以身体状况是个问题。

0 投票
0 回答
91 浏览

matlab - 通过减少 ODE45 中的操作位数来提高速度

我正在使用 ODE45,我想强制 matlab 只使用多达 2 位小数。

我已经看到使用 vpa 可以做到这一点,但它在 ODE 中并没有真正起作用。有任何想法吗?

谢谢!

0 投票
0 回答
388 浏览

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

0 投票
2 回答
331 浏览

matlab - 以非常大的数字作为约束的 ODE45

在 MATLAB 中求解的第二个ODE :

边界条件:

在哪里

  • t是时候,
  • x是位置
  • dx/dt是速度
  • d2x/dt2是加速度
  • a, b,v0是常数
  • f(t)k(t)并且h(t)是依赖于已知函数t (我不写它们,因为它们很大)

例如,使用符号变量:

我怎样才能将其重写xy=dx/dt?我是 Matlab 新手,非常欢迎任何帮助!

0 投票
2 回答
3002 浏览

matlab - 带有矩阵初始条件的 ode45

我是 MATLAB 的新手用户。我有代码试图找到状态空间模型的时间历史。有四个一阶 ODE,我想同时使用ode45. 待解方程的实质如下:

其中[M], [K], [C], [P3], 和[P4]是 3x3 矩阵;x1, x2, x3,x4都是 3x1 向量;等x1_dot表示时间导数(它们是 3x1 向量)。我只有初始条件x1

我编写的 MATLAB 代码如下。这段代码在我的整个程序中。我没有调用单独的函数,因为我不知道如何通过ode45函数传递所有矩阵/向量。我收到错误消息:“索引超出矩阵维度。”

问题:

  1. 如何处理x(1)x(2)x(3)x(4)inode45是 3x1 向量?

  2. 如何为这个方程组应用初始条件?例如,我是否使用矢量格式,例如: initial = [0 0.03491 0; 0 0 0; 0 0 0; 0 0 0]

  3. 我是否正确使用/编写了函数(f)和ode45