diff --git a/task2/01_maclaurin/.gitignore b/task2/01maclaurin/.gitignore similarity index 100% rename from task2/01_maclaurin/.gitignore rename to task2/01maclaurin/.gitignore diff --git a/task2/01_maclaurin/app/Main.hs b/task2/01maclaurin/app/Main.hs similarity index 100% rename from task2/01_maclaurin/app/Main.hs rename to task2/01maclaurin/app/Main.hs diff --git a/task2/01_maclaurin/graph.png b/task2/01maclaurin/graph.png similarity index 100% rename from task2/01_maclaurin/graph.png rename to task2/01maclaurin/graph.png diff --git a/task2/01_maclaurin/package.yaml b/task2/01maclaurin/package.yaml similarity index 100% rename from task2/01_maclaurin/package.yaml rename to task2/01maclaurin/package.yaml diff --git a/task2/01_maclaurin/stack.yaml b/task2/01maclaurin/stack.yaml similarity index 100% rename from task2/01_maclaurin/stack.yaml rename to task2/01maclaurin/stack.yaml diff --git a/task2/01_maclaurin/stack.yaml.lock b/task2/01maclaurin/stack.yaml.lock similarity index 100% rename from task2/01_maclaurin/stack.yaml.lock rename to task2/01maclaurin/stack.yaml.lock diff --git a/task2/02matrix/.gitignore b/task2/02matrix/.gitignore new file mode 100644 index 0000000..c368d45 --- /dev/null +++ b/task2/02matrix/.gitignore @@ -0,0 +1,2 @@ +.stack-work/ +*~ \ No newline at end of file diff --git a/task2/02matrix/app/Main.hs b/task2/02matrix/app/Main.hs new file mode 100644 index 0000000..ebfb2d2 --- /dev/null +++ b/task2/02matrix/app/Main.hs @@ -0,0 +1,35 @@ +module Main where + +import Numeric.LinearAlgebra as LA +import Data.Complex +import Graphics.EasyPlot + +gen x y | x == y = -2 + | abs (x - y) == 1 = 1 + | otherwise = 0 + +a n = build (n,n) gen :: Matrix Double + +-- Нормы +norm1 = maximum . map (sum . map abs) . toLists +norm2 = norm1 . tr +norm3 m = sqrt $ maximum $ map magnitude $ toList $ eigenvalues $ m LA.<> (tr m) + +mu norm m = norm m * (norm $ inv m) + +collectDots norm 1 = [(0, mu norm (a 1))] +collectDots norm n = (fromIntegral n, mu norm (a n)) : collectDots norm (n - 1) + +main :: IO () +main = do + let res1 = collectDots norm1 6 + plot X11 $ Data2D [Title "norm1", Style Lines] [] res1 + print res1 + + let res2 = collectDots norm2 6 + plot X11 $ Data2D [Title "norm2", Style Lines] [] res2 + print res2 + + let res3 = collectDots norm3 6 + plot X11 $ Data2D [Title "norm3", Style Lines] [] res3 + print res3 diff --git a/task2/02matrix/graph.png b/task2/02matrix/graph.png new file mode 100644 index 0000000..cd8617f Binary files /dev/null and b/task2/02matrix/graph.png differ diff --git a/task2/02matrix/package.yaml b/task2/02matrix/package.yaml new file mode 100644 index 0000000..ee2fcab --- /dev/null +++ b/task2/02matrix/package.yaml @@ -0,0 +1,26 @@ +name: 02matrix + +dependencies: +- base >= 4.7 && < 5 +- hmatrix +- easyplot + +ghc-options: +- -Wall +- -Wcompat +- -Widentities +- -Wincomplete-record-updates +- -Wincomplete-uni-patterns +- -Wmissing-export-lists +- -Wmissing-home-modules +- -Wpartial-fields +- -Wredundant-constraints + +executables: + 02matrix-exe: + main: Main.hs + source-dirs: app + ghc-options: + - -threaded + - -rtsopts + - -with-rtsopts=-N diff --git a/task2/02matrix/stack.yaml b/task2/02matrix/stack.yaml new file mode 100644 index 0000000..fe3370f --- /dev/null +++ b/task2/02matrix/stack.yaml @@ -0,0 +1,68 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# https://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# +# The location of a snapshot can be provided as a file or url. Stack assumes +# a snapshot provided as a file might change, whereas a url resource does not. +# +# resolver: ./custom-snapshot.yaml +# resolver: https://example.com/snapshots/2018-01-01.yaml +resolver: + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/12.yaml + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# subdirs: +# - auto-update +# - wai +packages: +- . +# Dependency packages to be pulled from upstream that are not in the resolver. +# These entries can reference officially published versions as well as +# forks / in-progress versions pinned to a git hash. For example: +# +extra-deps: +- easyplot-1.0@sha256:3fec6ccf425b370ab668eb342bc4cd92777880653e27a982db7b225fd007cb2b,1936 +# - acme-missiles-0.3 +# - git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# +# extra-deps: [] + +# Override default flag values for local packages and extra-deps +# flags: {} + +# Extra package databases containing global packages +# extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=2.7" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor diff --git a/task2/02matrix/stack.yaml.lock b/task2/02matrix/stack.yaml.lock new file mode 100644 index 0000000..01805e5 --- /dev/null +++ b/task2/02matrix/stack.yaml.lock @@ -0,0 +1,20 @@ +# This file was autogenerated by Stack. +# You should not edit this file by hand. +# For more information, please see the documentation at: +# https://docs.haskellstack.org/en/stable/lock_files + +packages: +- completed: + hackage: easyplot-1.0@sha256:3fec6ccf425b370ab668eb342bc4cd92777880653e27a982db7b225fd007cb2b,1936 + pantry-tree: + sha256: a5de94b54a51732bf70a601fca8c905fe074ecf870ea573db36d53a3bbb282f4 + size: 219 + original: + hackage: easyplot-1.0@sha256:3fec6ccf425b370ab668eb342bc4cd92777880653e27a982db7b225fd007cb2b,1936 +snapshots: +- completed: + sha256: 9313df78f49519315342f4c51ffc5da12659d3735f8ac3c54a1fb98ff874474e + size: 640036 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/12.yaml + original: + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/12.yaml