我有f=sqrt(x**2+y**2) + (2/3) * sqrt(x**2+((5/6)-y)**2)=1
任务是:
计算under或in下的积分(使用随机命令)
绘制函数(绘制以蓝色定位f
的点)
我在第一个任务中取得了成功,但绘图看起来像另一个任务 图形应该是(twitter蛋)形状的东西 但我有另一种形状
我的解决方案::
我会在x轴上设置一个矩形4*4
(从-1
到1
,在y轴上设置相同)
然后我在x
和y
之间为-1
和1
生成随机数
如果这些数字的结果为f>1
。
这意味着这些是我必须用蓝色绘制的点。
我做到了 但是我得到了一个椭圆而不是一个推特蛋。 这是代码:
import matplotlib.pyplot as plt
import numpy as np
import math
## het functie is sqrt(x**2+y**2) + (2/3) sqrt(x**2+((5/6)-y)**2)=1
n=10000
#n is hoe veel keer wil je random getaal doen
# het integraal is van a tot b
a=-1
b=1
# ik wil stelen :::
#rechthoek opp hier is vier ( van -1 to 1 op x-axis en y-axis)
#want ik kan zien dat het max waarde voor x en y is 1 omdat
# meer dan 1 can de VGL niet = één
# het integral for area IN is when VGL<1
goed_list=[]
false_list=[]
import random
for i in range(1,n):
x = random.uniform(-1,1)
y =random.uniform(-1,1)
if ( math.sqrt( x**2 + y**2 ) + ((2/3)* math.sqrt(x**2+((5/6)-y)**2)) ) < 1 :
goed_list.append(y)
else:
false_list.append(y)
plt.plot(x,y, marker='o', color='b', ls='')
opp= len(goed_list) / float((n) *4)
print "de integraal van %d tot %d voor functie ( math.sqrt(x**2+y**2) + (2/3)* math.sqrt(x**2+((5/6)-y)**2) ) is %.5f " % ( a,b,opp)
plt.axvline(x=0.,color='k',ls='dashed')
plt.axhline(y=0.,color='k',ls='dashed')
plt.show()