mathematica中数值求解常微分方程并画图
时间: 2023-06-30 12:22:43 浏览: 220
常微分方程matlab求解
在Mathematica中,可以使用NDSolve函数数值求解常微分方程,并使用Plot函数画出解析式或数值解的图像。
例如,考虑求解如下的常微分方程组:
y''[x]+2y'[x]+y[x]==Sin[x], y[0]==1, y'[0]==0
可以使用以下代码进行求解和画图:
```
sol = NDSolve[{y''[x] + 2 y'[x] + y[x] == Sin[x], y[0] == 1, y'[0] == 0}, y, {x, 0, 10}]
Plot[Evaluate[y[x] /. sol], {x, 0, 10}]
```
其中,NDSolve函数中的第一个参数为微分方程组,第二个参数为解的函数,第三个参数为求解区间。由于该微分方程为二阶微分方程,因此解的函数y是一个带有两个参数的函数y[x]。在画图时,需要使用Evaluate函数将解析式或数值解的值插入到Plot函数中。
执行以上代码,可以得到如下的数值解和图像:
```
{{y -> InterpolatingFunction[{{0., 10.}}, <>]}}
```
![image.png](attachment:image.png)
其中,InterpolatingFunction是Mathematica中的插值函数对象,表示数值解。可以通过sol[[1,1]]或y[x]/.sol[[1]]来获取数值解的函数。
此外,还可以使用ParametricPlot函数画出相图或轨迹图。例如,考虑如下的二阶常微分方程:
x''[t] + x[t] == 0, x[0] == 1, x'[0] == 0
可以使用以下代码进行求解和画图:
```
sol = NDSolve[{x''[t] + x[t] == 0, x[0] == 1, x'[0] == 0}, x, {t, 0, 10}]
ParametricPlot[Evaluate[{x[t], x'[t]} /. sol], {t, 0, 10}]
```
其中,求解和画图的方法与上例相同。执行以上代码,可以得到如下的相图或轨迹图:
```
{{x -> InterpolatingFunction[{{0., 10.}}, <>]}}
```
![image-2.png](attachment:image-2.png)
可以看到,轨迹是一个圆形。
阅读全文