2 t6 N2 [8 E2 f3 _1.导入模块: 9 l k1 R, I9 I a1 Q9 p2 r/ z& p2 c
import numpy as np8 W6 P. G! @9 m v- Y7 {
import pandas as pd3 t/ s' a+ d! O5 k* a& ~
from scipy.optimize import curve_fit! `+ P0 }) B7 l6 v
" U+ A- Y$ ~- M) e. a% ?* C
. T. p0 g2 J5 f# h L2.导入了 NumPy、Pandas 和 SciPy 中的 curve_fit 函数。7 c( s, d/ @+ I% K+ N4 @% L$ k& y
5 V, j. [" E% Z5 s
- T# L1 j! x; j1 b: i! m
3.准备数据: ' F' q/ Q4 g- d' Z( U; j" ^- S 6 G' t7 [; o2 |+ F6 n df = pd.DataFrame({ 9 v$ U& F6 e+ r; _ 'year': [1790, 1800, 1810, 1820, 1830, 1840, 1850, 1860, 1870], 2 K' m9 }' j8 C f% F 'population': [3.9, 5.3, 7.2, 9.6, 12.9, 17.1, 23.2, 31.4, 38.6], 3 e( s& F, @& R })% `1 z3 O% V: ?
x0 = float(df['population'][0])9 s# F8 P7 y( [9 w$ L7 _
t0 = float(df['year'][0])# R+ b) m- g+ i7 v2 K7 d4 ] j
1 S" w3 l) n& ~* H: j9 d9 w % y, Y/ l8 ?4 i) P4.创建了一个 Pandas DataFrame 来存储年份和人口数据。' @3 R, I: T5 o; S, y' V6 ?- Y. D
5.提取了初始年份和初始人口数。 ) U) `5 A, q6 {2 N6 [5 d! O6 W; X ( Z+ i% r+ F( {4 y' | 6 g6 {; k2 P1 e9 y4 s6 c! b0 K4 L6.定义 Logistic 模型函数: % P/ s( S" \/ K6 t$ \ , H0 |- g+ p9 G5 _' a; G- @! W; h def x(t, r, xm):% j; K5 [5 \ H6 R( n# I
return xm / (1 + (xm/x0-1)*np.exp(-r*(t-t0)))# M% D' t$ G% I
' n* M2 ~4 l& U9 a n
+ p" Y5 J* l6 k
7.定义了 Logistic 函数,该函数接受时间 t、增长率 r 和最大人口数 xm 作为参数,并返回人口数。, k% N- E; Q! F. \
& \: R$ b! P7 F/ `4 S
4 J( m- r, _; ]) O+ w
8.拟合参数:6 V5 `& e) b0 m/ d$ y