经典四阶龙格-库塔方法的 MATLAB 实现

经典四阶龙格-库塔方法(Runge-Kutta Method)的 MATLAB 实现

经典四阶龙格-库塔方法是一种求解常微分方程的数值解法,具有较高的精度和稳定性。以下是一个基于 MATLAB 的四阶龙格-库塔方法的实现示例。

1. 算法原理

对于常微分方程:

四阶龙格-库塔方法通过以下步骤计算 ( y ) 在 ( t ) 的下一个值:

2. MATLAB 实现

function [t, y] = runge_kutta_4th_order(ode_func, t0, y0, tf, h)
    % 输入:
    %   ode_func - 常微分方程的函数句柄
    %   t0 - 初始时间
    %   y0 - 初始条件
    %   tf - 终止时间
    %   h - 步长
    % 输出:
    %   t - 时间向量
    %   y - 解向量

    t = t0;
    y = y0;
    t_values = [t0];
    y_values = [y0];

    while t < tf
        k1 = h * ode_func(t, y);
        k2 = h * ode_func(t + h/2, y + k1/2);
        k3 = h * ode_func(t + h/2, y + k2/2);
        k4 = h * ode_func(t + h, y + k3);

        y = y + (1/6) * (k1 + 2*k2 + 2*k3 + k4);
        t = t + h;

        t_values = [t_values, t];
        y_values = [y_values, y];
    end

    t = t_values;
    y = y_values;
end

3. 使用示例

假设我们有一个常微分方程:

初始条件为 ( y(0) = 1 ),我们希望在 ( t = 2 ) 时得到解,步长为 0.1。

% 定义常微分方程
ode_func = @(t, y) -2*y + 4*exp(-t);

% 初始条件
t0 = 0;
y0 = 1;
tf = 2;
h = 0.1;

% 调用四阶龙格-库塔方法
[t, y] = runge_kutta_4th_order(ode_func, t0, y0, tf, h);

% 绘制结果
figure;
plot(t, y, 'b-');
xlabel('Time');
ylabel('Solution y(t)');
title('Solution of ODE using 4th Order Runge-Kutta Method');

参考代码 根据经典四阶龙格库塔算法方程公式编写的龙格库塔程序 www.youwenfan.com/contentcso/97865.html

总结

MATLAB 代码实现了经典四阶龙格-库塔方法,可以用于求解各种常微分方程。通过调整步长和初始条件,可以得到不同精度的数值解。

 

专注于matlab/simulink,电子电路,编程