龙格-库塔4日订单的方法

3507(30天)
玛利亚姆Gasra
玛利亚姆Gasra 2019年5月5日
%计算使用龙格-库塔4顺序方法颂歌
%被罩作者施瓦茨
clc;%清除屏幕
清晰;
h = 5;%步长
x = 0: h: 100;%计算到y (3)
Y = 0(1、长度(x));
y (1) = (-0.5; 0.3; 0.2);
%初始条件
F_xy = @ (t, r) 3。* exp (- t) -0.4 * r;您想要的变化百分比的函数
i = 1:(长度(x) 1)%计算循环
k_1 = F_xy (x(我),(我));
k_2 = F_xy (x(我)+ 0.5 * h, y (i) + 0.5 * h * k_1);
k_3 = F_xy ((x(我)+ 0.5 * h), (y (i) + 0.5 * h * k_2));
k_4 = F_xy ((x(我)+ h) (y (i) + k_3 * h));
(i + 1) = y (i) + (1/6) * (k_1 + 2 * k_2 + 2 * k_3 + k_4) * h;%的主要方程
结束
显示器(Y (i + 1));
如果我运行这个项目我得到的答案= 0;
我怎样才能解决这个问题,如果我有三个初始条件-0.5,0.3和0.2吗
而x = 0:5:100
以及我如何绘制回答关于x ?

接受的答案

大卫·威尔逊
大卫·威尔逊 2019年5月6日
编辑:MathWorks支万博1manbetx持团队 2023年4月18日
首先,你需要一个更小的步长,得到一个精确的解决方案使用这个显式RK4(没有错误控制)。我建议h = 0.05。验证使用表示数值(的确有错误控制)。
然后你需要运行你的颂歌上面三个独立的时期,一旦从y(1) = -0.5,再次与y(1) = 0.3,等等。
最后绘制结果与情节(x, y,“啊——”)。
h = 0.05;%步长
x = 0: h: 100;%计算到y (3)
y = 0(1、长度(x));
% y (1) = (-0.5; 0.3; 0.2);
y (1) = -0.5;%与其他选择重做。
%初始条件
F_xy = @ (t, r) 3。* exp (- t) -0.4 * r;您想要的变化百分比的函数
i = 1:(长度(x) 1)%计算循环
k_1 = F_xy (x(我),(我));
k_2 = F_xy (x(我)+ 0.5 * h, y (i) + 0.5 * h * k_1);
k_3 = F_xy ((x(我)+ 0.5 * h), (y (i) + 0.5 * h * k_2));
k_4 = F_xy ((x(我)+ h) (y (i) + k_3 * h));
(i + 1) = y (i) + (1/6) * (k_1 + 2 * k_2 + 2 * k_3 + k_4) * h;%的主要方程
结束
%验证使用一个像样的颂歌集成器
tspan = [0100];y0 = y (1);
[tx, yx] =数值(F_xy tspan, y0);
情节(x, y,“啊——”tx yx,“——”)
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年11月14日
代码需要略微调整如果ode函数有多个状态(所以返回一个向量)。

登录置评。

更多的答案(7)

