#範例10-1:使用sympy把多項式轉成泰勒級數 #多項式函數f(x) = x**3 + x**2 + x* +1 #以1為參考點(x-1),轉成泰勒級數 from sympy import * from sympy.interactive import printing printing.init_printing(use_latex=True) x = symbols('x') f = Function('f')(x) f = x**3 + x**2 + x +1 #轉換成級數series #(1).第一種語法:expr.series(x=None, x0=0, n=6, dir='+') #(2).第二種語法:series(expr, x=None, x0=0, n=6, dir='+') #缺點,會產生O項目,還要就經過.removeO(),較麻煩 #(1).第一種語法:expr.series(x=None, x0=0, n=6, dir='+') tysr = f.series( x, x0=1, n=3) display(tysr) #把O項刪除 tysr = f.series(x, x0=1, n=3).removeO() display(tysr) #最高次方的係數為O, 故修改n3 = 4 tysr =f.series(x, x0=1, n=4).removeO() display(tysr) #(2).第二種語法:series(expr, x=None, x0=0, n=6, dir='+') tysr =series(f, x, x0=1, n=4) display(tysr) #缺點:但是6x沒有轉換成(x-1)的格式 #(3).f(0.02)的估計值1.02,請算精確值 valueoftysr = tysr.subs(x,0.02) valueoff = f.subs(x, 0.02) print('泰勒級數在x=0.02的計算結果=',valueoftysr) print('f(x)在x=0.02的計算結果=',valueoff) print('用泰勒級數一次項的大概估計值=',1.02) #畫出兩條圖 p1 = plot(f,tysr,(x,-10,10)) p1[0].line_color = 'red' p1[1].line_color = 'blue' p1[0].label = '$f(x)$' p1[1].label = '$taylor series$' p1.legend = True p1.show()