제로에서 시작하는 MCMC 책을 줄리아로 써봤는데 줄리아도 C를 대신할 수 있을 것 같아요.

12439 단어 Juliatech

총결산

  • 파이썬도 되고, 줄리아도 돼요!
  • 이마


    Juria가 0.2 또는 0.3 정도인 것을 알고 0.5 정도부터 작업 프로그램의 일부로 사용하기 시작했습니다. 0.7/1.0으로 전환할 때 파괴적인 업데이트가 있을 수 있지만 1.0 이후에는 안정적으로 사용할 수 있습니다. 최근에 트위터를 봤는데,줄리아는 1.0 이후에도 통용어로 통용되고 속도가 빨라요. 조화를 가늘게 하려면 씨톤과 씨++를 쓰지 않아도 되죠?이런 의견이 있는 것 같다.
    예전에 우연히 읽은 책은 C/C++(C라고 하지만 거의 C)인데, MCC를 1부터 이해할 수 있도록 자세히 설명해주는 좋은 책이 있는데, 수중에 책을 반납해 주리아로 써보려고 한 장르의 책이다.
  • 제로에서 시작된 MCC 마코프 프랜차이즈 몬테카로법의 실천 입문(KS 이공학 전문서)
  • github 창고는 여기 있습니다.
  • cocomoff/Zero MCMC in Julia
  • 이 기사, 줄리아는 훌륭해!이를 홍보하기 위해서가 아니라 "파이썬이 써봤는데 C++는 그 정도는 안 되니까 속도를 낼 수 있을까요?"이런 사람이 주리아를 선택에 넣었으면 좋겠다.
    (주리아 이런 글씨는 너무 졸렬하다!!! 이런, 그래, 그래, 미안해)

    π의 근사치 구하기(C/Juria/별다른 연구가 없는 뇌사 파이톤)


    정말 흔한 물건이군. C의 실복을 볼게. 책의 실복을 복사한 거야.
    #include <stdio>
    #include <stdlib.h>
    #include <time.h>
    
    const int n_iter = 1000000;
    const int print_step = 10000;
    
    int main() {
      srand((unsigned)time(NULL));
      int n_in = 0;
      for (int i = 1; i <= n_iter; i++) {
        double x = (double)rand() / RAND_MAX;
        double y = (double)rand() / RAND_MAX;
        if (x * x + y * y < 1.0f)
          n_in++;
    
        if (i % print_step == 0)
          printf("%d   %.10f\n", i, (double)n_in/n_iter);
      }
    }
    
    다음 단계는 줄리아에서 실시한다. 파이톤은 순환을 직접 쓰면 좀 무섭다(과장), 특히 뇌사 상태에서 진행된다. 리니어알게브라:norm은 2승정액을 계산할 수 있지만 사용하지 않아도 된다.
    using LinearAlgebra: norm
    
    function compute(;n_iter=1_000_000, print_step=1_000)
        n_in = 0
    
        for i in 1:n_iter
            xy = rand(2)
            (norm(xy) < 1) && (n_in += 1)
            (i % print_step == 0) && println("$i $(n_in / i)")
        end
    
        println("true: $(pi/4)")
    end
    
    compute()
    
    어느 것이나 0.785 정도 설치되어 있는 데다 파이토존도 신경 쓰지 않고 for문으로 쓰면 이런 분위기다.
    import random
    
    n_in = 0
    n_iter = 1000000
    print_step = 1000
    
    for i in range(1, n_iter + 1):
        x = random.random()
        y = random.random()
        if x * x + y * y <= 1:
            n_in += 1
    
        if i % print_step == 0:
            print("{} {}".format(i, n_in / i))
    
    print(n_in / n_iter)
    
    파이톤이 한꺼번에 머리에 들어가는 사람 줄리아도 곧 들어간다!(논의 필요)

    보태다


    반복, 그리고 C+/Python/Juria, 어떤 것을 선택해야 합니까!파이썬 느려!하지만 파이톤을 밟지 않고 C++로 공부(다른 것도 Cython 같은 것을 쓴다)라는 절차를 밟지 않아도 Jupter notebook에서 바로 사용할 수 있는 Juria를 선택할 수 있다.그나저나 쥬리아도 파이썬의 포장이라고 간단하게 부를 수 있는데, 쥬리아의 아픈 점은 파이썬으로 쓰면 된다.
    나는 파이톤을 사용할 때는 matplotlib을, Juria를 사용할 때는 Plaots를 사용한다.백엔드도 사용했습니다.
  • https://docs.juliaplots.org/latest/backends/
  • 예를 들어heisting법으로 고스의 분포된 샘플을 계산해 그린 부분의 코드(책의 4장)가 바로 이런 느낌이다. 아마도 좋아하는 물건의 차이일 것이다. 좋아하는 물건으로 하면 될 것 같다.
    function plot_values_in_hist(values; n_bins=50)
        f = plot(size=(400, 300))
        histogram!(f, values, bins=n_bins, normalize=true)
        savefig(f, "chapter4/histogram1_n$(length(values)).png")
    end
    


    경품


    그나저나 지금은 설치할 때 VS코드로 편집하고 터미널을 오른쪽에 Oh My REPL에 놓는다.jl과 Revise.jl 읽기 (Oh My REPL. jl 항상). 여기에서 편집한 코드는include (") 에서 호출됩니다. 이 때 오류가 발생하면 다시 읽는 것을 반영할 수 없습니다. 이것은 무슨 문제입니까?인클라이트가 아니어서 안 된다는 느낌인가요?유식한 분이 VS코드가 incremental을 실현할 때 가장 좋은 방법을...

    좋은 웹페이지 즐겨찾기