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

您所在的位置:网站首页 如何创建函数function matlab怎样建立一个函数,如何在matlab中创建一个函数数组?

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

2023-06-29 03:46| 来源: 网络整理| 查看: 265

我试图通过使用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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3