- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现 Runge-Kutta Method for Systems of DEs在 MATLAB 中。我没有收到 correct answers ,我不确定代码或我用来运行它的命令是否有问题。
这是我的代码:
function RKSystems(a, b, m, N, alpha, f)
h = (b - a)/N;
t = a;
w = zeros(1, m);
for j = 1:m
w(j) = alpha(j);
end
fprintf('t = %.2f;', t);
for i = 1:m
fprintf(' w(%d) = %.10f;', i, w(i));
end
fprintf('\n');
k = zeros(4, m);
for i = 1:N
for j = 1:m
k(1, j) = h*f{j}(t, w);
end
for j = 1:m
k(2, j) = h*f{j}(t + h/2, w + (1/2)*k(1));
end
for j = 1:m
k(3, j) = h*f{j}(t + h/2, w + (1/2)*k(2));
end
for j = 1:m
k(4, j) = h*f{j}(t + h, w + k(3));
end
for j = 1:m
w(j) = w(j) + (k(1, j) + 2*k(2, j) + 2*k(3, j) + k(4, j))/6;
end
t = a + i*h;
fprintf('t = %.2f;', t);
for k = 1:m
fprintf(' w(%d) = %.10f;', k, w(k));
end
fprintf('\n');
end
end
>> U1 = @(t, u) 3*u(1) + 2*u(2) - (2*t^2 + 1)*exp(2*t);
>> U2 = @(t, u) 4*u(1) + u(2) + (t^2 + 2*t - 4)*exp(2*t);
>> a = 0; b = 1; alpha = [1 1]; m = 2; h = 0.2; N = (b - a)/h;
>> RKSystems(a, b, m, N, alpha, {U1 U2});
t = 0.00; w(1) = 1.0000000000; w(2) = 1.0000000000;
t = 0.20; w(1) = 2.2930309680; w(2) = 1.6186020410;
t = 0.40; w(1) = 5.0379629523; w(2) = 3.7300162165;
t = 0.60; w(1) = 11.4076339762; w(2) = 9.7009491301;
t = 0.80; w(1) = 27.0898576892; w(2) = 25.6603894354;
t = 1.00; w(1) = 67.1832886708; w(2) = 67.6103125539;
最佳答案
所以......这是我将如何做到这一点,我很难阅读您的代码片段中发生的事情,但我希望这对您有所帮助。此外,matlab 内置了 rk 求解器,我建议您熟悉这些求解器。
%rk4 solver
dt = .2;
t = 0:dt:1;
u = zeros(2,numel(t));
u(:,1) = 1;
for jj = 2:numel(t)
u_ = u(:,jj-1);
t_ = t(jj-1);
fa = rhs(u_,t_);
fb = rhs(u_+dt/2.*fa,t_+dt/2);
fc = rhs(u_+dt/2.*fb,t_+dt/2);
fd = rhs(u_+dt.*fc,t_+dt);
u(:,jj) = u(:,jj-1) + dt/6*(fa+2*fb+2*fc+fd);
end
disp([t;u]')
function dudt = rhs(u,t)
dudt = [(3*u(1) + 2*u(2) - (2*t^2 + 1)*exp(2*t));
(4*u(1) + u(2) + (t^2 + 2*t - 4)*exp(2*t))];
>> rkorder4
0 1.0000 1.0000
0.2000 2.1204 1.5070
0.4000 4.4412 3.2422
0.6000 9.7391 8.1634
0.8000 22.6766 21.3435
1.0000 55.6612 56.0305
dt = .2;
t = 0:dt:1;
rhs=@(t,u)[(3*u(1) + 2*u(2) - (2*t^2 + 1)*exp(2*t));
(4*u(1) + u(2) + (t^2 + 2*t - 4)*exp(2*t))];
[ts,us]=ode45(@(t,u) rhs(t,u),t,[1 1],[]);
disp([ts us]);
0 1.000000000000000 1.000000000000000
0.200000000000000 2.125018862140859 1.511597928697035
0.400000000000000 4.465156492097592 3.266022178547346
0.600000000000000 9.832481410895053 8.256418221678395
0.800000000000000 23.003033457636558 21.669270713784108
1.000000000000000 56.738351357036301 57.106230777717208
dt
.它们总是在 t 的低值时最一致,两者之间的差异随着 t 的增加而增加。这两种实现也与分析解决方案非常接近。
关于matlab - 为 DE 系统实现 Runge-Kutta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14933867/
我正在尝试用python解决系统问题: z &
我在MATLAB中编程了一个自适应步长RK4来求解ODE系统。代码运行时没有错误,但是当我尝试将x与y作图时,它不会产生所需的曲线。我不再是环形形状,而是获得了一条扁平线。从r输出恒定值这一事实可以明
我一直在尝试将 RK4 集成到我正在做的模拟中。下面的函数是我基于第 12 页 this 上的方程式使用 RK4 对 3 维力场进行积分的最佳尝试。网站。 在我的代码中,粒子类主要存储速度和位置列表,
我试图获得一个简单追逐问题的数值解 (动靶+定速模块火箭) 每次迭代我的速度模块都会减少一点,将误差加起来;在几百次迭代之后,错误爆发,速度急剧下降。 但是,使用 Euler 方法(大块下方的代码)时
有人要求我解这个微分方程: (x,y,vx,vy)'=(vx,vy,vy,-vx) 它应该返回周期为 2*pi 的圆周运动。我实现了功能: class FunzioneBase { public:
我一直在研究四阶龙格-库塔求解器,但遇到了一些困难。我已经根据文章 on gafferongames 编写了求解器,但是当我运行一个包含的小例子时,我得到的错误比我用简单的欧拉积分得到的错误要糟糕得多
几乎每个游戏都倾向于使用一些游戏循环。 Gafferongames 有一篇关于如何制作精心设计的游戏循环的好文章:http://gafferongames.com/game-physics/fix-y
我有以下微分方程组: 根据他们告诉我的论文,我可以使用 RK 四阶数值求解它。 如您所见,最后两个方程是耦合的,我构造了一个关联 xn 和 yn 的矩阵(概率),其中 n = 1..(例如,N- 对数
我正在使用 Runge-Kutta 四阶方法数值求解具有四次势的弯曲时空背景标量场的常见运动方程: $\phi^{''}=-3\left(1+\frac{H^{'}}{3H}\right)\phi^{
我有一个耦合方程组:流体静力学平衡方程、质量连续性方程和理想气体的状态方程。这些是,在数学语法中, \frac{dP}{dr}=-\rho*g, 其中 \rho 是密度,g 是重力加速度。 \frac
有人能告诉我,为什么它总是返回相同的“y”值吗?我在 Internet 上搜索了很多,但我仍然不知道为什么它不起作用。 using System; using System.Collections.G
下面是我用于求解一阶 ODE 的四阶 Runge-Kutta 算法。我正在根据找到的维基百科示例检查它 here解决: \frac{dx}{dt} = tan(x) + 1 不幸的是,它有点出局了。我
我正在尝试实现 Runge-Kutta Method for Systems of DEs在 MATLAB 中。我没有收到 correct answers ,我不确定代码或我用来运行它的命令是否有问题
尝试实现自适应步长 Runge-Kutta Cash-Karp 但失败并出现此错误: home/anaconda/lib/python3.6/site-packages/ipykernel_launc
我正在尝试编写一个函数,该函数将使用 4 阶隐式 Runge-Kutta 方法 (IRK) 求解 ODES 系统,但我无法正确定义循环。这里我们定义 IRK 任何建议将不胜感激! function [
Gaffer on Games 有一个 great article关于使用RK4 integration为了更好的游戏物理。实现很简单,但其背后的数学让我感到困惑。我在概念层面上了解导数和积分,但已经
这个公式主要是这个线程的结果:Differential Equations in Java . 基本上,我尝试遵循 Jason S. 的建议,并通过 Runge-Kutta 方法 (RK4) 实现微分
我是Python的新手,我对编程语言的了解还处于起步阶段,所以我复制了所示的Runge-Kutta Python脚本here并根据我的目的对其进行了修改。这是我当前的脚本: import numpy
我一直在将 4 个链接微分方程的欧拉方法实现转换为四阶龙格库塔实现。我相当确信我的一般方法是正确的,并且我已经了解如何应用 RK4,但我可能已经有 6 年没有做过任何半严肃的数学了,所以我可能会错过某
我尝试求解简单的数值方程 - 没有源的线性波动方程:utt = v2 uxx 其中 v - 波速。 我使用初始条件: u(x, 0) = sin(x) ux(x, 0) = -v * sin(x) 对
我是一名优秀的程序员,十分优秀!