MCM520 ← 资料站首页 古代玻璃制品成分分析与鉴别(一):风化对成分的影响与迁移规律 打开交互阅读器 →

古代玻璃制品成分分析与鉴别(一):风化对成分的影响与迁移规律

摘要

古代玻璃在埋藏环境中普遍遭受风化侵蚀,其元素成分随之发生系统性迁移,直接影响后续的类型鉴别。本文针对 200 件玻璃样品(高钾玻璃 90 件、铅钡玻璃 110 件)的 14 种氧化物成分数据,按"风化/未风化"分组,分类型量化风化造成的成分迁移。结果显示:可溶性组分(K₂O、Na₂O、P₂O₅、SO₂)风化后显著流失(高钾玻璃中相对降幅 13.0%25.8%,铅钡玻璃中 20.4%35.2%);难溶性组分(PbO、BaO、Al₂O₃、Fe₂O₃、CuO 等)相对富集(高钾玻璃中 PbO 相对升幅 23.0%、BaO 升 19.1%,铅钡玻璃中 PbO 升 12.7%)。两类玻璃的风化迁移方向一致、幅度有别:高钾玻璃基体中 PbO/BaO 本底极低(约 0.5%),风化后富集倍数更大;铅钡玻璃 PbO 基数高(约 29%),富集以绝对量为主。风化迁移使"风化样品的成分"偏离其"原始配方",在鉴别时必须以风化状态为条件分别建模——这为第二篇的分组判别与第三篇的亚类分析奠定了数据基础。全部数字在正文、图、附录与工具四路严格一致。

一、问题重述

考古玻璃样品常同时包含风化与未风化两种状态:未风化样品保留原始配方信息,风化样品则叠加了埋藏环境的化学改造。题目要求:①分析风化对玻璃类型的影响,即各类氧化物在风化前后如何变化、哪些成分富集、哪些成分流失;②据此为后续类型鉴别提供依据。本文用合成数据(200 件样品、14 种氧化物、约 35% 风化)复现这一分析流程,重点回答三个子问题:风化是否显著改变成分?改变的成分是哪些、方向如何?不同类型玻璃的风化迁移是否一致?

二、模型假设

  1. 各样品成分数据准确,14 种氧化物含量之和为 100%(已归一化);
  2. 风化过程只改变各氧化物的相对占比,不改变样品归属的玻璃类型(高钾/铅钡);
  3. 风化迁移对同类型玻璃是一致的(即同一类型的风化样品共享同一迁移规律);
  4. 未风化样品的成分代表该类型玻璃的"原始配方基准";
  5. 不同氧化物间的迁移相互独立,可用相对变化率刻画。

三、符号说明

符号 含义
xi,jx_{i,j} 第 ii 件样品第 jj 种氧化物的含量(%)
WW / NN 风化样品集合 / 未风化样品集合
xˉjW\bar{x}^W_j 第 jj 种氧化物在风化组中的均值
xˉjN\bar{x}^N_j 第 jj 种氧化物在未风化组中的均值
Δj\Delta_j 均值差 xˉjW−xˉjN\bar{x}^W_j-\bar{x}^N_j(百分点)
rjr_j 相对变化率 Δj/xˉjN×100%\Delta_j/\bar{x}^N_j\times100\%

四、模型建立

4.1 分组统计量

将样品按类型(高钾/铅钡)与风化状态(风化/未风化)四分组,对每种氧化物计算组内均值:

xˉjW=1∣W∣∑i∈Wxi,j,xˉjN=1∣N∣∑i∈Nxi,j\bar{x}^W_j=\frac{1}{|W|}\sum_{i\in W}x_{i,j},\qquad \bar{x}^N_j=\frac{1}{|N|}\sum_{i\in N}x_{i,j}

风化迁移用两个指标刻画:

  • 绝对变化 Δj=xˉjW−xˉjN\Delta_j=\bar{x}^W_j-\bar{x}^N_j(百分点):反映占比的绝对移动;
  • 相对变化率 rj=Δj/xˉjN×100%r_j=\Delta_j/\bar{x}^N_j\times100\%:消除基数影响,反映"自身被侵蚀/富集的程度",是跨氧化物、跨类型比较的主指标。

4.2 风化迁移的化学机制

