以𝑑𝑦/𝑑𝑡=(𝑎+𝜔cos(𝜋𝑡/2) ), 𝑡∈[0, 10], 𝑎=1,𝜔=𝜋/2为例写一段用tensorflow求解该微分方程的代码
时间: 2024-05-24 08:10:33 浏览: 78
微分方程求解
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# 定义微分方程
def dydt(y, t, a, w):
return a * w * tf.cos(tf.constant(np.pi * t / 2))
# 初始化参数
a = 1
w = np.pi/2
t0 = 0
t1 = 10
y0 = 0
# 定义时间序列
t = np.linspace(t0, t1, 1000)
# 使用Euler方法求解微分方程
dt = t[1] - t[0]
y = np.zeros_like(t)
y[0] = y0
for i in range(1, len(t)):
y[i] = y[i-1] + dt * dydt(y[i-1], t[i-1], a, w)
# 使用TensorFlow求解微分方程
y_tf = tf.Variable([y0], dtype=tf.float64)
for i in range(1, len(t)):
y_tf = y_tf + dt * dydt(y_tf, tf.constant(t[i-1], dtype=tf.float64), a, w)
# 绘制结果
plt.plot(t, y, label='Euler')
plt.plot(t, y_tf.numpy(), label='TensorFlow')
plt.legend()
plt.show()
阅读全文