8 b8 ]- J1 C4 ^% |- v12.使用 SymPy 进行解析解: 6 s; X7 K/ v' O! \- J& p 9 u9 |- ~3 l/ w. J3 F& k eq = y(x).diff(x) + 2*y(x) - x**2 - 2*x/ \5 f& V" P/ d2 d5 \$ R
con = {y(1): 2} 3 q. m m8 m% c' l! o4 m3 ^ f = simplify(dsolve(eq, ics=con)) % L' I5 F' Q2 m # D& M* |+ ?; y 5 d* t2 m! J) s! D) |' X! r13.定义了符号微分方程 eq,并指定了初始条件 y(1)=2。 - m/ B, b; L' z& u8 ^14.使用 dsolve 函数对微分方程进行解析求解,得到了解析解 f。6 Y2 ]! Z2 U. R
: I; N' Z E& h0 h2 F: E6 ^- H4 b q+ Z
15.代入值并求解: * `2 v" e1 Q' v2 I: J) X2 ^) U3 c7 ?$ S
x2 = np.linspace(1,10,100)0 ?3 c# Z) p M; x
y2 = [] 9 ^ K; J! D- d$ [$ S! K for each in x2:* x3 `) r* I5 A! {1 p4 f5 w( V) _
y2.append(list(sorted(f.subs(x,each).evalf().atoms()))[1])" d7 c7 W6 b6 S0 ?5 y9 z3 g
6 P4 G6 m( y8 O; Y * E" v. g4 ]8 X16.创建了一个更密集的自变量范围 x2,用于绘制解析解的曲线。 9 I) u( v I* ]' D$ i17.遍历 x2 中的每个值,将其代入解析解中,并将结果存储在 y2 中。 # |0 t& D1 O- m e; I+ o % A' f, K* ^7 y2 g. e b3 i; |# U, l0 f1 E
18.绘制图形:! Y! Y: z5 ^3 d( V, P
( ~* A- r% D! p6 s3 Y plt.scatter(x1,y1, label='x1', color='coral')7 k$ L T0 e+ W
plt.plot(x2,y2, label='x2') / p3 |: B( K9 Z4 S7 A plt.legend() 8 l( t: ]5 v) H) v0 u: {) f0 m+ f+ j& l- Q6 s$ G! i