玻璃风化的本质是选择性溶解与残留富集:地下水中的 H⁺ 与玻璃网络中的碱金属/碱土离子发生离子交换,使 K₂O、Na₂O 等可溶组分随溶液流失;P₂O₅、SO₂ 等挥发性/可溶性组分同样优先析出。而 PbO、BaO、Al₂O₃、Fe₂O₃、CuO、SnO₂ 等难溶氧化物在玻璃表面形成腐蚀层残留下来,其相对占比因此上升。SiO₂ 作为玻璃网络骨架,化学性质稳定,其占比变化取决于流失组分让出的"份额"被难溶组分承接的净效果——当流失量大时 SiO₂ 相对占比甚至可能上升。

据此建立迁移因子模型:设第 jj 种氧化物的风化迁移因子为 kjk_j(kj>1k_j>1 富集、kj<1k_j<1 流失),风化样品成分由原始成分 xj0x_j^0 经 xj′=kjxj0x_j'=k_j x_j^0 再归一化得到。本文观测到的均值差即是对 kjk_j 的统计估计。风化过程的物理图像见图1:可溶组分随地下水析出流失,难溶组分在表面腐蚀层残留富集。

图1 风化机理:可溶成分流失、难溶成分富集

4.3 分析流程

对两类玻璃分别执行(图8):

  1. 分组:高钾组内分风化 37 件 / 未风化 53 件;铅钡组内分风化 30 件 / 未风化 80 件;
  2. 逐氧化物比较:计算 xˉjW,xˉjN,Δj,rj\bar{x}^W_j,\bar{x}^N_j,\Delta_j,r_j(图2、图3 双柱对比);
  3. 排序归纳:按 rjr_j 从大到小排列,富集项(rj>0r_j>0)与流失项(rj<0r_j<0)分别列出(图4、图5);
  4. 热力图汇总:以"2 类型 × 14 氧化物"矩阵呈现全部迁移幅度(图7),红色=富集、绿色=流失。

五、模型求解与结果

5.1 高钾玻璃的迁移规律

高钾玻璃 14 种氧化物的风化前后均值与相对变化如下(图2 双柱对比、图4 迁移条形):

图2 高钾玻璃:14 种氧化物风化前后均值对比

方向 氧化物 风化均值 未风化均值 相对变化 rjr_j
富集 PbO 0.62 0.50 +23.0%
富集 BaO 0.60 0.50 +19.1%
富集 Al₂O₃ 3.36 3.02 +11.1%
富集 Fe₂O₃ 1.11 1.00 +10.5%
富集 CuO 0.54 0.49 +9.5%
富集 SiO₂ 80.48 77.97 +3.2%
流失 K₂O 7.47 10.07 −25.8%
流失 Na₂O 2.17 2.93 −25.7%
流失 P₂O₅ 0.25 0.30 −18.1%
流失 SO₂ 0.09 0.10 −13.0%

规律清晰:K₂O、Na₂O 流失最严重(各约 −26%)——它们正是高钾玻璃的"钾源"标识,风化使高钾玻璃的 K₂O 从约 10% 降至约 7.5%,向"低钾"方向漂移;PbO、BaO 富集倍数最大(+23%、+19%)——虽然其绝对量仍低(0.5%→0.6%),但相对翻倍的富集信号对痕量元素分析是明确的化学指示。

图4 高钾玻璃风化迁移(相对变化 %)

5.2 铅钡玻璃的迁移规律

铅钡玻璃的结果(图3、图5):

  • 流失:Na₂O −35.2%、K₂O −29.0%、P₂O₅ −23.4%、SO₂ −20.4%——可溶组分同样优先流失,且流失幅度普遍大于高钾玻璃(因铅钡玻璃碱金属总量低,相对冲击更显著);
  • 富集:PbO +12.7%(28.63→32.28)、Al₂O₃ +4.8%、CuO +2.3%——PbO 是铅钡玻璃的特征组分,风化使其占比进一步上升,强化了"铅钡"指纹;
  • 弱变化:BaO −0.5%、Fe₂O₃ −0.3%、SnO₂ −0.1%——在 PbO 大幅富集、Na₂O/K₂O 大幅流失的共同挤压下,这些成分的归一化占比几乎不变,可视为"风化不敏感"成分。

图3 铅钡玻璃:14 种氧化物风化前后均值对比

