转变区域用tanh函数拟合结果画出来是一维线性函数,为什么?
技术分享
发布于 2025-07-15 11:45:34
查看 1过去349天
问题现象

解决方法
由于tanh的函数特性、示例数据中的数据点和代码中的函数参数影响,需要通过调参或改动数据等方式再拟合。
修改startpt=[1e-8, minimum(data[13:28,1]),0,-0.05])参数为1e-7
using TyBase
using TyPlot
using TyCurveFitting
data=load("single_transition.txt")
ft = fittype("k*tanh(2*(x-b)*pi/a)+c",independent="x",coefficients=["a","b","c","k"])
opt = fitoptions(ft;lb=[0,1.70e-5,-Inf,-Inf],ub=[Inf,1.80e-5,Inf,0],startpt=[1e-7, minimum(data[13:28,1]),0,-0.05])
curve2 = fit(ft, data[13:28,1], data[13:28,2]; options=opt)
figure("transition拟合")
plot(data[13:28,1], data[13:28,2], "o")
hold("on")
xlabel("x pos/m")
ylabel("magnetization")
plotfit(curve2, "b")
hold("off")

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境