A 88. és 89. példában használható függvénydefiníciók:

fH4(cS,cB,Kd,Kv):=
  -log(find_root(
    H^3+(cB+Kd)*H^2-(Kv+Kd*cS)*H-Kd*Kv=0,H,0,cS+sqrt(Kv)
  ))/log(10.0);
fH5(cS,cB,Kd):=
  -log(find_root(
    H^2+Kd*H-Kd*cS=0,H,0,cS
  ))/log(10.0);
fH6(cS,cB,Kd):=-log(sqrt(Kd*cS))/log(10.0);

A 88. példa megoldása:

wxplot2d([fH4(c,0,6.3e-5,1.74e-14),fH5(c,0,6.3e-5),fH6(c,0,6.3e-5)],[c,1e-10,0.3],logx,
  [style,[lines,2,black],[lines,1,blue],[lines,1,red]],[grid2d,true],
  [legend,"(4) pontos pH","(5) közelítés másodfokú egyenlettel","(6) gyökös közelítés"],
  [xlabel,"analitikai koncentráció (M)"],[ylabel,"számolt pH-értékek"]);

A 89. példa megoldása (egyszerűen és elegánsan is):

fpprintprec:3$
wxplot2d([fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5),
  fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5)],[c,1e-10,0.3],logx,
  [style,[lines,2,blue],[lines,2,red]],[grid2d,true],
  [legend,"(4) – (5)","(4) – (6)"],
  [xlabel,"analitikai koncentráció (M)"],[ylabel,"a pH számolt eltérése"]);
results:matrix(["ΔpH",0.002,0.01,0.1,0.3],["c5/M",0,0,0,0],["c6/M",0,0,0,0]);
"egyszerű:";
results[2][2]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.002,c,1e-14,1.0)$
results[3][2]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.002,c,1e-14,1.0)$
results[2][3]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.01,c,1e-14,1.0)$
results[3][3]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.01,c,1e-14,1.0)$
results[2][4]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.1,c,1e-14,1.0)$
results[3][4]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.1,c,1e-14,1.0)$
results[2][5]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.3,c,1e-14,1.0)$
results[3][5]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.3,c,1e-14,1.0)$
results;
results:matrix(["ΔpH",0.002,0.01,0.1,0.3],["c5/M",0,0,0,0],["c6/M",0,0,0,0]);
"elegáns:";
for i:2 thru 5 step 1 do (
  results[2][i]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=results[1][i],c,1e-14,1.0),
  results[3][i]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=results[1][i],c,1e-14,1.0)
)$
results;

A 90. példa megoldása (,[pdf_file,"outplot"] vagy terminal=pdf,file_name="outdraw",):

load(implicit_plot);load(draw);ratprint:false$

wximplicit_plot([10^(-pc)=10^(-pH),10^(-pc)=10^(-pH)-1.74e-14/10^(-pH)],[pc,5,9],[pH,5,8],
  [style,[lines,1,blue],[lines,2,red]],[grid2d,true],[gnuplot_preamble,"set key top left"],
  [legend,"c=[H^+]","c=[H^+]–K_v/[H^+]"],
  [xlabel,"–log(c/M)"],[ylabel,"pH"]);

wxdraw2d(
  grid=true,
  user_preamble="set key top left",
  xlabel = "–log(c/M)",
  ylabel = "pH",
  line_width=2,
  color=blue,key="c=[H^+]",
  implicit(10^(-pc)=10^(-pH),pc,5,10,pH,5,8),
  color=red,key="c=[H^+]–K_v/[H^+]",
  implicit(10^(-pc)=10^(-pH)-1.74e-14/10^(-pH),pc,5,10,pH,5,8));

A 91. és 92. példában használható függvénydefiníciók:

pHprecise(c,Kv):=-log(find_root(c-H+Kv/H=0,H,1e-15,c+sqrt(Kv)))/log(10.0);
pHapprox(c):=-log(c)/log(10.0);

A 91. példa megoldása:

