# How create a interaction method to re-calculate a equation if a condition is not satisfied

1 visualizzazione (ultimi 30 giorni)
Gabriel il 9 Dic 2013
Commentato: sixwwwwww il 10 Dic 2013
I have a equation where i need to input a value and calculate some equations with this value.
In the end, i need to check if this value is ok.
If it's not, I need to input a new value and calculate the equation again with this new value.
Somebody can help me?
I tried this way.
I need to input "Tin" and calculate "Tw". In the end, i need check if the average between Tw and "Tb" in less than 10%. If it's not i neet to input a new value for "Tave".
clear
close all
Tin=input('Input T');
D=5;
t=0.362;
E=2.9e07;
ws=17.9148297590378;
R=1448.88;
alfa=1.96;
h=R*(1-(cos(alfa/2)));
I=pi*(D-t)*(D-t)*(D-t)*t/8;
teta=19.45;
L=495.73;
conv=teta*pi/180;
mis=0.3;
mil=0.05;
DRAG= 12*pi*D*L*mil;
Tb=8.89e4;
G=Tin;
for i=1:100
G(i)=Tin(i);
J=sqrt(E*I/G(i));
U=12*L/J;
X=3*L-(J/2)*tanh(U/2);
Y=18*L*L-J*J*(1-(1/cos(U/2)));
N=(12*G(i)*h-(ws/12)*cos(teta)*Y)/X;
frictc=N*mis;
ter=ws*L*sin(conv);
deltac=2*frictc+DRAG-ter;
Tw=deltac+Tb;
Tave(i)=(Tw+Tb)/2;
if Tave(i)>G(i)+G(i)*0.1
G(i)=Tave(i);
elseif Tave2(i)<G(i)-G(i)*0.1
G(i)=Tave2(i);
else
display(Tave2(i));
end
end
##### 2 CommentiMostra NessunoNascondi Nessuno
sixwwwwww il 9 Dic 2013
Modificato: sixwwwwww il 9 Dic 2013
you have to enter new value for Tave or Tin? and also what is meaning of it " i need check if the average between Tw and "Tb" in less than 10%" less than 10% of which values ?
Gabriel il 9 Dic 2013
I'm sorry
New value for "Tin" if "Tave" is greater than 10% of "Tin".
Now the sentence is correct

Accedi per commentare.

### Risposta accettata

sixwwwwww il 9 Dic 2013
Modificato: sixwwwwww il 9 Dic 2013
try this:
Tin=input('Input T');
D=5;
t=0.362;
E=2.9e07;
ws=17.9148297590378;
R=1448.88;
alfa=1.96;
h=R*(1-(cos(alfa/2)));
I=pi*(D-t)*(D-t)*(D-t)*t/8;
teta=19.45;
L=495.73;
conv=teta*pi/180;
mis=0.3;
mil=0.05;
DRAG= 12*pi*D*L*mil;
Tb=8.89e4;
G(1) = Tin;
for i=1:100
J=sqrt(E*I/G(i));
U=12*L/J;
X=3*L-(J/2)*tanh(U/2);
Y=18*L*L-J*J*(1-(1/cos(U/2)));
N=(12*G(i)*h-(ws/12)*cos(teta)*Y)/X;
frictc=N*mis;
ter=ws*L*sin(conv);
deltac=2*frictc+DRAG-ter;
Tw=deltac+Tb;
Tave(i)=(Tw+Tb)/2;
if Tave(i) >= Tin * 0.1
Tave(i) = input('Enter new value of Tave:');
end
G(i + 1) = Tave(i);
end
display(Tave(i))
##### 6 CommentiMostra 4 commenti meno recentiNascondi 4 commenti meno recenti
Gabriel il 10 Dic 2013
I'm sorry the newbie ask, but in this programa the value of Tw is being changing every time that Tave changes, isn't it?
sixwwwwww il 10 Dic 2013
Yes value of Tw is changing in each for loop iteration and so Tave also changes each time

Accedi per commentare.

### Più risposte (2)

Walter Roberson il 9 Dic 2013
need_to_continue = true;
while need_to_continue
Tin = input('Temperature In');
....
need_to_continue = (Tw + Tb)/2 > Tb/10; %average is more than 10% ?
end
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Gabriel il 10 Dic 2013
Thanks so much..
It's running perfectly now...
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
sixwwwwww il 10 Dic 2013
you are welcome

Accedi per commentare.

### Categorie

Scopri di più su Physics in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by