Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 具有时间和空间相关参数的ODE解算器_Matlab_Ode - Fatal编程技术网

Matlab 具有时间和空间相关参数的ODE解算器

Matlab 具有时间和空间相关参数的ODE解算器,matlab,ode,Matlab,Ode,我想写一个快速的matlab代码来解决一个ODE系统,其中的参数是空间和时间相关的。有什么方法来解决它矢量?以下是守则的一部分: function dM=testfun(T,M,B1) Mx=M(1); My=M(2); Mz=M(3); dM=[My*B1(3)-Mz*B1(2);Mz*B1(1)-Mx*B1(3);Mx*B1(2)-My*B1(1)]+... [-Mx/T2;-My/T2;(1-Mz)/T1]; here B1 is space-time d

我想写一个快速的matlab代码来解决一个ODE系统,其中的参数是空间和时间相关的。有什么方法来解决它矢量?以下是守则的一部分:

 function dM=testfun(T,M,B1)

   Mx=M(1);
   My=M(2);
  Mz=M(3);


dM=[My*B1(3)-Mz*B1(2);Mz*B1(1)-Mx*B1(3);Mx*B1(2)-My*B1(1)]+...
    [-Mx/T2;-My/T2;(1-Mz)/T1];

here B1 is space-time dependent variable 
主程序:

   clc;clear all;
   tmin=0;
   dt=rand(5,1);
   tsteps=10;
   B1x=rand(5,1);% time-dependent
   jx=length(x);
   z=-10:10;
   jz=length(z);
   M0=repmat([0; 0; 1],1,jz);
  for p=1:jz
       B1=[B1x;zeros(1,jx);10*z(jz)*ones(1,jx)]; % 3rd term is space dependent
     for pp=1:jx
       tspan=linspace(tmin,tmin+dt,tsteps);
  [t,M(:,:,pp,p)]=ode45 (@(t,M) testfun(t,M,B1(:,jj)),tspan,M0(:,p));
      tmin=tmin+dt;
    end
end
有没有办法将代码矢量化?有一个与时间相关的问题-matlab有一个内置函数interp1来处理与时间相关的ODE,但它需要太多的时间。检查这里 我的代码将在这个基本方程上进行开发,节省一些时间是很重要的。有什么出路吗?先谢谢你

代码的矢量化可以在下面的文章中找到

下面的帖子也很有帮助。

您能把我们引向任何涉及该主题的文章吗?还是说得更具体一点?@fpe我已经编辑了我的帖子,对这个问题给出了一个大致的想法。谢谢你的回复。