Kv:1.74e-14$fpprintprec:4$
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.01,c,1e-14,1.0)$
sconcat("(a) ",pHprecise(cact,Kv),"-nál kisebb pH alatt.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.1,c,1e-14,1.0)$
sconcat("(b) ",pHprecise(cact,Kv),"-nál kisebb pH alatt.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=1.0,c,1e-14,1.0)$
sconcat("(c) ",pHprecise(cact,Kv),"-nél nagyobb pH-nál.");

A 92. példa megoldása:

Kv:1.74e-14$fpprintprec:2$
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.01,c,1e-14,1.0)$
sconcat("(a) ",cact," M-nál nagyobb analitikai koncentrációknál.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.1,c,1e-14,1.0)$
sconcat("(b) ",cact," M-nál nagyobb analitikai koncentrációknál.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=1.0,c,1e-14,1.0)$
sconcat("(c) ",cact," M-nál kisebb analitikai koncentrációknál.");

A 94. példa megoldása:

load(implicit_plot);ratprint:false$

Mrsalt:159.6086;Mrsaltwithwater:249.685;
eq0:m/100=Ms/Msw*x/(58+x);
solve(eq0,x);
wxplot2d(58*Mrsaltwithwater*m/(100*Mrsalt-Mrsaltwithwater*m),[m,0,100],[y,1,1e4],logy,
  [style,[lines,2,blue]],[grid2d,true],
  [legend,""],
  [xlabel,"m%/%"],[ylabel,"hozzáadott kristályos só tömege (g)"]);
wximplicit_plot(m/100=Mrsalt/Mrsaltwithwater*x/(58+x),[m,0,100],[x,1,1e4],logy,
  [style,[lines,1,blue]],[grid2d,true],[gnuplot_preamble,"set key top left"],
  [legend,""],
  [xlabel,"m%/%"],[ylabel,"hozzáadott kristályos só tömege (g)"]);
wxdraw2d(
  grid=true,
  logy=true,
  xlabel = "m%/%",
  ylabel = "hozzáadott kristályos só tömege (g)",
  color=blue,key="",line_width=2,
  implicit(m/100=Mrsalt/Mrsaltwithwater*x/(58+x),m,0,100,x,1,1e4));

A 95. példa megoldása:

eqHI:K=HI^2/(n-HI/2)/(0.3-HI/2);
solve(eqHI,HI);
define(fHI(K,n),rhs(%[1]));
eqI2:K=(2*(0.3-I2))^2/(n-(0.3-I2))/I2;
solve(eqI2,I2);
define(fI2(K,n),rhs(%[2]));

wxplot2d([fHI(0.871,n),fI2(0.71,n)],[n,0,40.0],
  [style,[lines,1,blue],[lines,1,red]],[grid2d,true],[gnuplot_preamble,"set key top left"],
  [legend,"HI","I_2"],
  [xlabel,"n(H_2) (mol)"],[ylabel,"aktuális anyagmennyiségek (mol)"]);

K:0.871$
wxdraw2d(
  grid=true,
  xlabel="n(H_2) (mol)",
  ylabel="aktuális anyagmennyiségek (mol)",
  line_width=1,
  key = "HI",
  color=blue,
  implicit(eqHI,n,0,40,HI,0,0.6),
  key = "I_2",
  color=red,
  implicit(eqI2,n,0,40,I2,0,0.3));

A 95. példa megoldása:

kill(all)$ratprint:false$fpprintprec:0$
MrSO3:32.065+3*15.999;MrH2SO4:32.065+4*15.999+2*1.0079;
float(solve([mSO3/MrSO3+(2.604-mSO3)/MrH2SO4=0.0651*0.9/2,
            mratio=mSO3/(2.604-mSO3)],[mratio,mSO3]));
MrSO3:32.07+3*16.00;MrH2SO4:32.07+4*16.00+2*1.01;
float(solve([mSO3/MrSO3+(2.604-mSO3)/MrH2SO4=0.0651*0.9/2,
            mratio=mSO3/(2.604-mSO3)],[mratio,mSO3]));
MrSO3:32+3*16;MrH2SO4:32+4*16+2*1;
float(solve([mSO3/MrSO3+(2.604-mSO3)/MrH2SO4=0.0651*0.9/2,
            mratio=mSO3/(2.604-mSO3)],[mratio,mSO3]));

A 88. és 89. példában használható függvénydefiníciók:

fH4(cS,cB,Kd,Kv):=
  -log(find_root(
    H^3+(cB+Kd)*H^2-(Kv+Kd*cS)*H-Kd*Kv=0,H,0,cS+sqrt(Kv)
  ))/log(10.0);
fH5(cS,cB,Kd):=
  -log(find_root(
    H^2+Kd*H-Kd*cS=0,H,0,cS
  ))/log(10.0);
fH6(cS,cB,Kd):=-log(sqrt(Kd*cS))/log(10.0);

A 88. példa megoldása:

wxplot2d([fH4(c,0,6.3e-5,1.74e-14),fH5(c,0,6.3e-5),fH6(c,0,6.3e-5)],[c,1e-10,0.3],logx,
  [style,[lines,2,black],[lines,1,blue],[lines,1,red]],[grid2d,true],
  [legend,"(4) pontos pH","(5) közelítés másodfokú egyenlettel","(6) gyökös közelítés"],
  [xlabel,"analitikai koncentráció (M)"],[ylabel,"számolt pH-értékek"]);

A 89. példa megoldása (egyszerűen és elegánsan is):

fpprintprec:3$
wxplot2d([fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5),
  fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5)],[c,1e-10,0.3],logx,
  [style,[lines,2,blue],[lines,2,red]],[grid2d,true],
  [legend,"(4) – (5)","(4) – (6)"],
  [xlabel,"analitikai koncentráció (M)"],[ylabel,"a pH számolt eltérése"]);
results:matrix(["ΔpH",0.002,0.01,0.1,0.3],["c5/M",0,0,0,0],["c6/M",0,0,0,0]);
"egyszerű:";
results[2][2]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.002,c,1e-14,1.0)$
results[3][2]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.002,c,1e-14,1.0)$
results[2][3]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.01,c,1e-14,1.0)$
results[3][3]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.01,c,1e-14,1.0)$
results[2][4]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.1,c,1e-14,1.0)$
results[3][4]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.1,c,1e-14,1.0)$
results[2][5]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=0.3,c,1e-14,1.0)$
results[3][5]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=0.3,c,1e-14,1.0)$
results;
results:matrix(["ΔpH",0.002,0.01,0.1,0.3],["c5/M",0,0,0,0],["c6/M",0,0,0,0]);
"elegáns:";
for i:2 thru 5 step 1 do (
  results[2][i]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH5(c,0,6.3e-5))=results[1][i],c,1e-14,1.0),
  results[3][i]:find_root(abs(fH4(c,0,6.3e-5,1.74e-14)-fH6(c,0,6.3e-5))=results[1][i],c,1e-14,1.0)
)$
results;

