matlab怎样建立一个函数,如何在matlab中创建一个函数数组?

我试图通过使用RK2和RK4的方法来解决matlab中的Lorenz系统。我有一个脚本的两种方法,现在的问题是如何能够收敛到以下简单的列向量:如何在matlab中创建一个函数数组?

y(1) = @(t,y) 10*(y(2)-y(1));

y(2) = @(t,y) y(1)*(28-y(3))-y(2);

y(3) = @(t,y) y(1)*y(2)-8*y(3)/3;

只是一个列向量y。

这是我所期待的,它从来没有工作过:

y = zeros(3,1);

y(1) = @(t,y) 10*(y(2)-y(1));

y(2) = @(t,y) y(1)*(28-y(3))-y(2);

y(3) = @(t,y) y(1)*y(2)-8*y(3)/3;

和下面是我的RK2功能。我的RK4与这个RK2很相似,但这可以帮助你理解为什么我真的需要一个函数向量。

function y = RK2(fcn,lrange,urange,step,init)

%fcn = vector of functions

%lrange = lower bound

%urange = upper bound

%step = number of steps

%init = initial value

row = size(fcn,1);

stepsize = (urange-lrange)/step;

y = zeros(row,step);

%initializing vector of y

y(:,1) = init;

%initial condition

t = zeros(1,step+1);

%initializing vector of t

if row ~= size(init,1)

disp('number of functions and number of initial values do not match');

end

for n = 1:step

t(n) = (n-1)*stepsize;

t(step+1) = urange;

y1 = stepsize.*fcn(t(n),y(:,n));

y2 = stepsize.*fcn(t(n) + stepsize/2, y(:,n) + y1./2);

y(:,n+1) = y(:,n) + y2;

end

感谢亚勒这么多!!!!!!!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值