matlab:使用4阶龙格库塔方法求微分方程组的值

参考书目:《数值分析(matlab版)》  作者:周璐 翻译

%调用龙格库塔方法求解微分方程组,P399,9.7 微分方程组
function [t,z] = my_rk4b(f, t0, tf , Za, h)
%f-函数; t0,tf:区间; Za,初值,是行向量;h 步长
%输出的z为一个矩阵,行数为离散点的个数+1,列表示向量

M = floor((tf - t0)/h);     % 离散点的个数
t = zeros(M +1, 1);
z = zeros(M +1, size(Za,2));        %size(Za,1)表示变量个数,每一列是个变量

t = [t0 : h :tf]';
z(1,:) = Za;
for i =1:M
    k1 = feval(f, t(i), z(i,:));
    k2 = feval(f, t(i)+h/2, z(i,:)+h/2*k1);
    k3 = feval(f, t(i)+h/2, z(i,:)+h/2*k2);
    k4 = feval(f, t(i)+h, z(i,:)+h*k3);
    z(i+1,:) = z(i,:)+ h/6*( k1 + 2* k2 + 2* k3 + k4 );
end
function s = myfun_b(t,z)
%z是个向量,1*2
%输出s也是向量,1*2
     s1 = z(1,1) + 2*z(1,2);
     s2 = 3*z(1,1) + 2*z(1,2);
  s = [s1 s2];
 end
clear all;clc
%调用龙格库塔方法求
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值