A 90. példa megoldása (,[pdf_file,"outplot"] vagy terminal=pdf,file_name="outdraw",):

load(implicit_plot);load(draw);ratprint:false$

wximplicit_plot([10^(-pc)=10^(-pH),10^(-pc)=10^(-pH)-1.74e-14/10^(-pH)],[pc,5,9],[pH,5,8],
  [style,[lines,1,blue],[lines,2,red]],[grid2d,true],[gnuplot_preamble,"set key top left"],
  [legend,"c=[H^+]","c=[H^+]–K_v/[H^+]"],
  [xlabel,"–log(c/M)"],[ylabel,"pH"]);

wxdraw2d(
  grid=true,
  user_preamble="set key top left",
  xlabel = "–log(c/M)",
  ylabel = "pH",
  line_width=2,
  color=blue,key="c=[H^+]",
  implicit(10^(-pc)=10^(-pH),pc,5,10,pH,5,8),
  color=red,key="c=[H^+]–K_v/[H^+]",
  implicit(10^(-pc)=10^(-pH)-1.74e-14/10^(-pH),pc,5,10,pH,5,8));

A 91. és 92. példában használható függvénydefiníciók:

pHprecise(c,Kv):=-log(find_root(c-H+Kv/H=0,H,1e-15,c+sqrt(Kv)))/log(10.0);
pHapprox(c):=-log(c)/log(10.0);

A 91. példa megoldása:

