#設計 Logo

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(5,5),dpi=80)

N=1001
a=-1
b=1
t=(b-a)/(N-1)

x = np.arange(a,b+t,t)
y = np.arange(a,b+t,t)
X1=[]
Y1=[]
X2=[]
Y2=[]

for i in range(0,N,1):
    for j in range(0,N,1):
        if abs(x[i]*x[i]+y[j]*y[j] -1.0) <= 0.01:
            X1.append(x[i])
            Y1.append(y[j])
        if abs(abs(abs(x[i])-0.3)+abs(abs(y[j])-0.3)-0.6) <= 0.001:
            X2.append(x[i])
            Y2.append(y[j])   

plt.xlim(a*1.25, b*1.25)
plt.ylim(a*1.25, b*1.25)
plt.scatter(X1,Y1,color="red")
plt.scatter(X2,Y2,color="blue")

plt.show()

#題目:AABB為一個四位數,且是一個數字的平方,試求形如AABB這樣的四位數?

# 題目:AABB為一個四位數,且是一個數字的平方,
# 試求形如AABB這樣的四位數?
#解法1
for i in range(1,9):
    for j in range(0,10):
        if(((1000*i+100*i+10*j+j)**(1/2)%1)==0):
            print(1000*i+100*i+10*j+j)
#解法2
for i in range(32,100):
    a=(i*i)//1000
    b=((i*i)-1000*a)//100
    c=(i*i-1000*a-100*b)//10
    d=i*i-1000*a-100*b-10*c
    if (a==b and c==d):
         print(i*i)

蒙地卡羅模擬法

#蒙地卡羅模擬法,是基於大數法則的實證方法,當實驗的次數越多,其平均值也就會越趨近於理論值。

import matplotlib.pyplot as plt
import numpy as np
import random
plt.figure(figsize=(8,8),dpi=80)
t = np.linspace(0,0.5*np.pi,100)
x=np.cos(t)
y=np.sin(t)
plt.plot(x,y,color="green",linewidth=5)

N=2000
count=0    #計數

for i in range(1,N+1):
    x=random.random()        #輸出0-1之間的隨機數
    y=random.random()
   # print ("(",x,",",y,")")
    if (x*x+y*y<=1):
        count=count+1
        plt.scatter(x,y,color="red",linewidth=1)
    else:
        plt.scatter(x,y,color="white",linewidth=1)

print("估計值=",count/N)
print("理論值=",np.pi/4)

plt.xlim(0, 1)
plt.ylim(0, 1)
plt.show()
估計值= 0.7915
理論值= 0.7853981633974483