Wolfram mathematica 在mathematica中的用户定义函数中使用NDSolve

Wolfram mathematica 在mathematica中的用户定义函数中使用NDSolve,wolfram-mathematica,Wolfram Mathematica,我一直在尝试在Mathematica中求解类似的耦合微分方程。到目前为止,我已经能够在定义的函数之外完成这项工作,并且能够使用数据进行分析。但对于使用内部循环,我需要在函数内部数值求解耦合微分方程。每一行都需要一个分号来终止。此外,模块中的最后一项也会自动“返回”,您不需要返回。(Return在mathematica中很少使用)并在NDSolve[{Y'[t]==aY[t]+bX[t],X'[t]==cY[t]+aX[t],Y[t1]==y1i,X[t1]==y2i}中使用==而不是=,并删除最

我一直在尝试在Mathematica中求解类似的耦合微分方程。到目前为止,我已经能够在定义的函数之外完成这项工作,并且能够使用数据进行分析。但对于使用内部循环,我需要在函数内部数值求解耦合微分方程。

每一行都需要一个分号来终止。此外,模块中的最后一项也会自动“返回”,您不需要
返回
。(
Return
在mathematica中很少使用)并在NDSolve[{Y'[t]==aY[t]+bX[t],X'[t]==cY[t]+aX[t],Y[t1]==y1i,X[t1]==y2i}中使用==而不是=,并删除最后一行末尾的`并从agentp中进行更改,这样您的代码似乎运行良好。
 fun[y1_, y2_, ti_, w_] := 
 Module[{y1i = y1, y2i = y2, tj = ti, wi = w}, a = 0.5; b = 0.8; 
 c = 1.5;
 t1 = tj; t2 = tj + wi;
 Ans = Y /. 
 First@NDSolve[{Y'[t] = a*Y[t] + b*X[t], X'[t] = c*Y[t] + a*X[t], 
    Y[t1] = y1i, X[t1] = y2i}, {Y, X}, {t, t1, t2} ];
 Data = Table[{t, Ans[t]}, {t, t1, t2, 10^-6}]; 
 Export["Data.xls", Data, "XLS"]
 ya = Ans["ValuesOnGrid"]
 Return[Last[ya]];];
 fun[1, 0, 0, 1]`