МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ імені Тараса Шевченка
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра програмних систем і технологій



Дисципліна:
«Функціональне програмування»


Лабораторна робота № 3
на тему:
«Форми lambda та let, вираз присвоєння set! для розв’язання нелінійних рівнянь та чисельного інтегрування функцій»


Виконав:
студент групи ІПЗ-44мс
Косенко Клим Сергійович

Перевірила:
Ніколаєнко Анастасія Юріївна


Київ 2023












Мета роботи

Розв’язати нелінійні рівняння та здійснити чисельне інтегрування функцій наближеними методами, використовуючи мови функціонального програмування та lambda, let та set! форми.




Умова завдання
Умова завдання


Код 1
        ";Функція
        (define (f x)
          (- (* 3 (exp (* -3 x))) x))
        
        ;Метод Хорд
        (define (chord-method a b epsilon)
          
          (define (chord-iteration ak bk)
            (let ((xk (- ak (/ (* (f ak) (- bk ak)) (- (f bk) (f ak))))))
              (if (< (abs (f xk)) epsilon)
                  xk
                  (if (< (* (f ak) (f xk)) 0)
                      (chord-iteration ak xk)
                      (chord-iteration xk bk)))))
          
          (chord-iteration a b))
                  
        (display "Метод Хорд: ")
        (display (chord-method 1 0 0.0001))
        (newline)
        
        ;Метод Ньютона
        (define (df x)
          (- (* -9 (exp (* -3 x))) 1))
        
        (define (newton-method x epsilon)
          (if (< (abs (f x)) epsilon)
              x
              (newton-method (- x (/ (f x) (df x))) epsilon)))
        
        (display "Метод Ньютона: ")
        (display (newton-method 3 0.0001))
        (newline)"
      

Код 2
        ";метод прямокутників
        (define (rectangle-method f a b n)
          (define (delta-x a b n)
            (/ (- b a) n))
          (define (x i a delta-x)
            (+ a (* i delta-x)))
          (define (sum i a delta-x f)
            (if (> i n)
                0
                (+ (f (x (+ i 0.5) a delta-x)) (sum (+ i 1) a delta-x f))))
          (* (delta-x a b n) (sum 0 a (delta-x a b n) f)))
        
        ;метод Сімпсона
        (define (simpson-method f a b)
          (* (/ (- b a) 6) (+ (f a) (* 4 (f (/ (+ a b) 2))) (f b))))
        
        (display "Метод прямокутників: ")
        (display (rectangle-method (lambda (x) (cos (+ (* x x) x 1))) 0 1 1000))
        (newline)
        (display "Метод Сімпсона: ")
        (display (simpson-method (lambda (x) (cos (+ (* x x) x 1))) 0 1))
        (newline)"
      



Скріншот роботи та результату
Результат виконання
Результат виконання



Висновок

В ході лабораторної роботи ми успішно вирішили нелінійні рівняння та здійснили чисельне інтегрування функцій, використовуючи мови функціонального програмування та конструкції lambda, let та set!.
Використовуючи методи хорд та Сімпсона, ми знайшли наближені значення коренів рівнянь та обчислили інтеграли функцій на визначених відрізках з заданою точністю.
Ця лабораторна робота допомогла нам зрозуміти та застосувати концепції функціонального програмування для чисельного аналізу та розв'язання математичних проблем.