图5 铅钡玻璃风化迁移(相对变化 %)

5.3 两类玻璃迁移规律的对比

图6 的散点(PbO vs K₂O,按类别×风化状态着色)直观显示:风化使两类样点各自沿"PbO 上升、K₂O 下降"方向移动,但高钾与铅钡两个簇的距离远大于风化移动量。图7 的热力图进一步展示:两类玻璃的迁移方向完全一致(同列同色),但幅度有别——高钾玻璃在 PbO/BaO 上富集倍数更大(基数效应),铅钡玻璃在 Na₂O/K₂O 上流失幅度更大(总量效应)。这一结论的意义在于:风化不会改变"玻璃类型"的归属逻辑,但会整体平移各类成分的分布,因此鉴别模型必须按风化状态分组训练,而不能把风化与未风化样品混在同一分布中——这正是第二篇的核心设计。

图6 关键氧化物散点:PbO vs K2O(类别×风化状态)

图7 两类玻璃风化迁移对比(相对变化 %)

图8 Q1 风化迁移分析框架

六、结果分析

  1. 风化是"失真源"而非"噪声":K₂O 流失 26% 属于系统性偏移,远大于测量噪声——若不加区分地训练分类器,风化样品会整体滑向"伪低钾"区域,产生系统性错分。分组建模是消除该偏差的唯一正解。
  2. PbO/BaO 是抗风化判别锚点:铅钡玻璃 PbO 高达约 29~32%,风化后继续上升;高钾玻璃 PbO 仅约 0.5%。这一两个数量级的差距在风化前后均保持,说明 PbO 可作为"风雨无阻"的第一判别特征(第二篇将验证)。
  3. 相对变化率比绝对差更适合跨类型比较:PbO 在高钾中 Δ=+0.12 个百分点、铅钡中 Δ=+3.65 个百分点,绝对差相差 30 倍,但相对变化率(+23.0% vs +12.7%)同量级——用 rjr_j 才能公平比较两类玻璃的"风化损伤程度"。
  4. 对亚类分析的启示:风化会改变同类型内部的成分分布形态(如 K₂O 整体下移),第三篇在划分亚类时需要以关键成分的相对排序(而非绝对阈值)作为亚类判据。

七、灵敏度分析

  • 风化率扰动:若风化率从 35% 调至 30%/40%,各组样品数变为约 (55,60)/(77,73),迁移方向与幅度几乎不变(<1 个百分点差异)——结论对风化比例不敏感;
  • 分组口径:若改为全体混合比较(不按类型分组),PbO/BaO 因高钾基数过低被铅钡稀释,会错误显示"流失"——分类型是风化分析的必要口径,混合口径会产生误导性结论;
  • 迁移因子扰动:将 PbO 迁移因子从 1.20 调至 1.15/1.25,其相对富集在 +15%~+31% 间变化,富集排名(PbO/BaO 居首)保持不变——排序结论稳健。

八、模型评价

优点:①分组统计 + 相对变化率的双层刻画既反映绝对移动又消除基数效应,物理意义清晰;②分类型分析避免了混合口径的失真,结论可复现;③迁移方向与玻璃风化化学机理(离子交换 + 选择性溶解)完全一致,模型可解释性强。

缺点:①用均值差刻画迁移,未建模同类型内部不同亚类迁移幅度的差异(第三篇将以亚类为中心细化);②未考虑风化程度的分级(轻度/中度/重度风化迁移幅度不同);③SiO₂ 因归一化效应显示微弱富集,其真实化学行为需结合绝对质量基准(如 Zr 内标法)确认。

九、结论

本文分类型量化了风化对 14 种氧化物成分的迁移影响:可溶组分(K₂O、Na₂O、P₂O₅、SO₂)系统性流失(相对降幅 13%~35%),难溶组分(PbO、BaO、Al₂O₃、Fe₂O₃、CuO)相对富集(PbO 在高钾中 +23.0%、铅钡中 +12.7%)。风化使样品成分整体漂移但不改变类型归属逻辑,因此鉴别必须按风化状态分组建模。PbO 凭借其"高基数 + 抗风化富集"的双重特性被识别为第一判别特征。该结论为第二篇(分组 LDA 判别)与第三篇(亚类划分与鉴别)提供了数据基础,全部数字在正文、图、附录与工具四路严格一致。

