根据下面B站的教程,计算腐蚀电位和腐蚀电流。为了计算方便,使用matlab求解。
如何从电化学测试所得的原始数据得到Tafel曲线以及如何用外推法求得自腐蚀电位和自腐蚀电流密度
Matlab 函数如下
function [E_corr, Log_I_corr] = E_I_corr(potential, logi)
% 获取logi最小值时对应的potential数值
[~, idx] = min(logi);
Min_potential = potential(idx);
% 获取YangJi_data数据
YangJi_idx = find(potential >= Min_potential + 0.06 & potential <= Min_potential + 0.12);
YangJi_potential = potential(YangJi_idx);
YangJi_logi = logi(YangJi_idx);
% 获取YinJi_data数据
YinJi_idx = find(potential >= Min_potential - 0.12 & potential <= Min_potential - 0.06);
YinJi_potential = potential(YinJi_idx);
YinJi_logi = logi(YinJi_idx);
% 最小二乘法线性拟合YangJi_data
YangJi_fit = polyfit(YangJi_potential, YangJi_logi, 1);
YangJi_fit_func = @(x) YangJi_fit(1) * x + YangJi_fit(2);
YangJi_R2 = calcR2(YangJi_potential, YangJi_logi, YangJi_fit_func);
% 最小二乘法线性拟合YinJi_data
YinJi_fit = polyfit(YinJi_potential, YinJi_logi, 1);
YinJi_fit_func = @(x) YinJi_fit(1) * x + YinJi_fit(2);
YinJi_R2 = calcR2(YinJi_potential, YinJi_logi, YinJi_fit_func);
% 打印拟合函数和R2
fprintf('阳极区间拟合函数: y = %.4fx + %.4f, R² = %.4f\n', YangJi_fit(1), YangJi_fit(2), YangJi_R2);
fprintf('阴极区间拟合函数: y = %.4fx + %.4f, R² = %.4f\n', YinJi_fit(1), YinJi_fit(2), YinJi_R2);
% 计算两个拟合直线的交点
E_corr = (YinJi_fit(2) - YangJi_fit(2)) / (YangJi_fit(1) - YinJi_fit(1));
Log_I_corr = YangJi_fit_func(E_corr);
fprintf('两个拟合直线交点为(%.4f,%.4f)\n', E_corr,Log_I_corr);
fprintf('E_corr = %.4f V\n', E_corr);
fprintf('I_corr = %.9f mA\n', 10^(Log_I_corr)*1000);
end
function R2 = calcR2(x, y, fit_func)
y_fit = fit_func(x);
SS_res = sum((y - y_fit) .^ 2);
SS_tot = sum((y - mean(y)) .^ 2);
R2 = 1 - (SS_res / SS_tot);
end