사용 방법 01 커널을 고릅니다 JavaScript와 MATLAB / Octave는 로컬에서 실행되고, Python (Pyodide)와 R (webR)은 런타임 다운로드가 필요합니다.02 프롬프트에 입력하고 Enter를 누릅니다. Shift+Enter는 새 줄을 넣고, ↑/↓는 기록을 이동하며, Ctrl/Cmd+L은 지웁니다. 미완성 문장 — 열린 괄호, MATLAB ... 줄, :로 끝나는 Python 줄 — 은 프롬프트를 …로 바꾸고 Enter가 이어갑니다. 03 노트북에는 Cells로 전환합니다. 각 셀에는 자체 커널 선택기가 있어 JavaScript와 Python 셀이 한 문서에 함께 있을 수 있습니다. Ctrl+Enter는 셀 하나를 실행하고, Run above는 그 셀과 앞의 셀들을, Run all은 목록 전체를 실행합니다. 04 Vars 패널에서 데이터를 옮깁니다. Pull all은 세션 변수를 데이터 작업 공간으로 복사하고, Push all은 세션에 주입합니다 — 언어 사이의 유일한 다리입니다. 05 Figures 패널을 확인합니다. MATLAB과 JavaScript의 plot 출력은 SVG 또는 PNG로 다운로드되고, matplotlib 그림은 PNG 이미지로 도착합니다.
실행 예 MATLAB 커널에서 연립방정식을 풀고, 공유 작업 공간을 통해 JavaScript에서 검증합니다. 아래의 모든 출력은 같은 입력에서 재현됩니다.
Vars 패널에서 Pull all 을 누르면 작업 공간에 A(3×3 행렬 )와 b, x(미리보기 8 -11 -3과 2 3 -1을 가진 3-벡터)가 추가됩니다. JavaScript로 전환해 Push all 을 누르면 같은 값이 세션에 있습니다:
잔차는 0이 아닙니다 — 해는 배정밀도이므로 8.8817841970013e-16은 부동소수점이 도달할 수 있는 한계입니다.
#1 >> A = [2 1 -1; -3 -1 2; -2 1 2]; b = [8; -11; -3];
>> x = A\b
x =
2.0000
3.0000
-1.0000
>> norm(A*x - b)
ans = 8.8818e-16#2 > math.multiply(A, x)
[8, -11, -3]
> math.norm(math.subtract(math.multiply(A, x), b))
8.8817841970013e-16
각 커널의 정체
JavaScript 는 프로젝트 라이브러리가 주입된 mathjs 위에서 실행됩니다(math, cas, stats, fin, logic, graph, latex, currency, date, family, print, ws, plot). 다운로드가 없으며, 세션은 소스에서 다시 구축됩니다(함정 참고).
MATLAB / Octave 는 일반적인 부분집합을 위한 TypeScript 인터프리터입니다: 열 우선 double, 셀, 문자열, 제어 흐름, 약 120개의 내장 함수를 지원하며 struct, 클래스, 복소수, sparse, 정수형은 없습니다. 4 × 10⁷ 연산 또는 8초 예산 안에서 로컬로 실행됩니다.
**Python(Pyodide 0.28.3)**은 처음 사용할 때 약 12 MB를 내려받습니다. import는 패키지 로더를 작동시키고, matplotlib 그림은 캡처된 PNG로 반환되며, 가져온 numpy 배열과 pandas DataFrame은 행렬/벡터 변수와 테이블 변수가 됩니다.
**R(webR 0.6.0)**은 약 30 MB를 내려받고, 실행 사이에 webR의 베이스 R 전역 환경을 유지하며, 플롯을 반환하지 않습니다 — R에서는 텍스트를, Python에서는 matplotlib을 사용하세요.
기억할 제한
중단할 수 없습니다. 코드는 메인 스레드에서 동기적으로 실행됩니다 — Ctrl+C나 정지 버튼이 없습니다. 긴 작업은 나누고, 내부 예산이 있는 것은 MATLAB뿐입니다.
세션은 페이지와 함께 끝납니다. 트랜스크립트, 기록, 노트북 텍스트는 새로고침 후에도 남지만 세션 변수는 남지 않습니다. 작업 공간 변수만 유지됩니다(각 최대 20,000개 요소) — Vars 패널이 저장 버튼입니다.
처음 사용에는 네트워크가 필요합니다. Python과 R은 cdn.jsdelivr.net에서 가져옵니다. 다운로드에 실패하면 다시 시도할 수 있고, 성공하면 캐시됩니다. 하지 않는 일. MathWorks MATLAB도 패키지 관리자도 아닙니다: Toolbox, Simulink, struct, 복소수형, sparse형이 없고, Python은 Pyodide의 패키지 집합으로 제한되며, R은 그래픽을 반환하지 않습니다. 데이터는 데이터 작업 공간 으로 가져오세요. 코드 없는 행렬 작업에는 수학 도구 , 요약과 검정에는 통계 , 식 하나를 입력하려면 공학용 계산기 를 사용하세요.
JavaScript 세션은 해석되지 않고 스캔됩니다 최상위 let/const/var 선언과 단순한 name = … 대입만 수집됩니다. 두 가지 결과가 거의 모두를 걸립니다:
블록이나 함수 본문 안에서 처음 만들어진 변수는 세션에 들어가지 않습니다. if (true) { let hidden = 41; } 후에 typeof hidden은 undefined 를 읽습니다 — 아무 오류 줄도 경고하지 않습니다.
예외를 던진 실행은 아무것도 되쓰지 않으므로 오류 전에 계산된 변수는 사라집니다. let before = 1; throw new Error('boom')을 실행하고 boom 오류를 본 뒤 typeof before는 undefined 입니다. 최상위 let kept = 41은 여전히 kept + 1에 42 로 답합니다.
Python, R, MATLAB은 세션을 네이티브로 유지하므로 이는 JavaScript에만 해당합니다.
어디에 맞는가 다른 언어로 계산을 교차 검증하기 위처럼 MATLAB에서 풀고 공유 작업 공간을 통해 JavaScript에서 잔차를 다시 계산합니다: 두 구현이 8.8817841970013e-16까지 일치합니다. 코드를 남기려면 노트북을 JSON으로 내보내고(결과는 버려지며 다시 실행하면 재현됩니다), 한 언어의 셀을 네이티브 스크립트로 내보낼 수도 있습니다(notebook.js, notebook.m, notebook.py, notebook.R).
언어 사이에서 데이터 옮기기 Python에서 테이블을 정리한 뒤 Pull all로 작업 공간에 넣고 Push all로 R이나 MATLAB에 넘겨 다음 단계를 진행합니다 — 또는 데이터 작업 공간 에서 페이지를 넘어 변수를 유지합니다. 가져온 벡터는 통계 로 바로 들어가 요약과 검정에 쓰입니다.
개인정보 보호 코드, 콘솔 트랜스크립트, 변수는 브라우저에 남습니다. cdn.jsdelivr.net에서 가져오는 것은 Python과 R 런타임뿐입니다(한 번).
참고 자료
Pyodide, Pyodide 문서 , pyodide.org (访问日期:2026-10-01)— WebAssembly의 Python과 과학 패키지.
webR, webR 문서 , docs.r-wasm.org (访问日期:2026-10-01)— 브라우저의 R: 콘솔과 세션 의미론.
MathWorks, mldivide, \ , mathworks.com (访问日期:2026-10-01)— 백슬래시 연산자는 정방 선형계를 풉니다.
MDN Web Docs, let , developer.mozilla.org (访问日期:2026-10-01)— 세션 함정 뒤의 블록 스코프.
mathjs, 문서 , mathjs.org (访问日期:2026-10-01)— JavaScript 실행에 주입되는 라이브러리.
R Core Team, An Introduction to R , cran.r-project.org (访问日期:2026-10-01)— 베이스 R 객체와 세션.
本页计算器
精选工具,点开即用;小工具可直接试算,数值会带入完整计算器。