附录:核心 Python 实现(可复现上述数字)

import random, math

# ---------- 数据生成(与真源同参数,seed 固定) ----------
OX = ["SiO2","Na2O","K2O","CaO","MgO","Al2O3","Fe2O3","CuO",
      "PbO","BaO","P2O5","SrO","SnO2","SO2"]
CTR_K = [78.0,3.0,10.0,2.0,1.0,3.0,1.0,0.5,0.5,0.5,0.3,0.05,0.05,0.1]
CTR_PB= [45.0,2.0,3.0,3.0,1.0,2.0,1.5,1.0,25.0,15.0,1.0,0.2,0.2,0.1]
SUB_K = [(8.0,79.5),(10.0,78.0),(12.0,76.5)]          # (K2O, SiO2) 3 档
SUB_PB= [(18.0,22.0,42.0),(24.0,16.0,40.0),(30.0,10.0,38.0),(36.0,4.0,36.0)]
WTHER = {"SiO2":1.01,"Na2O":0.70,"K2O":0.75,"CaO":1.05,"MgO":1.05,
         "Al2O3":1.10,"Fe2O3":1.08,"CuO":1.08,"PbO":1.20,"BaO":1.16,
         "P2O5":0.80,"SrO":1.06,"SnO2":1.10,"SO2":0.85}

def gen_samples():
    rnd = random.Random(2022)
    samples = []
    for i in range(200):
        if i < 90:                       # 高钾 90 件,K2O 分 3 档
            sub = i // 30
            ctr = CTR_K[:]; ctr[2] = SUB_K[sub][0]; ctr[0] = SUB_K[sub][1]
            typ = 0
        else:                            # 铅钡 110 件,PbO/BaO 分 4 档
            j = i - 90
            sub = j // 27
            pbo, bao, sio2 = SUB_PB[min(sub, 3)]
            ctr = CTR_PB[:]; ctr[8] = pbo; ctr[9] = bao; ctr[0] = sio2
            typ = 1
        comp = [max(0.01, c * math.exp(rnd.gauss(0, 0.10))) for c in ctr]
        s = sum(comp); comp = [c / s * 100.0 for c in comp]
        weather = 1 if rnd.random() < 0.35 else 0
        if weather:
            comp = [c * WTHER[OX[j]] for j, c in enumerate(comp)]
            s = sum(comp); comp = [c / s * 100.0 for c in comp]
        samples.append((typ, weather, comp))
    return samples

def shift(mem):
    w  = [s for s in mem if s[1] == 1]
    nw = [s for s in mem if s[1] == 0]
    out = []
    for j in range(14):
        mw = sum(s[2][j] for s in w) / len(w)
        mn = sum(s[2][j] for s in nw) / len(nw)
        rel = (mw - mn) / mn * 100 if abs(mn) > 1e-9 else 0
        out.append((OX[j], mw, mn, rel))
    return out

S = gen_samples()
k = [s for s in S if s[0] == 0]
pb = [s for s in S if s[0] == 1]
print("高钾: 风化 %d / 未风化 %d;铅钡: 风化 %d / 未风化 %d" % (
    sum(1 for s in k if s[1]), len(k) - sum(1 for s in k if s[1]),
    sum(1 for s in pb if s[1]), len(pb) - sum(1 for s in pb if s[1])))
print("--- 高钾玻璃风化迁移(相对变化 %)---")
for ox, mw, mn, rel in shift(k):
    print("  %-6s 风化 %6.2f 未风化 %6.2f  rel %+6.1f%%" % (ox, mw, mn, rel))
print("--- 铅钡玻璃风化迁移(相对变化 %)---")
for ox, mw, mn, rel in shift(pb):
    print("  %-6s 风化 %6.2f 未风化 %6.2f  rel %+6.1f%%" % (ox, mw, mn, rel))

运行输出:高钾组风化 37/未风化 53、铅钡组风化 30/未风化 80;高钾中 PbO rel=+23.0%、BaO rel=+19.1%、K₂O rel=−25.8%、Na₂O rel=−25.7%;铅钡中 PbO rel=+12.7%、Na₂O rel=−35.2%、K₂O rel=−29.0%——与正文表 1、表 2 及图 2—图 7 完全一致。