總網頁瀏覽量

2020年6月29日 星期一

很有陷阱的一題













Python Code:

A=[-1,0,1]
flag=0
value=[]
for a0 in A:
    for a1 in A:
        for a2 in A:
            for a3 in A:
                for a4 in A:
                    for a5 in A:
                        s=a0+3*a1+9*a2+27*a3+81*a4+242*a5
                        if s>0:
                            flag+=1
                            value.append(s)
                            if s==121:
                                print(s,"  ",a0,a1,a2,a3,a4,a5)

答案:
共有364個,但其中有二個值是重覆的121
(a0,a1,a2,a3,a4,a5)=(-1,-1,-1,-1,-1,1)、(1,1,1,1,1,0)
所以應該算363個






2020年6月5日 星期五

利用函數庫的指令找標準差、相關係數與畫迴歸直線


@簡單幾個指令就好,可用於陽春的標準差、相關係數與迴歸直線編碼完後講解

import numpy as np
import matplotlib.pyplot as plt
print("請輸入X值,以空格隔開:")
x = [int(a) for a in input().split()]
print("請輸入Y值,以空格隔開:")
y = [int(b) for b in input().split()]
#找標準差
print("X的標準差:",np.std(x))
print("Y的標準差:",np.std(y))
#找相關係數,會形成2x2的矩陣,對角線元素即相關係數
print("X,Y之相關係數:",np.corrcoef(x,y)[0][1])
#找迴歸直線方程式,m為斜率,c為y截距
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, y, rcond=None)[0]
print("Y對X之迴歸直線方程式:","y=",m,"x+",c)
#畫出XY之對應點
plt.scatter(x,y,label="$Data$",color="blue",linewidth=2)
#取斜率m及y截距之近似值,否則m是一個超小的浮點數,不能畫
m=round(m,5)
c=round(c,5)
#欲畫出迴歸直線,取x最小的值再減1,取x最大的值再加1
MM=max(x)+1
mm=min(x)-1
#直線找二點即可
xx = np.linspace(mm,MM,2) 
#畫迴歸直線,r為紅色線
plt.plot(xx,m*xx+c,'r',label="$Regression-Line$",color="red",linewidth=2)
plt.legend()
plt.show()






















最陽春的標準差、相關係數、迴歸直線方程式


@完全沒用到函數庫,可以用來選修課教學生,可幫學生了解公式:

print("請輸入X值,以空格隔開:")
x = [int(a) for a in input().split()]
print("請輸入Y值,以空格隔開:")
y = [int(b) for b in input().split()]

def Sum(x): #陣列各項數字和
    s=0
    for i in range(len(x)):
        s+=x[i]
    return s

def Average(x):#陣列平均
    return Sum(x)/len(x)

def Variance(x):#陣列變異數
    var=0
    for i in range(len(x)):#
        var+=((x[i]-Average(x))**2)/len(x)
    return var

def Std(x):#陣列標準差
   return Variance(x)**0.5

def Cov(x,y):#二陣列的共變異數
    s=0
    for i in range(len(x)):
        s+=(x[i]-Average(x))*(y[i]-Average(y))
    return s/len(x)

def Corr(x,y):#二陣列的相關係數
    return Cov(x,y)/Std(x)/Std(y)

def Slope(x,y):#迴歸直線的斜率
    return Corr(x,y)*Std(y)/Std(x)

#迴歸直線方程式
print("y=",Slope(x,y),"x",Average(y)-Slope(x,y)*Average(x))