用蒙特卡洛方法計(jì)算定積分
專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶(hù)和效益!創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作負(fù)責(zé)任的成都網(wǎng)站制作公司!
計(jì)算定積分
利用蒙特卡洛計(jì)算方法,核心步驟是求取隨機(jī)的 g(X1),………,g(Xn),n∈[a,b],由數(shù)學(xué)期望和大數(shù)定理可以近似計(jì)算定積分,公式為
原函數(shù):
導(dǎo)函數(shù):
計(jì)算導(dǎo)函數(shù)在[10,15]上的定積分;
Python
用蒙特卡洛方法計(jì)算的定積分:
直接用原函數(shù)計(jì)算的定積分:
偏差程度為:
在python中,有一個(gè)math module,你可以import math,
里面有math.sin(),math.cos(),math.asin()和math.acos()四個(gè)函數(shù).
有了這四個(gè)函數(shù)你就可以求函數(shù)值和角度了.
注意:括號(hào)里面填的數(shù)值,要用弧度制.
科學(xué)計(jì)算應(yīng)該要安裝numpy,你可以去下Anaconda,全套自動(dòng)打包好了的。
把代碼改了一下:
#?-*-?coding:?utf-8?-*-
import?math
import?sys
import?time
import?numpy?as?np
def?area():
x1=1????????????#起始區(qū)間
x2=4.5????????????#結(jié)束區(qū)間
dx=0.0001????????#步長(zhǎng),步長(zhǎng)越小越精確
y1=0
y2=0
y3=0????????????#結(jié)果
for?x?in?np.arange(x1,?x2,?dx):
y1=y1+dx*x*x????????????#細(xì)小矩形取左邊為高
y2=y2+?dx*(x+0.5*dx)*(x+0.5*dx)?????????????#取中間
y3=y3+dx*(x+dx)*(x+dx)
print?(y1,?y2,?y3)
start?=?time.clock()????????
area()
end?=?time.clock()
print?(end-start)
python求解不定積分
首先導(dǎo)入sympy庫(kù)中的所有類(lèi)和函數(shù)。
from sympy import *
接下來(lái)我們需要定義,本次需要使用到的符號(hào)變量x,其定義如下:
x = symbols('x')
最后我們來(lái)計(jì)算積分,定積分和不定積分我們都需要用到函數(shù)integrate,這個(gè)函數(shù)的用法非常的簡(jiǎn)單,完全可以自己領(lǐng)悟。
integrate(cos(x) ,x)
sin(x)
這里面需要注意兩點(diǎn):
(1)cos后面要跟一對(duì)括號(hào),不能直接寫(xiě)cosx。
(2)求解的結(jié)果中省略了常數(shù)C,需要自己加上。