밴드갭이 0.2 eV 움직인다
분말 시료의 확산반사 스펙트럼에서 광학 밴드갭을 구한다. 측정한 것은 파장별 반사율이고, 밴드갭까지는 변환 두 번과 외삽 한 번을 거친다.
그 마지막 단계 — 직선을 어디서 어디까지 잡을 것인가 — 를 데이터가 정해주지 않는다. 절차만 바꿔가며 다섯 번 돌린다. 답이 몇 백 meV 움직인다. 그 폭이 오늘의 답이다.
실습 05에서는 요청하는 시점에 무엇을 고정할지를 배웠다. 이번 실습은 끝까지 고정할 수 없는 것이 남았을 때 그걸 어떻게 보고하는지를 배운다.
전체 흐름
관문의 역할이 이번 실습에서 바뀐다
| 관문이 하는 일 | |
|---|---|
| 실습 03 ~ 05 | 내 코드가 맞는지 확인한다 (통과 / 실패) |
| 실습 06 | 그럴듯한 절차 여러 개 중 어느 것을 믿을지 정해준다 |
오늘 다루는 사슬
R(λ) → Kubelka-Munk → Tauc 좌표 → 직선 외삽 → Eg
↑
여기에 선택이 있다
data/데이터설명.md를 먼저 읽는다.
특히 Kubelka-Munk가 성립하려면 세 가지가 필요하다 표를 본다 —
세 가지 다 눈으로 판정된다.
오늘 할 일
자부터 검사한다
답이 알려진 시료가 셋 있다. 하나는 파장 축용, 둘은 밴드갭용이다.
data/standard/holmium_filter.csv 의 흡수선 위치를 찾아줘. data/standard/인증값.md 의 인증값과 대조해서 표로 보여줘.
다섯 개가 다 ±1 nm 안에 들어와야 한다. 파장 축이 틀어져 있으면 그 뒤는 전부 무의미하다.
data/standard/ 의 TiO2_anatase.csv 와 CdS_powder.csv 로 Kubelka-Munk → Tauc → 직선 외삽 파이프라인을 만들어줘. 인증값은 data/standard/인증값.md 에 있다. results/표준검증.md 에 표를 남겨줘.
TiO₂ 아나타제는 간접, CdS는 직접이다. 어떤 절차는 한쪽에서만 맞는다. 한쪽만 맞으면 통과가 아니다.
일단 한 번 시켜본다
data/spectra/ 의 시료들에서 광학 밴드갭을 구해줘. data/시료목록.csv 와 데이터설명.md 를 먼저 읽어줘. 결과는 results/ 에 저장하고, AGENTS.md 에 적힌 대로 results/계산근거.md 도 남겨줘.
숫자가 나왔을 것이다. R²도 좋게 나왔을 것이다. 여기서 멈추지 않는다.
직선 구간을 어떻게 골랐나
결과를 따지기 전에 방법부터 듣는다. 이번 실습은 질문이 하나로 좁혀진다.
방금 그 결과를 어떻게 냈는지 단계별로 알려줘. 특히 — - Tauc 그래프에서 직선을 맞출 구간을 어떻게 정했어? 시작점과 끝점이 몇 eV 야? 그 점을 왜 골랐어? - n 을 2 로 했어, 1/2 로 했어? 그건 왜 그렇게 정했어? - 그 구간에 점이 몇 개 들어갔어? 각 단계마다 왜 그렇게 했는지도 한 줄씩 적어줘.
| 확인할 것 | 왜 |
|---|---|
| 구간의 시작·끝을 eV로 말했는가 | “선형 영역을 골랐다”는 답이 아니다 |
| n을 어디서 가져왔는가 | 데이터에서 나오는 값이 아니다 |
| 점이 몇 개인가 | 8개짜리 직선과 80개짜리 직선은 다르다 |
에이전트가 “자동으로 선형 구간을 찾았다”고 하면 되물어라. 무엇을 기준으로 찾았는지를 말할 수 없으면 그건 절차가 아니다.
절차를 바꿔가며 전부 돌린다
직선 구간을 고르는 방법은 여러 가지다. 다섯 개를 전부 돌린다.
직선 구간을 고르는 방법을 아래 다섯 가지로 바꿔가며 전부 돌려줘. 표준시료 2개와 본 시료 전부에 대해 각각. A. 세로축 최대값의 10 % ~ 40 % 인 구간 B. 세로축 최대값의 20 % ~ 50 % 인 구간 C. 흡수 개시점부터 위로 0.30 eV D. 흡수 개시점보다 0.20 eV 위에서부터 위로 0.60 eV E. 폭 0.35 eV 인 창을 옮겨가며 R² 가 가장 큰 자리 (흡수 개시점 = 세로축이 최대값의 5 % 를 넘어선 뒤 다시는 그 아래로 안 내려가는 지점) results/민감도.md 에 표를 남겨줘. | 시료 | 절차 | 구간 시작(eV) | 구간 끝(eV) | 점 수 | Eg | R² | 그리고 시료마다 Eg 의 최소~최대와 그 폭을 적어줘.
같은 데이터, 같은 코드, 같은 물질이다. 한 시료 안에서 답이 몇 백 meV 움직였을 것이다.
그 숫자는 이 다섯 개 중 하나다. 어느 것인지는 대개 안 적혀 있다.
관문이 절차를 고른다
표준시료 2개에 대한 다섯 절차의 결과를 인증값과 대조해줘. | 절차 | TiO2 결과 | 차이 | CdS 결과 | 차이 | 둘 다 ±0.10 인가 | 둘 다 통과한 절차만 골라서, 그 절차들로 본 시료의 Eg 범위를 다시 내줘. 관문 적용 전 범위와 후 범위를 나란히 보여줘.
몇 개는 탈락한다. 그리고 그중 하나는 한쪽 표준에서는 잘 맞았다. 직접천이 시료와 간접천이 시료를 둘 다 준 이유가 그것이다.
표준시료는 「내 답이 맞았는지」만 확인해 주는 게 아니다. 여러 그럴듯한 절차 중 어느 것을 믿을지를 정해준다. 표준이 없으면 다섯 개 다 그럴듯하고, 고를 근거가 없다.
관문으로도 안 줄어드는 것
n을 바꿔서 다시 돌린다. 하나만 바꿨는데 답이 크게 움직인다.
본 시료 전부에 대해 n=2 (직접) 와 n=1/2 (간접) 를 각각 가정해서 Eg 와 R² 를 나란히 표로 보여줘.
R²를 보면 한쪽이 더 높을 것이다. 그런데 —
각 시료에서 두 가정의 R² 차이가 얼마인지 계산해서, 차이가 작은 순으로 정렬해줘.
어떤 시료에서는 차이가 0.01밖에 안 난다. 잡음이 조금만 더 있었으면 뒤집혔다.
ZnO와 CdS가 직접이고 TiO₂가 간접인 것은 문헌에서 가져오는 값이다. 이 파일들 안에 없다. R²가 같은 답을 내면 그건 확인이지 근거가 아니다.
보고서에 직접천이를 가정했다. 근거는 ___를 반드시 쓴다.
절차들이 서로 안 맞는 시료
시료목록.csv의 appearance 열을 본다. 다 같지 않다.
S1_ZnO_powder 와 S3_ZnO_pellet 의 원시 반사율을 한 그래프에 겹쳐 그려줘. 그리고 두 시료에 대해 관문을 통과한 절차들의 Eg 를 나란히 표로 보여줘.
두 시료는 같은 물질이다. 파일 이름을 보면 알 수 있다.
| 볼 것 | 무엇이 보이나 |
|---|---|
| 원시 반사율 | 한쪽은 아무리 흡수해도 어느 값 아래로 안 내려간다 |
| 절차 간 편차 | 한 시료에서만 절차들이 서로 크게 어긋난다 |
정답을 몰라도 감지된다. 관문을 통과한 절차들이 어떤 시료에서만 서로 안 맞으면, 그 시료에서 방법의 전제가 깨진 것이다.
S4_CuO_powder 와 film_ZnO_transmission 도 원시 데이터를 그려줘. 각각 Kubelka-Munk 를 쓸 수 있는 시료인지 판단하고, 근거를 적어줘.
데이터설명.md의 「Kubelka-Munk가 성립하려면 세 가지가 필요하다」 표와 대조한다.
셋 다 눈으로 판정된다 — 계산 결과가 아니라 겉보기와 원시 그래프로 걸러낸다.
여기서 나온 숫자를 「그 시료의 밴드갭」이라고 보고하면 안 된다.
기기가 만드는 것, 분석이 만드는 것
모든 시료의 330~350 nm 구간을 확대해서 그려줘.
작은 계단이 있다. 340 nm의 램프 전환이다. 헤더에 적혀 있다. 흡수단이 아니다. 340 nm = 3.65 eV — 하필 이 근처에 갭이 있는 물질이 흔하다.
분석이 만드는 것절차 E 가 각 시료에서 고른 구간의 시작·끝 eV 와 R² 를 표로 보여줘.
R²가 0.999를 넘는데 밴드갭이 음수인 경우가 있다. 밴드갭 아래의 평평한 부분을 직선으로 잡았기 때문이다.
R²는 「이 구간이 직선이냐」만 답한다. 「맞는 구간이냐」는 답하지 않는다. 자동 기준은 그럴듯할수록 위험하다.
손으로 확인한다
에이전트 없이 한 번은 직접 본다
S2_TiO2_rutile.csv를 원시 반사율 그래프로만 그리게 한다
계산은 시키지 않는다. 그림만 받는다.
반사율이 뚝 떨어지기 시작하는 파장을 눈금으로 읽는다
hν = 1239.84 / λ 를 손으로 계산한다
그 값을 손으로 적고 사진을 찍어 제출한다. 에이전트가 낸 Eg와 비교하면 몇 백 meV 차이 날 것이다.
그건 틀린 게 아니다 — 눈으로 읽은 것은 흡수가 시작되는 곳이고, Tauc 외삽은 그것보다 낮은 곳을 가리킨다. 어느 쪽이 밴드갭인가?
제출
results/보고서.md
결론: [숫자] [단위] 불확실성: [값] — 노이즈에서 온 것인지 절차 선택에서 온 것인지 밝힐 것 적용 범위: 이 방법의 가정이 이 시료에서 성립하는가. 확인한 근거는?
첫 줄은 범위로 쓴다. S1의 광학 밴드갭 = 3.31 ~ 3.35 eV처럼.
둘째 줄이 이번 실습의 핵심이다. 범위의 출처를 셋으로 나눠서 쓴다 —
잡음 ±0.01, 절차 선택 ±0.02, n 가정 ±0.11
셋째 줄에는 이런 것이 들어간다 —
S3은 광택 펠릿이라 Kubelka-Munk가 성립하지 않는다. 값을 내지 않았다.
results/검증로그.md
| 채울 것 | |
|---|---|
| ① | 에이전트가 낸 주장 (02의 첫 결과, 단일 값) |
| ② | 내가 시킨 검증 |
| ③ | 결과 |
| ④ | 남은 의심 |
| ⑤ | 손 앵커 — 눈금으로 읽은 흡수 시작 파장과 hν (손글씨 + 사진) |
| ⑥ | 탈락시킨 절차와 그 이유 (관문 표에서 가져온다) |
| ⑦ | 값을 내지 않기로 한 시료와 그 근거 |
| ⑧ | 에이전트에게 맡기면 안 되는 단계 1개 + 이유 2줄 |
| ⑨ | 최종 결론 = ______ ~ ______ (근거: ______) |
다섯 절차 중 하나는 사람이 안 봐도 되게 만든 것이었다. 그게 어디서 무너졌나?
results/ 폴더 전체를 압축해서 제출한다.
막혔을 때
| 증상 | 해볼 것 |
|---|---|
| 반사율이 100 %를 넘는다 | 정상이다. Spectralon 기준이라 그렇다 |
| 관문에서 한 표준만 맞는다 | 그게 오늘의 발견이다. 표에 남기고 그 절차를 뺀다 |
| Tauc 그래프가 직선이 아니다 | 시료를 확인한다. 07로 간다 |
| Eg가 음수로 나온다 | 정상이다. 08의 두 번째 함정이다 |
| 절차마다 답이 다르다 | 정상이다. 그게 오늘의 주제다 |
| 에이전트가 문헌값(3.37 등)을 답으로 낸다 | AGENTS.md의 「문헌값을 답으로 쓰지 마라」를 다시 읽힌다 |
| 340 nm를 흡수단이라고 한다 | 헤더의 # Lamp change를 읽힌다 |
| 그림의 한글이 네모(□□□) | 그래프 한글 폰트를 Malgun Gothic으로 지정해줘 |
| 에이전트가 “맞습니다”만 한다 | 질문이 잘못됐다. “맞아?” 대신 “바꾸면?”으로 |
자유도는 파라미터가 아니라 절차 자체에 있다.
같은 절차 안에서 구간을 조금씩 움직이면 답은 거의 안 변한다. 절차를 바꾸면 0.2 eV가 움직인다. 그리고 어느 절차가 옳은지는 데이터가 말해주지 않는다 — 답이 알려진 시료를 하나 통과시켜 봐야 안다.
그렇게 걸러내고도 n 가정 하나가 끝까지 남는다. 그건 측정이 아니라 물질을 아는 사람이 정하는 것이고, 보고서에 그렇게 적어야 하는 것이다.
인공지능재료공학 · 실습 06 · 신소재공학부
데이터: 교육용으로 합성한 UV/VIS/NIR 확산반사 스펙트럼 — 실제 측정이 아니다