how to write a loop that finds the best fit value for each given input pair and plot all the resulted points?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Anitha Limann
el 14 de Oct. de 2021
Comentada: Mathieu NOE
el 28 de Oct. de 2021
Hello,
I have t and vl observed data that i plotted first and then find the theoritical points and plot them in the same graph.
To construct the model to find the theoritical values i have to write a code according to following steps.
- select a starting pair for t1 and vl1. (in this case t=10 and vl = 3.61).
- Calculate A
- Calculate B
- Calculate A-B
- Test abs(A-B); if abs(A-B) < 0.001 stop, then go to 8. if not go to 6
- increment vl=vl+0.005
- goto 2.
- increment t=t+5
- goto 1
- finally plot each pair for A=B (approximately, within given tolerance)
Below is the draft loop I wrote but i am not sure how to actually make it work. Please help me.
for T=10; % tmax = 90;
for VL=3.61
A = atan((vs2.^2).*D2.*(sqrt(1-(VL.^2/vs2.^2)))./(vs1.^2.)*D1.*(sqrt(1-(VL.^2/vs1.^2))));
B = (((2.*pi.*z)./(VL.*T)).*(sqrt((VL.^2/vs1.^2)-1)));
while abs(A-B)<0.001
T=T+5;
A=A
B=B
break
end
while abs(A-B)>=0.001
VL=VL+0.005;
A=A
B=B
end
end
end
6 comentarios
Mathieu NOE
el 14 de Oct. de 2021
hello
I have a problem with your equations
see the two examples below . depending if vl>vs1 or vl<vs1 , one output is real and the other is complex , so there is no way to compare them
are you sure that there is no mistake (like missing abs somewhere) in the equations ?
code
clc
clearvars
% T = [10:5:90];
% VL = [3.6;3.7,3.9,4.1,4.2,4.3,4.4,4.4,4.5,4.6,4.65,4.7,4.7,4.75,4.8,4.82,4.85];
% vs1, vs2, d1,d2 and z are just constant values.
vs1=3.6;
vs2=4.7;
d1=2.9;
d2=3.2;
z=40;
% select a starting pair for t1 and vl1. (in this case t=10 and vl = 3.61).
% Calculate A
% Calculate B
% Calculate A-B
% Test abs(A-B); if abs(A-B) < 0.001 stop, then go to 8. if not go to 6
% increment vl=vl+0.005
% goto 2.
% increment t=t+5
% goto 1
% finally plot each pair for A=B (approximately, within given tolerance)
% case 1
t=10
vl = 3.61 % is slightly above vs1=3.6;
A = atan((vs2.^2).*d2.*(sqrt(1-(vl.^2/vs2.^2)))./(vs1.^2.)*d1.*(sqrt(1-(vl.^2/vs1.^2))))
B = (((2.*pi.*z)./(vl.*t)).*(sqrt((vl.^2/vs1.^2)-1)))
% case 2
t=10
vl = 3.51 % is slightly below vs1=3.6;
A = atan((vs2.^2).*d2.*(sqrt(1-(vl.^2/vs2.^2)))./(vs1.^2.)*d1.*(sqrt(1-(vl.^2/vs1.^2))))
B = (((2.*pi.*z)./(vl.*t)).*(sqrt((vl.^2/vs1.^2)-1)))
gives :
case 1 :
t = 10
vl = 3.6100
A = 0.0000 + 0.9856i
B = 0.5193
case 2 :
t = 10
vl = 3.5100
A = 1.1665
B = 0.0000 + 1.5911i
Respuesta aceptada
Mathieu NOE
el 15 de Oct. de 2021
hello Anitha
so yes there was a small bug in your equations
when you do the computation of A, you fliiped the terms
(vs1.^2.)*d1.*(sqrt(1-(VL.^2/vs1.^2)))
must be replaced by
(vs1^2)*d1*(sqrt((vl^2/vs1^2)-1))
that's the reason I got A complex numbers and not reals numbers because the ter under the square root was negative
I am still working on the code ....
6 comentarios
Más respuestas (0)
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!