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()
#設計 Logo
#題目: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
訂閱:
文章 (Atom)