Форум программистов, компьютерный форум, киберфорум
Наши страницы
Haskell
Войти
Регистрация
Восстановить пароль
 
Failtrey
0 / 0 / 0
Регистрация: 01.03.2018
Сообщений: 3
1

Haskell и метод наименьших квадратов

01.03.2018, 20:49. Просмотров 284. Ответов 4

Всем добрый день, кто это видит

У меня задание по курсовой работе "Реализовать метода наименьших квадратов на функциональном языке программирования (подразумевается Haskell)". Я вообще не слышал что такое Haskell/Lisp до этого семестра и тут сразу же приходится писать курсовую . Я не прошу делать это задание за меня, но если кто - то может, подскажите про что лучше почитать/куда смотреть чтобы попытаться самостоятельно разобраться с этим. Примеры будут громадным +ом. Заранее всем большое спасибо
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2018, 20:49
Ответы с готовыми решениями:

Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?)
"У нас" ? А где преподавание этой экзотики на высоте? Добавлено через 2 минуты А где такие...

Метод Наименьших Квадратов
Помогите, а то мне вообще не понятно=( Семинарист плохо объясняет, точнее никак... Написать...

Метод наименьших квадратов
День добрый. Есть задача, по заданной сетке построить апроксимирующую функцию вида Y=1/(a+bx) ...

Метод Наименьших Квадратов
Помогите, а то мне вообще не понятно=( Семинарист плохо объясняет, точнее никак... Написать...

Метод наименьших квадратов
Для указанной ниже таблицы найдите наилучшую линейную приближающую функцию, применяя метод...

4
Tklwegsd
Эксперт 1С
787 / 564 / 195
Регистрация: 24.07.2013
Сообщений: 1,971
01.03.2018, 21:06 2
В самом разделе есть ссылки, ознакомьтесь для начала с ними
Полезные ссылки по Haskell
FAQ по языку Haskell
1
Curry
2993 / 2074 / 257
Регистрация: 01.06.2013
Сообщений: 4,527
Записей в блоге: 9
01.03.2018, 22:49 3
Цитата Сообщение от Failtrey Посмотреть сообщение
Реализовать метода наименьших квадратов
Методом наименьших квадратов что реализовать? Например, аппроксимации различными функциями табличных данных. Или что то ещё.
Цитата Сообщение от Failtrey Посмотреть сообщение
подскажите про что лучше почитать/куда смотреть
Вначале учебник почитать, тут есть, хотя не все ссылки уже живы.
Что именно советовать читать зависит от знания вами английского.

Добавлено через 6 минут
А как установить Haskell зависит от используемой вами ОС.

Добавлено через 1 час 21 минуту
Правильная установка Haskell. Утилита Stack
0
Catstail
Модератор
24930 / 12651 / 2315
Регистрация: 12.02.2012
Сообщений: 20,600
01.03.2018, 23:34 4
Простейшая реализация поиска зависимости y=a*x+b методом наименьших квадратов:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
mnk :: [Double] -> [Double] -> (Double,Double)
mnk x y = (a,b)
          where n    = length x
                sx   = sum x
                sy   = sum y
                sx2  = sum $ map (^2) x
                sxy  = sum $ zipWith (*) x y
                det  = sx2*(fromIntegral n)-sx*sx
                deta = (fromIntegral n)*sxy-sx*sy
                detb = sx2*sy-sx*sxy
                a    = deta/det
                b    = detb/det
Проверим:

Haskell
1
2
*Main> mnk [1,2,3,4,5,6] [3,5,7,9,11,13]
(2.0,1.0) -- верно! Задана зависимость y=2*x+1
3
Curry
2993 / 2074 / 257
Регистрация: 01.06.2013
Сообщений: 4,527
Записей в блоге: 9
02.03.2018, 08:50 5
Добавлю свои 5 копеек.
Функция mnk вычисляет ещё и ошибку аппроксимации.
Оформлено как консольное приложение запрашивающее ввод, пример парсинга и пр.
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import System.IO
import GHC.Read
import Text.ParserCombinators.ReadPrec (lift,(<++))
import Text.ParserCombinators.ReadP (skipSpaces,skipMany,get)
 
mnk :: [Double] -> [Double] -> (Double,Double,Double)
mnk x y = (a,b,sigm)
          where n    = length x
                sx   = sum x
                sy   = sum y
                sx2  = sum $ map (^(2 :: Int)) x
                sxy  = sum $ zipWith (*) x y
                det  = sx2*(fromIntegral n)-sx*sx
                deta = (fromIntegral n)*sxy-sx*sy
                detb = sx2*sy-sx*sxy
                a    = deta/det
                b    = detb/det
                sigm = sum $ zipWith (\xi yi -> (yi - (a*xi+b))^(2 :: Int)) x y
                                 
                                 
data InputData = XY Double Double
               | Complete
 
instance GHC.Read.Read InputData where
 
        readPrec = (do
                        x <- readPrec
                        lift skipSpaces
                        y <- readPrec
                        return (XY x y))
 
                     <++ (do
                        lift $ skipMany get
                        return Complete)
 
                                 
main :: IO ()
main = do
    hSetBuffering stdout NoBuffering
    let dataInput i xs ys = do
            let strI = show i
            putStr $ "Enter x" ++ strI ++ " y" ++ strI ++ 
                        " or not a number to complete : " 
            inp <- readLn
            case inp of
                (XY x y) -> dataInput (i+1) (xs++[x]) (ys++[y])
                Complete -> return (xs,ys)
    (xs,ys) <- dataInput (0 :: Int) [] []
    if length xs < 2 then putStrLn "no data"
    else do
        let (a,b,sigm) = mnk xs ys
        putStrLn $ "\na=" ++ show a
        putStrLn $ "b=" ++ show b
        putStrLn $ "sigm=" ++ show sigm
https://ideone.com/WbvPXR
1
02.03.2018, 08:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2018, 08:50

Метод наименьших квадратов
Имеется функция, вида гиперболического арктангенса (f = atan(x)). Как к этой функции применить...

Метод наименьших квадратов
Здрасьте. Такое дело. Нужно методом наименьших квадратов нарисовать прямую которая наименьше...

Метод наименьших квадратов
Подскажите, пожалуйста, как посчитать погрешность в методе наименьших квадратов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.