Kv:1.74e-14$fpprintprec:4$
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.01,c,1e-14,1.0)$
sconcat("(a) ",pHprecise(cact,Kv),"-nál kisebb pH alatt.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.1,c,1e-14,1.0)$
sconcat("(b) ",pHprecise(cact,Kv),"-nál kisebb pH alatt.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=1.0,c,1e-14,1.0)$
sconcat("(c) ",pHprecise(cact,Kv),"-nél nagyobb pH-nál.");

A 92. példa megoldása:

Kv:1.74e-14$fpprintprec:2$
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.01,c,1e-14,1.0)$
sconcat("(a) ",cact," M-nál nagyobb analitikai koncentrációknál.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=0.1,c,1e-14,1.0)$
sconcat("(b) ",cact," M-nál nagyobb analitikai koncentrációknál.");
cact:find_root(abs(pHprecise(c,Kv)-pHapprox(c))=1.0,c,1e-14,1.0)$
sconcat("(c) ",cact," M-nál kisebb analitikai koncentrációknál.");

A 94. példa megoldása:

load(implicit_plot);ratprint:false$

Mrsalt:159.6086;Mrsaltwithwater:249.685;
eq0:m/100=Ms/Msw*x/(58+x);
solve(eq0,x);
wxplot2d(58*Mrsaltwithwater*m/(100*Mrsalt-Mrsaltwithwater*m),[m,0,100],[y,1,1e4],logy,
  [style,[lines,2,blue]],[grid2d,true],
  [legend,""],
  [xlabel,"m%/%"],[ylabel,"hozzáadott kristályos só tömege (g)"]);
wximplicit_plot(m/100=Mrsalt/Mrsaltwithwater*x/(58+x),[m,0,100],[x,1,1e4],logy,
  [style,[lines,1,blue]],[grid2d,true],[gnuplot_preamble,"set key top left"],
  [legend,""],
  [xlabel,"m%/%"],[ylabel,"hozzáadott kristályos só tömege (g)"]);
wxdraw2d(
  grid=true,
  logy=true,
  xlabel = "m%/%",
  ylabel = "hozzáadott kristályos só tömege (g)",
  color=blue,key="",line_width=2,
  implicit(m/100=Mrsalt/Mrsaltwithwater*x/(58+x),m,0,100,x,1,1e4));

A 95. példa megoldása:

eqHI:K=HI^2/(n-HI/2)/(0.3-HI/2);
solve(eqHI,HI);
define(fHI(K,n),rhs(%[1]));
eqI2:K=(2*(0.3-I2))^2/(n-(0.3-I2))/I2;
solve(eqI2,I2);
define(fI2(K,n),rhs(%[2]));

wxplot2d([fHI(0.871,n),fI2(0.71,n)],[n,0,40.0],
  [style,[lines,1,blue],[lines,1,red]],[grid2d,true],[gnuplot_preamble,"set key top left"],
  [legend,"HI","I_2"],
  [xlabel,"n(H_2) (mol)"],[ylabel,"aktuális anyagmennyiségek (mol)"]);

K:0.871$
wxdraw2d(
  grid=true,
  xlabel="n(H_2) (mol)",
  ylabel="aktuális anyagmennyiségek (mol)",
  line_width=1,
  key = "HI",
  color=blue,
  implicit(eqHI,n,0,40,HI,0,0.6),
  key = "I_2",
  color=red,
  implicit(eqI2,n,0,40,I2,0,0.3));

A 96. példa megoldása (m tömeget jelöl):

kill(all)$ratprint:false$fpprintprec:0$
MrSO3:32.065+3*15.999;MrH2SO4:32.065+4*15.999+2*1.0079;
float(solve([mSO3/MrSO3+(2.604-mSO3)/MrH2SO4=0.0651*0.9/2,
                   mratio=mSO3/(2.604-mSO3)],[mratio,mSO3]));
MrSO3:32.07+3*16.00;MrH2SO4:32.07+4*16.00+2*1.01;
float(solve([mSO3/MrSO3+(2.604-mSO3)/MrH2SO4=0.0651*0.9/2,
                   mratio=mSO3/(2.604-mSO3)],[mratio,mSO3]));
MrSO3:32+3*16;MrH2SO4:32+4*16+2*1;
float(solve([mSO3/MrSO3+(2.604-mSO3)/MrH2SO4=0.0651*0.9/2,
                   mratio=mSO3/(2.604-mSO3)],[mratio,mSO3]));

A 97. példa megoldása (n anyagmennyiséget jelöl):

kill(all)$ratprint:false$fpprintprec:0$
F:96485.0$
ArCu:63.546;ArNi:58.693;
float(solve([ArCu*nCu+ArNi*(345/2/F-nCu)=0.111,mpNi=100.0-mpCu,
                   mpCu=100*ArCu*nCu/0.111],[nCu,mpCu,mpNi]));
ArCu:63.6;ArNi:58.7;
float(solve([ArCu*nCu+ArNi*(345/2/F-nCu)=0.111,mpNi=100.0-mpCu,
                   mpCu=100*ArCu*nCu/0.111],[nCu,mpCu,mpNi]));
ArCu:64;ArNi:59;
float(solve([ArCu*nCu+ArNi*(345/2/F-nCu)=0.111,mpNi=100.0-mpCu,
                   mpCu=100*ArCu*nCu/0.111],[nCu,mpCu,mpNi]));

A 98. példa megoldása (a változónevekben
 L: oldhatósági szorzat,
 A: ezüst, P: ólom, S: szulfát, C: klorid,
 c0: kezdeti koncentráció, Tc: teljes koncentráció, ce: végső egyensúlyi koncentráció,
 tmp:kivált csapadéknak megfelelő koncentrációcsökkenés):

Számolás a szokásos módon:

kill(all)$ratprint:false$fpprintprec:0$
LAS:7.70E-5$LPC:1.00E-4$LAC:1.56E-10$LPS:1.83E-8$
c0S:float(rhs(solve(LAS=(2*x)^2*x,x)[3]))$c0A:2.0*c0S$
c0P:float(rhs(solve(LPC=x*(2*x)^2,x)[3]))$c0C:2.0*c0P$
fpprintprec:6$[c0Ag=c0A,c0Pb=c0P,c0SO4=c0S,c0Cl=c0C];
TcS:c0S*2/3$TcA:c0A*2/3$TcC:c0C*1/3$TcP:c0P*1/3$
[TcAg=TcA,TcPb=TcP,TcSO4=TcS,TcCl=TcC];
is(TcP*TcS>LPS);is(TcA*TcC>LAC);
fpprintprec:6$
float(solve(LPS=(TcP-x)*(TcS-x),x))$tmp:rhs(%[1])$
fpprintprec:3$
ceP:TcP-tmp;ceS:TcS-tmp$
fpprintprec:9$
float(solve(LAC=(TcA-x)*(TcC-x),x))$tmp:rhs(%[1])$
fpprintprec:3$
ceA:TcA-tmp;ceC:TcC-tmp$
[cAg=ceA,cPb=ceP,cSO4=ceS,cCl=ceC];

Számolás változtatható számú értékes jeggyel (fpprec):

kill(all)$ratprint:false$fpprintprec:0$
fpprec:3;
LAS:7.70b-5$LPC:1.00b-4$LAC:1.56b-10$LPS:1.83b-8$
c0S:bfloat(rhs(solve(LAS=(2b0*x)^2b0*x,x)[1]))$c0A:2.0b0*c0S$
c0P:bfloat(rhs(solve(LPC=x*(2b0*x)^2b0,x)[1]))$c0C:2.0b0*c0P$
fpprintprec:6$[c0Ag=c0A,c0Pb=c0P,c0SO4=c0S,c0Cl=c0C];
TcS:c0S*2b0/3b0$TcA:c0A*2b0/3b0$TcC:c0C*1b0/3b0$TcP:c0P*1b0/3b0$
[TcAg=TcA,TcPb=TcP,TcSO4=TcS,TcCl=TcC];
is(TcP*TcS>LPS);is(TcA*TcC>LAC);
fpprintprec:6$
bfloat(solve(LPS=(TcP-x)*(TcS-x),x))$tmp:rhs(%[1])$
fpprintprec:3$
ceP:TcP-tmp$ceS:TcS-tmp$
fpprintprec:9$
bfloat(solve(LAC=(TcA-x)*(TcC-x),x))$tmp:rhs(%[1])$
fpprintprec:3$
ceA:TcA-tmp$ceC:TcC-tmp$
[cAg=ceA,cPb=ceP,cSO4=ceS,cCl=ceC];