Sandip Das
Sandip Das 2021年7月28日
%发表在2021年7月25日
% Sandip Das
clc;
清晰的所有;
dydt =输入(“输入功能:\ n”);
t0 =输入(“输入t0的价值:\ n”);
y0 =输入(输入值的y0: \ n”);
tn =输入(的输入值t y的值,你想找到:\ n”);
h =输入(“输入步长:\ n”);
我= 0;
我< tn
k_1 = dydt (t0, y0);
k_2 = dydt (t0 + 0.5 * h, y0 + 0.5 * h * k_1);
k_3 = dydt ((t0 + 0.5 * h), (y0 + 0.5 * h * k_2));
k_4 = dydt (((t0) + h), (y0 + k_3 * h));
nexty = y0 + (1/6) * (k_1 + 2 * k_2 + 2 * k_3 + k_4) * h;
y0 = nexty
t0 = t0 + h
我=我+ h;
结束
流(在t = y的值% f % f 't0, y0);

马哈茂德·穆罕默德abd el就
函数(x, y) = rk4th (xo,就要xf,哟,h)
x = xo: h: xf;
y = 0(1、长度(x));
y(1) =哟;
i = 1:(长度(x) 1)
k_1 =就要(x (i), y(我));
k_2 =就要(x(我)+ 0.5 * h, y (i) + 0.5 * h * k_1);
k_3 =就要((x(我)+ 0.5 * h), (y (i) + 0.5 * h * k_2));
k_4 =就要((x(我)+ h) (y (i) + k_3 * h));
(i + 1) = y (i) + (1/6) * (k_1 + 2 * k_2 + 2 * k_3 + k_4) * h;
结束
就要= @ (x, y) 3。* exp (- x) -0.4 * y;
% (x, y) = rk4th(就要0100,-0.5,0.5);
%的阴谋(x, y,“啊——”);
结束
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年12月8日
y = 0(1、长度(x));
将发生变化以
y = 0(长度(x) (y0));
下面,每个y(指数)将被替换为y(指数:)

登录置评。


乔丹
乔丹 2020年11月7日
大家好!
我必须解决这个二阶微分方程通过使用matlab的龙格-库塔法:
谁能帮我个忙吗?和我怎么能画出图吗?(对e)
d2a /德= (((((2 + c2) * (Fu ^ 2)) / (1 + c2)) + 1) * (^ c2) - ((2 + c2/1 + c2) * (Fu ^ 2 / a))——^ (2 + (2 * c2))) / (((2 + c2) *傅^ 2)/ (1 + c2) * (3 + c2));
傅= 1
c2 = 0、0.5、1 (c2)有3个值
初始条件是:= 0.8,d_a =


大卫·威尔逊
大卫·威尔逊 2021年5月6日
哇,你还没有给我们太多,所以让一个真正的挑战。
首先,你的二阶颂歌是不必要的复杂,因为傅= 1,和c2 = 0。(我不确定其他valuesare什么,你解决这个3宽大*吗?(很好知道是这样)。
如果你有象征性的工具箱,它便于简化你的问题是可行的。首先,我要试着做。
信谊傅c2真正的
信谊(t)
f2 = (((((2 + c2) * (Fu ^ 2)) / (1 + c2)) + 1) * (^ c2) - ((2 + c2/1 + c2) * (Fu ^ 2 / a))——^ (2 + (2 * c2))) / (((2 + c2) *傅^ 2)/ (1 + c2) * (3 + c2));
f2_a =潜艇(f2,傅,1)
f2_a (t) =
f2_b =潜艇(f2_a c2, 0)%的潜艇c2 0
f2_b (t) =
Da = diff (a);
D2a = diff (2);
%现在试图解决分析
dsolve (D2a = = f2_b (0) = = 0.8, Da (0) = = 1)
警告:无法找到具有象征意义的解决方案。
ans =(空符号)
那没有工作,但没有真正的惊喜。
让我们尝试一个数值方法:
信谊傅c2真正的
信谊一个真正的
f2 = (((((2 + c2) * (Fu ^ 2)) / (1 + c2)) + 1) * (^ c2) - ((2 + c2/1 + c2) * (Fu ^ 2 / a))——^ (2 + (2 * c2))) / (((2 + c2) *傅^ 2)/ (1 + c2) * (3 + c2));
f2_a =潜艇(f2,傅,1);f2_b =潜艇(f2_a c2 0);漂亮的(f2_b)
2 1 1 - - - - - - - - - - - - - - 2 6 3
我们需要编码的系统2常微分方程。(转换为柯西形式)
aprime = @ (t)) ((2);
0.5 - (1)。^ 2/6 - 1. / ((1)* 3)]
现在我们已经准备好解决ODE。我将使用数值,t-span猜猜,猜一个初始条件,因为你忘记帮助我们。
aprime = @ (t)) ((2);
0.5 - (1)。^ 2/6 - 1. / ((1)* 3)]
a0 = (0.8;0]
[t] =数值([0,4],aprime a0)
情节(t)

Amr穆罕默德
Amr穆罕默德 2021年5月9日
这个问题我们如何编写代码:
2的评论
Amr穆罕默德
Amr穆罕默德 2021年6月8日
谢谢先生

登录置评。


Harshitha
Harshitha 约1小时前

%龙格-库塔方法% dy / dx = xy ^ (1/3), y (1) = 1, y (1.5) clc h = 0.1;f = @ x (x, y)。* y。^ (1/3) x = 1;%初始值x y = 1;%初始值y h = 0.1;%步长xn = 1.5, %的最终值x n = (xn-x / h;%的迭代次数为i = 1: n流(“交互图标数量= % f \ n”‚我)disp (xy) z = X y;disp (z) k1 = h * f (x, y) k2 = h * f (x + h / 2, y + k1/2) k3 = h * f (x + h / 2, y + k2/2) k4 = h * f (x + h, y + k3) y = y + (k1 + 2 * k2 + 2 * k3 + k4) / 6 x = x + h;结束2。解决dy = 3 x + y / 2, y(0) = 1博士通过龙格库塔方法•y (0.5) h = 0.1。显示输出为每个x的值高达0.5。 clc; f = @(x,y) 3.x + (y) / 2);x = 0;%初始值x y = 1;%初始值y h = 0.1;%步长xn = 0.5; %终值(n = (xn-x) / h;%的迭代次数为1 = 1:n流(“交互影响数字= % f \ n ", i) disp (y) z = [x yj disp (z) k1 = h * f (x, y) K2 = h * f (x + h / 2, y + k1/2) K3 = h * f (x + h / 2, y + k2/2) k4 = h * f (x + h, y + K3) y = y + (k1 + 2k2 + 2 * k3 + k4) / 6 x = x + h

如果真的%的代码
如果真的%的代码
1评论
为副总经理
为副总经理 11分钟前
无视随机胡说格式化,这甚至不是有效的代码。有开放的范围,无效字符,滥用或失踪运营商,和未定义的变量。
这不是一个答案,你也没有问一个可以回答的问题。你为什么把这?

登录置评。

类别

找到更多的在数学帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!