"If else" statements

4 ビュー (過去 30 日間)
EnjoyLife
EnjoyLife 2020 年 11 月 8 日
回答済み: Image Analyst 2020 年 11 月 8 日
How to do the if else statement for the [X] below because my coding keeps showing error at line 32? Can someone help me in this? Thank you vey much.
%Base
base='What is the volume flowrate of base (L/h)?';
V_base=input(base) %volume flowrate of base (L/h)
base_pH='what is the pH of the base?'
pH_base=input(base_pH) %base pH
C_base_H=10^-pH_base; % conc of H+ in base (mol/L)
C_base_OH=10^(-14+pH_base); %conc of OH- in base (mol/h)
x_base=C_base_OH-C_base_H;
%acid
acid='what is the volume flowrate of acid (L/h)?'
V_acid=input(acid) %volume flowrate of acid (L/h)
acid_pH='What is the pH of the acid?'
pH_acid=input(acid_pH) %acid pH
C_acid_H=10^-pH_acid; % conc of H+ in acid (mol/L)
C_acid_OH=10^(-14+pH_acid); %conc of OH- in acid (mol/h)
x_acid=C_acid_OH-C_acid_H;
V=4000; %volume CSTR (L)
syms x(t)
ode=diff(x,t)==(V_base*x_base+V_acid*x_acid-(V_acid+V_base)*x)/V;
cond=x(0)==0;
xSol(t)=dsolve(ode,cond);
t=[1:60]; % time, hour
[X]=[xSol(t)];
if [X]>0
[pH]=-log((X/2)+sqrt(1+((4*10^-14)/X.^2))-1);
elseif [X]<0
[pH]=-log((-X/2)+sqrt(1+((4*10^-14)/X.^2))+1);
else [X]=0
[pH]=-log(sqrt(10^-14));
end
figure
plot(t,pH)
title('pH over time in CSTR')
xlabel('time,hour')
ylabel('pH of outlet stream')

回答 (1 件)

Image Analyst
Image Analyst 2020 年 11 月 8 日
I don't have the symbolic toolbox so I can't run it, but one error I see right off the bat is that you're not using a doubl equals
else [X]=0
should be
else X == 0
Additionally, you don't need square brackets around variables.
And if X is a multi-element array, you'll need to use any(X) or all(X) depending if you want to go in there if 1 or more values are 0, or if you need all values to be zero.

カテゴリ

Help Center および File ExchangeNumeric Solvers についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by