用神经网络求解常微分方程组的python代码
时间: 2023-12-19 12:05:27 浏览: 128
以下是一个简单的用神经网络求解常微分方程组的 Python 代码:
```python
import numpy as np
from scipy.integrate import odeint
import keras
from keras.layers import Input, Dense, Concatenate
from keras.models import Model
# 定义常微分方程组
def f(y, t):
y1, y2 = y
dydt = [y2, -y1]
return dydt
# 求解常微分方程组
t = np.linspace(0, 10, 101)
y0 = [1, 0]
y = odeint(f, y0, t)
# 构建神经网络模型
input_layer = Input(shape=(1,))
hidden_layer = Dense(10, activation='tanh')(input_layer)
output_layer = Dense(2)(hidden_layer)
model = Model(inputs=input_layer, outputs=output_layer)
# 编译神经网络模型
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练神经网络模型
model.fit(t, y, epochs=1000, batch_size=10)
# 使用神经网络模型预测常微分方程组的解
y_pred = model.predict(t)
# 绘制常微分方程组的解和神经网络模型预测的解
import matplotlib.pyplot as plt
plt.plot(t, y[:,0], 'b-', label='y(t)')
plt.plot(t, y_pred[:,0], 'r--', label='y_pred(t)')
plt.xlabel('t')
plt.ylabel('y')
plt.legend()
plt.show()
```
在这个例子中,我们首先定义了一个简单的常微分方程组 `f(y, t)`,然后使用 `odeint` 函数求解这个方程组,并将求解结果作为神经网络的训练数据。接着,我们构建了一个具有一个隐藏层的神经网络模型,并使用 `mean_squared_error` 损失函数和 `adam` 优化器编译模型。最后,我们使用 `fit` 方法训练了模型,并使用 `predict` 方法预测了常微分方程组的解。最终,我们绘制了常微分方程组的解和神经网络模型预测的解。
阅读全文