1. python中如何使用指數
exp()方法:
exp(x)方法返回x的指數,e^x。
如x=1,那麼e的1次冪為2.7183…
語法:
注意:exp()是不能直接訪問的,需要導入math模塊,通過靜態對象調用該方法。
實例:
運行結果:
python學習網,免費的在線學習python平台,歡迎關注!
2. 使用python實現ema(指數移動平均的計算)
a=2/13
Prices=[0.0]#pricesofeveryday
EMAs=[0.0]#emsofeveryday
defema(N,Price):
Prices.append(Price)
ifN<=1:
EMAs.append(Price)
else:
EMAs.append((1-a)*EMAs[N-1]+a*Price)
ema(1,1)
ema(2,3)
print(EMAs[1])
print(EMAs[2])
3. 怎麼用python寫出四個數的求和還有他們的平均值
如下:
s = [1, 2, 3, 4]
print(sum(s), sum(s)/len(s)) # 10 2.5
在 Python 標准庫中,有專門的數學統計函數,就在 statistics 模塊裡面。該模塊提供了用於計算數字 (Real-valued) 數據的數理統計量的函數。
此模塊並不是諸如 NumPy , SciPy 等第三方庫或者諸如 Minitab , SAS , Matlab 等針對專業統計學家的專有全功能統計軟體包的競品。此模塊針對圖形和科學計算器的水平。
當然,除了專業的第三方庫和 Python 標准庫,按照我們中小學時學的知識,加上 Python 的運算符知識也能使用 Python 寫出求和和平均值。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum於1990 年代初設計,作為一門叫做ABC語言的替代品。
Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。
Python 也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。
2021年10月,語言流行指數的編譯器Tiobe將Python加冕為最受歡迎的編程語言,20年來首次將其置於Java、C和JavaScript之上。
4. python怎麼表示指數
其中有兩個非常漂亮的指數函數圖就是用python的matplotlib畫出來的。這一期,我們將要介紹如何利用python繪制出如下指數函數。
圖 1 a>1圖 1 a>1
我們知道當0 ,指數函數 是單調遞減的,當a>1 時,指數函數是單調遞增的。所以我們首先要定義出指數函數,將a值做不同初始化
import math
...
def exponential_func(x, a): #定義指數函數
y=math.pow(a, x)
return y
然後,利用numpy構造出自變數,利用上面定義的指數函數來計算出因變數
X=np.linspace(-4, 4, 40) #構造自變數組
Y=[exponential_func(x) for x in X] #求函數值
有了自變數和因變數的一些散點,那麼就可以模擬我們平時畫函數操作——描點繪圖,利用下面代碼就可以實現
import math
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist #導入坐標軸加工模塊
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig=plt.figure(figsize=(6,4)) #新建畫布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法創建一個繪圖區對象ax
fig.add_axes(ax) #將繪圖區對象添加到畫布中
def exponential_func(x, a=2): #定義指數函數
y=math.pow(a, x)
return y
X=np.linspace(-4, 4, 40) #構造自變數組
Y=[exponential_func(x) for x in X] #求函數值
ax.plot(X, Y) #繪制指數函數
plt.show()
圖 2 a=2
圖2雖簡單,但麻雀雖小五臟俱全,指數函數該有都有,接下來是如何讓其看起來像我們在作圖紙上面畫的那麼美觀,這里重點介紹axisartist 坐標軸加工類,在的時候我們已經用過了,這里就不再多說了。我們只需要在上面代碼後面加上一些代碼來將坐標軸好好打扮一番。
圖 3 a>1 完整代碼# -*- coding: utf-8 -*-圖 3 a>1 完整代碼# -*- coding: utf-8 -*-"""Created on Sun Feb 16 10:19:23 2020project name:@author: 帥帥de三叔"""import mathimport numpy as npimport matplotlib.pyplot as pltimport mp
5. 指數平滑方法簡介
指數平滑(Exponential smoothing)是除了 ARIMA 之外的另一種被廣泛使用的時間序列預測方法(關於 ARIMA,請參考 時間序列模型簡介 )。 指數平滑即指數移動平均(exponential moving average),是以指數式遞減加權的移動平均。各數值的權重隨時間指數式遞減,越近期的數據權重越高。常用的指數平滑方法有一次指數平滑、二次指數平滑和三次指數平滑。
一次指數平滑又叫簡單指數平滑(simple exponential smoothing, SES),適合用來預測沒有明顯趨勢和季節性的時間序列。其預測結果是一條水平的直線。模型形如:
其中 是真實值, 為預測值, 為平滑值, 。
定義殘差 ,其中 ,則可以通過優化方法得到 和 。
使用 python 的 statsmodels 可以方便地應用該模型:
效果如圖:
Holt 擴展了簡單指數平滑,使其可以用來預測帶有趨勢的時間序列。直觀地看,就是對平滑值的一階差分(可以理解為斜率)也作一次平滑。模型的預測結果是一條斜率不為0的直線。模型形如:
其中 , 。
效果如圖:
Holt's linear trend method 得到的預測結果是一條直線,即認為未來的趨勢是固定的。對於短期有趨勢、長期趨於穩定的序列,可以引入一個阻尼系數 ,將模型改寫為
為了描述時間序列的季節性,Holt 和 Winters 進一步擴展了 Holt's linear trend method,得到了三次指數平滑模型,也就是通常說的 Holt-Winters』 模型。我們用 表示「季節」的周期。根據季節部分和非季節部分的組合方式不同,Holt-Winters』 又可以分為加法模型和乘法模型。
加法模型形如:
其中 , , 。 是 的整數部分。
效果如圖:
乘法模型形如:
效果如圖:
Holt-Winters』 模型的趨勢部分同樣可以引入阻尼系數 ,這里不再贅述。
參數優化的方法是最小化誤差平方和或最大化似然函數。模型選擇可以根據信息量准則,常用的有 AIC 和 BIC等。
AIC 即 Akaike information criterion, 定義為
其中 是似然函數, 是參數數量。用 AIC 選擇模型時要求似然函數大,同時對參數數量作了懲罰,在似然函數相近的情況下選擇復雜度低的模型。
BIC 即 Bayesian information criterion,定義為
其中 是樣本數量。當 時, ,因此當樣本量較大時 BIC 對模型復雜度的懲罰比 AIC 更嚴厲。
線性的指數平滑方法可以看作是 ARIMA 的特例。例如簡單指數平滑等價於 ARIMA(0, 1, 1),Holt's linear trend method 等價於 ARIMA(0, 2, 2),而 Damped trend methods 等價於 ARIMA(1, 1, 2) 等。
我們不妨來驗證一下。
可以改寫為
亦即
兩邊同時加上 ,得
而 ARIMA(p, d, q) 可以表示為
其中 是滯後運算元(Lag operator), 。
考慮 ARIMA(0, 1, 1)
即
亦即
令 ,則兩者等價。
非線性的指數平滑方法則沒有對應的 ARIMA 表示。
[1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2014.
[2] Exponential smoothing - Wikipedia https://en.wikipedia.org/wiki/Exponential_smoothing
[3] Introction to ARIMA models - Duke https://people.ke.e/~rnau/411arim.htm
6. python簡單題不會,求解答
#第一題:
from__future__importdivision
print'請依次輸入體重(kg)與身高(m):'
weight=float(raw_input())
height=float(raw_input())
print"{:.2f}".format(weight/(height**2))
#第二題:
print'請輸入一個秒數:'
sec=int(raw_input())
printstr(sec/3600)+''+str(sec%3600/60)+''+str(sec%60)
#第三題:
from__future__importdivision
importmath
print'請依次輸入三角形三邊值a,b,c:'
a=int(raw_input())
b=int(raw_input())
c=int(raw_input())
print"{:.1f}".format(math.degrees(math.acos((a**2+b**2-c**2)/(2*a*b))))
你復制的問題還復制不全,汗啊。。。這么多問題連個分也沒有。。。人家計算BMI是用的平方,你這里還給了個錯的公式,還能不能認真點兒。