math - 用 Mathematica 求解矩阵微分方程

标签 math wolfram-mathematica

我需要在 Mathematica 中求解这个方程:

d/dx v(x) = A . v(x)

这里v列向量 {v1(x),v2(x),v3(x),v4(x)}A 是一个4 x 4 矩阵。 我想求解具有任何初始条件的函数 v1、v2、v3、v4。 x 的取值范围为 0 到 1000。

如何使用 NDSolve 为此类微分方程编写 Mathematica 代码?

最佳答案

所以,如果你有一些可怕的矩阵

A =  RandomReal[0.1, {4, 4}]; (* A horrible matrix *)

我们将其设为反对称(因此解是振荡的)

A = A - Transpose@A;

定义函数向量及其初始条件

v[x_] := {v1[x], v2[x], v3[x], v4[x]};

init = v[0] == RandomReal[1, 4]

然后 NDSolve 命令看起来像

sol = NDSolve[LogicalExpand[v'[x] == A.v[x] && init], 
        {v1, v2, v3, v4}, {x, 0, 1000}]

解决方案可以用

Plot[Evaluate[v[x] /. sol], {x, 0, 1000}]

da plot


请注意,上述微分方程是线性的、具有常系数的一阶方程,因此可以使用矩阵指数简单地求解。 但是,如果矩阵 Ax 的函数,则解析解变得困难,但数值代码保持不变。

例如,尝试:

A = RandomReal[1/10, {4, 4}] - Exp[-RandomReal[1/100, {4, 4}] x^2];
A = A - Transpose@A;

可以生成如下的解决方案

more

关于math - 用 Mathematica 求解矩阵微分方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999504/

相关文章:

math - 一些数学和动画

javascript - 查找给定数字的最近平方数

math - Three.js 精准地形碰撞

java - 初学者遇到返回值问题 - JAVA

wolfram-mathematica - Mathematica - 分离笔记本

for-loop - 进行迭代计划的最佳方法

dictionary - Mathematica 中条件查询的映射选择

wolfram-mathematica - 在 Mathematica 中简化一个系列

javascript - 如何在外旋转矩形的边界内夹住一个矩形

cuda - Mathematica 和 CUDA