<link rel="stylesheet" Â Â Â href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.0/styles/atom-one-dark-reasonable.min.css"> <script src="https://static.tumblr.com/reqj7s5/dUPr9jxmp/highlight.min.js"></script> <script>hljs.highlightAll();</script>
å ·äœäŸãååèšäºãšåæ§ã®ãã®ãäžã«èŒããŠãããŸãïŒ
rem************************************ rem**** Crank-Nicolson method ***** rem************************************ ' open "crank-nicolson.dat" for output as #1 ' 'constants x_min = 0.0: x_max = 1.0: M = 100: N = 100: dx = (x_max-x_min)/M: dt = 1.0/N: r = dt/dx^2: kappa = 0.5 E = 0.0001: NN = 200 PI = 4*ATN(1): 'Ï â 4 arctan(1) ' dim x(M+1) dim u(M+1, N+1), uf(M+1, N+1) ' print #1, "x"; for i = 0 to M x(i) = i*dx next i ' for i = 0 to M step 10 print #1, using "##.##"; x(i); next i: ' 'IC for i = 1 to M-1 if (x(i)>=0 and x(i)<0.5) then let u(i, 0) = 0 else let u(i, 0) = 10 next i ' 'BCs for j = 0 to N u(0, j) = 0: u(M, j) = 10 next j ' print #1, print #1, "u(x,0)"; for i =0 to M step 10 print #1, using "###.###"; u(i, 0); next i: ' 'Gauss-Seidel method for j = 0 to N-1 for i = 1 to M-1 u(i, j+1) = u(i, j): 'setting of IC next i for L = 1 to NN for i = 1 to M-1 uf(i, j+1) = u(i, j+1) 'convergence judgment BS = -2*(1 + 1/(r*kappa)) B = -u(i+1, j) + 2*u(i, j) - u(i-1, j) - 2*u(i, j)/(r*kappa) u(i, j+1) = (B - u(i-1, j+1) - u(i+1, j+1))/BS next i ' 'convergence judgment s = 0: s0 = 0: 'total initial value for i = 1 to M-1 s0 = s0 + ABS(u(i, j+1)) s = s + ABS(u(i, j+1)-uf(i, j+1)) next i s = s/s0 if s<=E then 65 next L ' JJ = 10*(j+1)*dt if JJ = int(JJ) then 69 goto 77 print #1, t = (j+1) * dt print #1, "u(x,"; print #1, using "#.#";t; print #1, ")"; for i = 0 to M step 10 print #1, using "###.###"; u(i, j+1); next i next j close END
次ã«ïŒäžå±± è£æšå å çã®è±èªè«æå·çã»ãããŒïŒãäŒããè±èªè«æå·çã®ããã®æè¡è±èªã®åºç€ãšå¿çšããšããé¡ç®ã§ïŒç¹ã«ã¢ãã¹ããšã¿ã€ãã«ã®æžãæ¹ã«çµã£ãïŒæè¡çãªè±èªã®æžãæ¹ãã¬ã¯ãã£ãŒããŠããã ããŸããïŒ
äžæ¹ïŒäžèšã®ãªã³ã¯å ã® 2. ã® Julia REPL èµ·åã«ã€ããŠã§ããïŒããã«ã€ããŠã¯å°ã éãèšå®ãããŠãããŸãïŒ
ã³ãã³ãããã³ãããã Julia ã䜿ãåã«ã¯äžèšãªã³ã¯å ã®éãã§è¯ãã®ã§ããïŒç§ã¯ã³ãã³ãããã³ããã§ã¯ãªã Windows Terminal ã䜿ã£ãŠããã®ã§ïŒç§ãšããŠã¯åºæ¥ãã° Windows Terminal ãã Julia ã䜿ãããããã§ãïŒ
ã®éšåã§ããïŒãã㯠Julia ã®ç°å¢å€æ°ã«ãªããŸãïŒ
ãã€ããã®ããŒãžã§ã³ããã Julia ãã€ã³ã¹ããŒã«ããæç¹ã§ç°å¢PATHãèªåã§ç»é²ãããããã«ãªã£ãŠãã(!?)ã®ã§ããïŒãã ç°å¢PATH ãèšå®ãããŠããªããªãïŒãJulia ç°å¢å€æ°ããšãã§æ€çŽ¢ããŠã¿ãŠãã ãã...
mac ã§ã®èšå®ã«é¢ããŠã¯ïŒç§ã®æ¹ã§èšäºã«ããŠããã®ã§æ¯éèŠãŠã¿ãŠãã ããâ macã®ç°å¢å€æ°PATHã®èšå®
.....ãšèããŠããŸããããã«ãããŸã®ç§ã«æéãè¶³ããŠããªã(æå¹æŽ»çšã§ããŠããªãå¯èœæ§ããã¡ãããã)ãšããäºãšã"Time is money" ãšããè«ºã®æå³åããæ§æ°ãªãããèªèã§ãããŸã§ã«ã¯æé·ãããã ãšãµãšæããæ¥ã§ãã£ãã
ãã vi = 0 ãšãªããã㪠i ãååšããïŒããªãã¡ããã¯ãã«ã®èŠçŽ ã®å°ãªããšãäžã€ã0ã§ããïŒãšãã«L1ãã«ã ãæå€§ã«ãªãããªãããšã確ããã蚌æãå®äºããã
vi = 0ãšãªã i ãkåååšãããšããïŒ0 < k < dïŒããã®ãšããæ®ã d - k åã®æ°ã«ã€ããŠããd-k 次å ãã¯ãã«ã®L2ãã«ã ã α ã§ãããšããæ¡ä»¶ã®ããšã§ãL1ãã«ã ãæå€§åãããããšãèãããšããã®ãšãã®L1ãã«ã 㯠αã»â(d-k) ãšãªãããã£ãŠãã¡ãã®ã»ããαã»âdãããå°ããã®ã§ãvi = 0 ãšãªããã㪠i ãååšãããšãã«L1ãã«ã ã¯æå€§ã«ã¯ãªãããªãã