Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Wolfram mathematica 方程组的动态生成_Wolfram Mathematica_Ode - Fatal编程技术网

Wolfram mathematica 方程组的动态生成

Wolfram mathematica 方程组的动态生成,wolfram-mathematica,ode,Wolfram Mathematica,Ode,我是Mathematica的新手,正在尝试找出如何动态生成一个ODE系统。例如,我有一个由100个方程组成的系统,其中每10个方程基本相同,但参数略有不同,可以从一个向量(长度为10)中读取。我想写出10个方程,然后循环一些迭代器来生成所有100个方程。有没有标准的方法可以做到这一点 例如,这里有一个由30个方程组成的系统(对于1:10中的i): 如果我把I增加到100(也就是说,给我们三百个常微分方程),复制粘贴新方程似乎是多余的 就这样,但Mathematica可能无法解决它(取决于你的系数

我是Mathematica的新手,正在尝试找出如何动态生成一个ODE系统。例如,我有一个由100个方程组成的系统,其中每10个方程基本相同,但参数略有不同,可以从一个向量(长度为10)中读取。我想写出10个方程,然后循环一些迭代器来生成所有100个方程。有没有标准的方法可以做到这一点

例如,这里有一个由30个方程组成的系统(对于1:10中的i):


如果我把I增加到100(也就是说,给我们三百个常微分方程),复制粘贴新方程似乎是多余的

就这样,但Mathematica可能无法解决它(取决于你的系数)


你们有一个100个常微分方程的耦合系统,还是10组10个常微分方程。。。这是一个由100个常微分方程组成的耦合系统,但它们可以分为10组。为了给你更多的细节,他们代表了一个10隔间模型中的10个年龄层。这有意义吗?不,我不明白。其中有多少是耦合的?您在示例中是否使用Mathematica语法?尝试先做一个简单的DSolve…在这里发布mathematica代码。。。对我们来说容易多了。。。
 dX_i/dt = -\beta*X_i*Y_i + \delta_{i-1}*X_{i-1} - \delta_i*X_{i}
 dY_i/dt = \beta*X_i*Y_i - \gamma_i*Y_i + \delta_{i-1}*Y_{i-1} - \delta_i*Y_{i} 
 dZ_i/dt = \gamma_i*Y_i + \delta_{i-1}*Z_{i-1} - \delta_i*Z_{i} 
Table[(delta[i] = i; gamma[i] = -i), {i, 0, 10}];
b = 1;
DSolve[Flatten@Table[{
    x[i]'[t] == -b x[i][t] y[i][t] + delta[i - 1] x[i - 1][t] - delta[i] x[i][t],
    y[i]'[t] == -b x[i][t] y[i][t] - gamma[i] y[i][t] + delta[i - 1] y[i - 1][t] - delta[i] y[i][t],
    z[i]'[t] ==  gamma[i] y[i][t] + delta[i - 1] z[i - 1][t] - delta[i] z[i][t]}, {i, 1, 10}], 
 Flatten[Table[{x[i][t], y[i][t], z[i][t]}, {i, 1, 10}]], t]