R語言數值積分

來源:互聯網
上載者:User

標籤:數位   計算公式   function   length   sap   inf   mat   bsp   png   

  前兩天對學習了R裡面計算的基本範圍,以及一些求解方程的方法,今天來看看積分,其實上個學期學了數值分析,對這部分的演算法是有所瞭解的,當時是用matlab寫了一遍,已經忘了怎麼實現的了,現在用R重新寫一遍吧,演算法有梯形積分法,辛普森積分法,自適應積分法。

  • 梯形積分法

    梯形積分法可以用很好的解釋

    就是將微積分的時候用的方法,取Δx,則一小塊面積就約等於f(x)*Δx,連續函數在Δx趨於0的時候,該公式會越來越精確。

###設定小數位元options(digits = 8)func1 <- function(x) return(4*x^3)###梯形積分法tixing <- function(func, a, b, n=100){  x <- 0  h <- (b-a)/n  for(i in 1:n){    x <- h*func(a+i*h) + x  }  return(x)}tixing(func1,0,1,n=10000)###可以看到這種近似較為粗糙,可以稍微改進一些tixing2 <- function(func, a, b, n=100){  h <- (b-a)/n  add_by <- seq(a,b,by=h)  f_x <- sapply(add_by,func)  x <- h*sum(f_x[1]/2,f_x[2:n],f_x[n+1]/2)  return(x)}
tixing2(func1,0,1,n=100)
  • 辛普森方法

    辛普森方法和梯形方法類似,但是做了改進,前面我們改進的方法用的是梯形逼近,這樣子f(x)其實是表示成了一段直線,辛普森方法使用拋物線來擬合,可              以降低誤差。

    這裡直接給出辛普森的計算公式

    S=h/3(f(x0)+4f(x1)+2f(x2)+4f(x3)+```+4f(xn-1)+f(xn))

    

###辛普森方法simpson <- function(func, a, b, n=100){  h <- (b-a)/n    ###奇數項  add_by_1 <- seq(a+h,b-h,by=2*h)  ###偶數項  add_by_2 <- add_by_1+h  add_by_2 <- add_by_2[-length(add_by_2)]  x <- h/3*sum(func(a),4*sapply(add_by_1,func),2*sapply(add_by_2,func),func(b))  return(x)}

    目前為止我們指定了運算次數n,而不是指定誤差來計算,當然指定誤差也是可以的,考慮一種迴圈,每次n都增加1,就可以完成這個目標了,但是這樣運算            量會越來越大,所以推薦使用另一種方法,即公式本身具有的誤差,可以又其本身和其n階導數一起表示出來,具體的見數值分析相關書籍。

  • 自適應積分法

    這種方法我以前也沒有過接觸,書上講它的基本思想是越是陡峭(導數大)的函數,需要的分割越細,越是平坦(導數小)的函數,需要的分割越少。詳細            的,在進行運算的時候,先限定一個誤差,然後將函數分割為兩半,每邊的誤差均是誤差的一半。這種方法的程式我再思考一下,還沒想到怎麼實現較好。

 

    

R語言數值積分

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.