5 `+ `/ G# D' f; v: I13.定义了符号微分方程 eq,并指定了初始条件 y(1)=2。 ! b* g3 O" u: n3 t: @14.使用 dsolve 函数对微分方程进行解析求解,得到了解析解 f。 ! t; L7 c9 E$ ?. X( r P4 j8 {! \$ A3 C- N
9 J& l7 n3 \/ m) ]/ J/ t
15.代入值并求解: ' e/ h2 V: t: E$ l2 u ! c. d. J g1 j, y x2 = np.linspace(1,10,100) ; T; |' z8 m0 _; o y2 = [] 7 {# E1 m- D+ l- b9 t1 ^. [ for each in x2: ! K; n5 b$ j+ [. ]* @ y2.append(list(sorted(f.subs(x,each).evalf().atoms()))[1])( t6 n% ? E& w/ O% x. u
. N- E$ ~* M$ ]/ ]1 D$ i- Z
; V# a$ n: b3 t9 X1 P
16.创建了一个更密集的自变量范围 x2,用于绘制解析解的曲线。 ( e" A5 U6 {' y# u5 o/ v- ~17.遍历 x2 中的每个值,将其代入解析解中,并将结果存储在 y2 中。7 B! k3 q* I6 F8 S
g" u! Y* r+ K, R2 T: B' K& ]: c0 F% ?3 W, I
18.绘制图形:" ?! d' y: j S* T/ b3 M9 L: z
# @/ S" Y/ P# G4 y6 T plt.scatter(x1,y1, label='x1', color='coral')7 ^1 F. g1 ]8 H" E
plt.plot(x2,y2, label='x2') 5 ]. W& W. u& A9 N% ~/ t plt.legend()0 U+ w n8 e+ E/ n$ ^# A' f5 Y
# L0 P8 g5 W$ U r# W
, y; j6 o M6 H( _1 o. |$ e19.使用 Matplotlib 绘制了数值解和解析解的图形。) I9 V2 E# R% v m# [/ @+ S
20.使用 plt.scatter 绘制了数值解的离散点,并用 coral 颜色表示。+ W" _9 V" j: Z& V* q
21.使用 plt.plot 绘制了解析解的连续曲线。 5 |8 Z+ ]5 X3 C22.添加了图例。! [1 B* c' g+ v9 @; t* p3 X
& @- i% V( e, D4 l% N0 i
这样,整个代码就完成了对微分方程的数值和解析解求解,并将结果可视化的过程。/ d' z; d! T8 T
( M p& B9 e# O