Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: matlab novice
Replies: 12   Last Post: Aug 1, 2013 7:42 AM

 Messages: [ Previous | Next ]
 Torsten Hennig Posts: 2,419 Registered: 12/6/04
Re: matlab novice
Posted: Aug 1, 2013 4:10 AM

> im trying to get these if statements to work but its
> not doing what i want, i want it to use separate
> calcs when M_excess > 0 and when M_excess < 0. There
> are negative values in vector M_excess.
>
>
> titration script is
>
> Kw = 1e-14;
> Ka = 1.755388e-5;
> pKa = 4.756;
> %
> Ca = 0.5;
> Cb = 0.1;
> Va = 100;
> Vb = 0:0.1:1500;
> %
> % This simulates initial molarity of CH3CO2H.
> Ma = (Ca * Va) / 1000;
> % This simulates initial molarity of NaOH.
> Mb = (Cb .* Vb) ./ 1000;
> % This simulates the displacement of H ions.
> M_excess = Ma - Mb;
> if M_excess > 0
> % This simulates final molarity of CH3CO2H.
> Ma_final = (M_excess .* 1000) ./ (Va + Vb);
> % This simulates final molarity of CH3CO2-.
> Mb_final = (Mb .* 1000) ./ (Va + Vb);
> % This simulates HPlus ions.
> Hplus = Ka .* (Ma_final ./ Mb_final);
> else OH = (M_excess .* 1000 * -1) ./ (Va + Vb);
> % This simulates HPlus ions.
> Hplus = Kw ./ OH;
> end
> % This simulates the pH content.
> pH = -log10(Hplus);

The first part of your if-statement is only executed
if _all_ elements of the array M_excess are positive.
If this is not the case, the second part of the if-statement is executed.
I think this is not what you want - you want the if-statement to be executed elementwise.
For this, use a for-loop:

For i=1:length(Mb)
M_excess(i)=Ma-Mb(i);
if M_excess(i)>0
...
else
...
end
end

Best wishes
Torsten.

Date Subject Author
8/1/13 harley
8/1/13 Torsten Hennig
8/1/13 harley
8/1/13 harley
8/1/13 Torsten Hennig
8/1/13 harley
8/1/13 harley
8/1/13 harley
8/1/13 Torsten Hennig
8/1/13 harley
8/1/13 Torsten Hennig
8/1/13 harley
8/1/13 harley