`
tangtong
  • 浏览: 64283 次
  • 来自: ...
社区版块
存档分类
最新评论

Section 1.3

F# 
阅读更多

 1.29

cube :: Double -> Double
cube x = x*x*x

getSum term a next b = if a>b then 0 else term a + getSum term (next a) next b

simpsonIntegral :: (Double -> Double) -> Double -> Double -> Integer -> IO ()
simpsonIntegral f a b n = do print $ (h/3) * (getSum simpson_term 0 (+1) n) 
    where h = (b-a)/(fromIntegral n)
          simpson_term k = t * f (a+(fromIntegral k)*h)
            where t | k==0         = 1
                    | k==n         = 1
                    | odd k        = 4
                    | otherwise    = 2
 

 1.30

sum_iter term a next b = iter a 0
    where iter x result = if (x>b) then result else iter (next x) (result + term(x))

-- use foldl   
sum_iter' term a next b = foldl term' 0 [a,a'..b]
    where a'=next a
          term' x y = x + (term y)

 1.31

-- getPi n = 4* (foldl (\x -> \y -> x* (y*y-1)/(y*y)) 1 [3,5..(2*n+1)])

getProduct term a next b = 
    if a>b then 1 else (term a)*(getProduct term (next a) next b)
    
getPi n = 4 * (getProduct piTerm 1 (+1) n)
    where piTerm k
             | odd k = (fromIntegral (k+1))/(fromIntegral (k+2))
             | even k = (fromIntegral (k+2))/(fromIntegral (k+1))
             
getProduct' term a next b = iter a 1
    where iter x p = if (x>b) then p else iter (next x) (p*term(x))

getPi' n = 4 * (getProduct' piTerm 1 (+1) n)
    where piTerm k
             | odd k = (fromIntegral (k+1))/(fromIntegral (k+2))
             | even k = (fromIntegral (k+2))/(fromIntegral (k+1))

 1.32

accumulate combiner null_value term a next b = accumulate_iter a null_value
    where accumulate_iter x ans = if x > b then ans else accumulate_iter (next x) (combiner (term x) ans)
    
getSum term a next b = accumulate (+) 0 term a next b

getProduct term a next b = accumulate (*) 1 term a next b

accumulate' combiner null_value term a next b = 
    if (a>b) 
        then null_value 
        else combiner (term a) (accumulate' combiner null_value term (next a) next b)

 1.33

fillteredAccumulator combiner null_value term a next b fillter = iter a null_value
    where iter x ans = if x>b then ans else iter (next x) (combiner (if fillter x then term x else null_value) ans)
                                                
getPositiveSum term a next b = fillteredAccumulator (+) 0 term a next b (\x -> x>0)                                                 

 1.34 略

 1.35

fixedPoint f firstGuess = try firstGuess
    where try guess = if (closeEnough guess guess') then guess else try guess'
            where guess' = f guess          
          closeEnough a b = if (abs (a-b) < tolerance) then True else False
            where tolerance = 0.00001
            
goldenRatio = fixedPoint (\x -> 1 + 1/x) 1           

 1.36~1.46 无聊,略

分享到:
评论

相关推荐

    Python核心编程(英文版)

    Section 1.3. Features Section 1.4. Downloading and Installing Python Section 1.5. Running Python Section 1.6. Python Documentation Section 1.7. Comparing Python Section 1.8. Other Implementations ...

    Programming Windows Presentation Foundation (wpf编程英文文字版)

    Section 1.3. Content Model Section 1.4. Layout Section 1.5. Controls Section 1.6. Data Binding Section 1.7. Dependency Properties Section 1.8. Resources Section 1.9. Styles and Control ...

    计算机网络(第四版)(英文版+答案)

    Section 1.3. Network Software Section 1.4. Reference Models Section 1.5. Example Networks Section 1.6. Network Standardization Section 1.7. Metric Units Section 1.8. Outline of the Rest of ...

    计算机网络英文版(第四版)

    Section 1.3. Network Software Section 1.4. Reference Models Section 1.5. Example Networks Section 1.6. Network Standardization Section 1.7. Metric Units Section 1.8. Outline of the Rest of ...

    计算机网络 英文原版版(第四版)

    Section 1.3. Network Software Section 1.4. Reference Models Section 1.5. Example Networks Section 1.6. Network Standardization Section 1.7. Metric Units Section 1.8. Outline of the Rest of the ...

    计算机网络第四版(英文原版)

    Section 1.3. Network Software Section 1.4. Reference Models Section 1.5. Example Networks Section 1.6. Network Standardization Section 1.7. Metric Units Section 1.8. Outline of the Rest of ...

    计算机网络_第四版(andrew S. Tanenbaum)

    Section 1.3. Network Software Section 1.4. Reference Models Section 1.5. Example Networks Section 1.6. Network Standardization Section 1.7. Metric Units Section 1.8. Outline of the Rest of ...

    网络教程多所重点大学指定教材电子版

    Section 1.3. Network Software Section 1.4. Reference Models Section 1.5. Example Networks Section 1.6. Network Standardization Section 1.7. Metric Units Section 1.8. Outline of the Rest of ...

    UNIX Network Programming Volume 1, Third Edition (Unix网络编程卷1第3版英文版)

    Section 1.3. Protocol Independence Section 1.4. Error Handling: Wrapper Functions Section 1.5. A Simple Daytime Server Section 1.6. Roadmap to Client/Server Examples in the Text Section 1.7. ...

    javascript语言精粹(中英文版)

    Section 1.3. A Simple Testing Ground Chapter 2. Grammar Section 2.1. Whitespace Section 2.2. Names Section 2.3. Numbers Section 2.4. Strings Section 2.5. Statements Section 2.6. Expressions ...

    Embedded Linux Primer.pdf

    Section 1.3. Open Source and the GPL Section 1.4. Standards and Relevant Bodies Section 1.5. Chapter Summary Chapter 2. Your First Embedded Experience Section 2.1. Embedded or Not? Section 2.2. ...

    Java Network Programming 3rd Edition By Elliotte Rusty Harold 2004

    Section 1.3. But Wait! There's More! Chapter 2. Basic Network Concepts Section 2.1. Networks Section 2.2. The Layers of a Network Section 2.3. IP, TCP, and UDP Section 2.4. The Internet ...

    Bluetooth Core Specification Addendum 6

    蓝牙技术自1994年由爱立信公司首次提出以来,已经发展成为无线通信领域的重要技术,广泛应用于个人电子设备之间的无线连接。蓝牙核心规格是定义蓝牙技术规范的官方文件,而蓝牙核心协议6.0即Bluetooth Core ...

    Web Caching and Replication

    Section 1.3. Overview of Internet Protocols Section 1.4. Summary Chapter 2. The Internet Protocol and Routing Section 2.1. Addressing Section 2.2. IP Datagram Header Section 2.3. Routing ...

    MySql存储过程编程.chm

    Section 1.3. Resources for Developers Using Stored Programs Section 1.4. Some Words of Advice for Developers Section 1.5. Conclusion Chapter 2. MySQL Stored Programming Tutorial Section 2.1. ...

    Network Security: Private Communication in a Public World, Second Edition

    Section 1.3. Terminology Section 1.4. Notation Section 1.5. Primer on Networking Section 1.6. Active vs. Passive Attacks Section 1.7. Layers and Cryptography Section 1.8. Authorization ...

    Essential SNMP

    Section 1.3. Applying the Concepts of Network Management Section 1.4. Change Management Section 1.5. Getting More Information Chapter 2. SNMPv1 and SNMPv2 Section 2.1. SNMP and UDP Section ...

Global site tag (gtag.js) - Google Analytics