为什么我的代码发现的第二个十字路口与线和曲线不是第一吗?

21日视图(30天)
我试图找到一个非常复杂的曲线的交点方程与线平行轴,但Matlab给我一个结果适用于第二个十字路口。我需要第一个。
为更好地理解也包括情节代码。红色线应达到并停止在第一个十字路口(pH = 6.4没有第二个pH = 13, 38)。我做错了什么?
哦,是的,我需要一个确切的价值坐标的第一个十字路口,也可以看到图形解决方案。
这里是一个兆瓦:
clc;
关闭所有;
%有输入常数
cP = 0.05;
cN = 0.05;
没有发生= 0.005;
logb0 = 2.88;
logb1 = 1.17;
logb2 = 4.85;
logb3 = 2.58;
logKs1 = -12.6;
pKa1 = -2.143;
pKa2 = -7.205;
pKa3 = -12.34;
pKb1NH3 = -4.753355133;
%有一系列的轴(0 - 14)
pH = 0:0.01:14;
%有计算cH2PO4 cHPO4 cPO4,他们需要为最终计算曲线方程(他们是最终的变量曲线方程和依赖pH值)
pKa1 Ka1 =权力(10日);
pKa2 Ka2 =权力(10日);
pKa3卡=权力(10日);
cH2PO4 = cP。* Ka1。*(权力(ph)) ^(2) /((电力(ph)。^ (3)) + Ka1。*(电力(ph)。^ (2)) + Ka1。* Ka2。*(电力(ph)。^ (1) + Ka1。* Ka2。*卡);
cHPO4 = cP。* * Ka2 Ka1。*电源(10,ph)。/((电力(ph)。^ (3)) + Ka1。*(电力(ph)。^ (2)) + Ka1。* Ka2。*(电力(ph)。^ (1) + Ka1。* Ka2。*卡);
cPO4 = cP。* * Ka2 Ka1。* Ka3. /((电力(ph)。^ (3)) + Ka1。*(电力(ph)。^ (2)) + Ka1。* Ka2。*(电力(ph)。^ (1) + Ka1。* Ka2。*卡);
%计算cNH4,它必须为最终计算曲线方程(这是最终的曲线方程的变量也取决于pH值)
pOH = 14-pH;
pKb1NH3 Kb1 =权力(10日);
cNH4 = cN。* Kb1. /(权力(poh) + Kb1);
%有一些偏计算最终的曲线方程
logb0 b0 =权力(10日);
logb1 b1 =权力(10日);
logb2 b2 =权力(10日);
logb3 b3 =权力(10日);
logKs1 Ks1 =权力(10日);
pH-14寇=权力(10日);
%这是最后的曲线方程
logcNP = Ks1. / (cPO4 * cNH4)。* (1 + b1。* cH2PO4 + b0。* cHPO4 + b2。* cPO4 + b3 *正);
%我试图计算曲线的交点y值为0.005以上(发生的代码)。
crossectionY =没有发生
crossectionY = 0.0050
[crossectionY, indexAtCrossectionY] = min (abs (logcNP-crossectionY));
crossectionX = pH值(indexAtCrossectionY (1))
crossectionX = 13.3800
%这是最后的情节曲线方程计算(黑色)和交叉着红色的线
logcNP semilogy (pH值,“- - -”,“颜色”,“k”,“MarkerFaceColor”,' w ',“MarkerEdgeColor”,“米”);
盒子;
持有;
情节([0 crossectionX],(没有发生发生),“- - -”,“颜色”,“米”,“线宽”,0.5);
盒子;
持有;
轴([0 14 0.000000000000000001 - 1000000000000000000]);
包含(“pH值(-)”);
ylabel (“c{(摩尔/ dm ^ {3})}”);
广场;
网格;
;
盒子;
持有;
比你的答案。:-)

接受的答案

明星黾
明星黾 2023年5月14日22:50
看看行oif copde我做你想做的事——补充道
%有输入常数
cP = 0.05;
cN = 0.05;
没有发生= 0.005;
logb0 = 2.88;
logb1 = 1.17;
logb2 = 4.85;
logb3 = 2.58;
logKs1 = -12.6;
pKa1 = -2.143;
pKa2 = -7.205;
pKa3 = -12.34;
pKb1NH3 = -4.753355133;
%有一系列的轴(0 - 14)
pH = 0:0.01:14;
%有计算cH2PO4 cHPO4 cPO4,他们需要为最终计算曲线方程(他们是最终的变量曲线方程和依赖pH值)
pKa1 Ka1 =权力(10日);
pKa2 Ka2 =权力(10日);
pKa3卡=权力(10日);
cH2PO4 = cP。* Ka1。*(权力(ph)) ^(2) /((电力(ph)。^ (3)) + Ka1。*(电力(ph)。^ (2)) + Ka1。* Ka2。*(电力(ph)。^ (1) + Ka1。* Ka2。*卡);
cHPO4 = cP。* * Ka2 Ka1。*电源(10,ph)。/((电力(ph)。^ (3)) + Ka1。*(电力(ph)。^ (2)) + Ka1。* Ka2。*(电力(ph)。^ (1) + Ka1。* Ka2。*卡);
cPO4 = cP。* * Ka2 Ka1。* Ka3. /((电力(ph)。^ (3)) + Ka1。*(电力(ph)。^ (2)) + Ka1。* Ka2。*(电力(ph)。^ (1) + Ka1。* Ka2。*卡);
%计算cNH4,它必须为最终计算曲线方程(这是最终的曲线方程的变量也取决于pH值)
pOH = 14-pH;
pKb1NH3 Kb1 =权力(10日);
cNH4 = cN。* Kb1. /(权力(poh) + Kb1);
%有一些偏计算最终的曲线方程
logb0 b0 =权力(10日);
logb1 b1 =权力(10日);
logb2 b2 =权力(10日);
logb3 b3 =权力(10日);
logKs1 Ks1 =权力(10日);
pH-14寇=权力(10日);
%这是最后的曲线方程
logcNP = Ks1. / (cPO4 * cNH4)。* (1 + b1。* cH2PO4 + b0。* cHPO4 + b2。* cPO4 + b3 *正);
%我试图计算横截面曲线的y值为0.005以上(发生的代码)。
crossectionY =没有发生
crossectionY = 0.0050
[crossectionY, indexAtCrossectionY] = min (abs (logcNP-crossectionY));
crossectionX = pH值(indexAtCrossectionY (1))
crossectionX = 13.3800
xcidx =找到(diff(签署(logcNP - 0.005)));%补充道:近似穿越的dices logcNP 0.005
k = 1:元素个数(xcidx)
idxrng = max (1, xcidx (k) 1): min(元素个数(pH) xcidx (k) + 1);%补充道:指数范围内插
pHx (k) = interp1 (logcNP (idxrng), pH值(idxrng), 0.005);%补充道:“pH”的值为“logcNP = 0.005”
结束
pHx
pHx = 1×2
6.3537 - 13.3819
%这是最后的情节曲线方程(黑色)和计算crossection着红色的线
logcNP semilogy (pH值,“- - -”,“颜色”,“k”,“MarkerFaceColor”,' w ',“MarkerEdgeColor”,“米”);
盒子;
持有;
情节([0 crossectionX],(没有发生发生),“- - -”,“颜色”,“米”,“线宽”,0.5);
情节(pHx的(大小(pHx)) * 0.005,“sc”,“MarkerSize”,10)%补充说:情节青色广场交集点
盒子;
持有;
轴([0 14 0.000000000000000001 - 1000000000000000000]);
包含(“pH值(-)”);
ylabel (“c{(摩尔/ dm ^ {3})}”);
广场;
网格;
;
盒子;
持有;

更多的答案(0)

类别

找到更多的在数学帮助中心文件交换

s manbetx 845


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!