Matlab使用lsqcurvefit函数拟合已知函数方程组求解常数项(求解金属离子多组分竞争吸附中的吸附常数)

前排观看提示:非数学专业,丑逼工科男一只,写的辣鸡勿喷(但凡数值分析课好好听了,我就不会来写这个博客了/(ㄒoㄒ)/~~)

问题

XXX材料吸附多组分重金属离子(同时吸附5种离子),拟合以下扩展的freundlish方程(方程本身是前人总结得出),求解qm1~ qm5,KL1~ KL5。
不太会LaTeX,见谅

数据

加粗样式
(这里图片中数据给大家解释一下,这里的Ce就是下文代码中的DATAx,qe就是下文中Datay,而且下文中的代码中并未放置DATAx的数据需要输入上方图片中的数据。)

代码(Matlab)

DATAy=[0	66.63833	131.71	285.57667	457.38667	437.6911133	398.3	509.53333	389.76667	467.66667
0	38.22278	61.01556	175.27778	281.40222	274.17333	333.52722	286.85611	367.20167	355.48889
0	33.59611	43.53056	116.43444	223.55556	372.85333	416.96222	456.35444	498.03	501
0	1.50278	15.81389	56.50278	94.17889	106.36667	186.28889	187.46111	179.18333	160.88889
0	0	9.44944	52.52556	52.92444	74.87667	82.93111	98.71889	122.44	99.52778];
DATA=[1011.904942	11571.57123	10705.0398	4865.864951	2619.395147	0.017338578	0.001000206	0.001504976	0.001007418	0.001005335];%这里的DATA是指一开始放入的初始解,也就是输入的初值(初始值对拟合结果的影响很大)。
    xdata1=DATAx(1:5,:)';
    ydata1=DATAy(1:5,:)';
    x01=DATA(1,:);
    x1=lsqcurvefit(@myfun,x01,xdata1,ydata1,[zeros(1,5),0.001.*ones(1,5)],[50000.*ones(1,5),0.01.*ones(1,5)]);
    KTNPs=x1';
    R2TNPS=(1-(sum((myfun(x1,xdata1)-ydata1).^2)./sum((ydata1-mean(ydata1)).^2)))';
function y=myfun(x,xdata)
fun1=(x(1)*x(6)*xdata(:,1))./(1+x(6)*xdata(:,1)+x(7)*xdata(:,2)+x(8)*xdata(:,3)+x(9)*xdata(:,4)+x(10)*xdata(:,5));
fun2=(x(2)*x(7)*xdata(:,2))./(1+x(6)*xdata(:,1)+x(7)*xdata(:,2)+x(8)*xdata(:,3)+x(9)*xdata(:,4)+x(10)*xdata(:,5));
fun3=(x(3)*x(8)*xdata(:,3))./(1+x(6)*xdata(:,1)+x(7)*xdata(:,2)+x(8)*xdata(:,3)+x(9)*xdata(:,4)+x(10)*xdata(:,5));
fun4=(x(4)*x(9)*xdata(:,4))./(1+x(6)*xdata(:,1)+x(7)*xdata(:,2)+x(8)*xdata(:,3)+x(9)*xdata(:,4)+x(10)*xdata(:,5));
fun5=(x(5)*x(10)*xdata(:,5))./(1+x(6)*xdata(:,1)+x(7)*xdata(:,2)+x(8)*xdata(:,3)+x(9)*xdata(:,4)+x(10)*xdata(:,5));
y=[fun1,fun2,fun3,fun4,fun5];
end

结果

在这里插入图片描述
哦豁,下班淦饭。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨杨杨杨杨齐家

孩子想喝冰红茶/(ㄒoㄒ)/~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值