use fzero to solve for a parameter
Mostrar comentarios más antiguos
I wrote the following code to solve for a:
clear; clc;
EquivRatio = [0.64 0.74 0.84 0.94 1];
K = [0.371 0.447 0.456 0.383 0.302];
C_NO = [0.014 0.0179 0.0187 0.0139 0.0084];
R1 = [5.79*10^(-5) 0.00110 0.00877 0.0265 0.0235];
Tao_NO = C_NO./(4*R1);
t = 1;
fun = @(a)(1-K).*(log(1+a))-(1+K).*(log(1-a))-t./Tao_NO;
alpha = fzero(fun,0.008229);
But it always give the following error:
Operands to the and && operators must be convertible to logical scalar values.
Error in fzero (line 322) elseif ~isfinite(fx) ~isreal(fx)
What's wrong with my code?
7 comentarios
Diego Leal
el 8 de Oct. de 2018
I seems that you are trying to find the zeros from a function that goes from scalar to vector. Is that what you want to do?
Ivy Shen
el 8 de Oct. de 2018
Kevin Chng
el 8 de Oct. de 2018
Hi Ivy Shen,
As I see your code, there are 5 equations to solve a. Therefore, we should load a for loop to solve them one by one
clear; clc;
EquivRatio = [0.64 0.74 0.84 0.94 1];
K = [0.371 0.447 0.456 0.383 0.302];
C_NO = [0.014 0.0179 0.0187 0.0139 0.0084];
R1 = [5.79*10^(-5) 0.00110 0.00877 0.0265 0.0235];
Tao_NO = C_NO./(4*R1);
t = 1;
for i=1:1:length(K)
fun = @(a)(1-K(i)).*(log(1+a))-(1+K(i)).*(log(1-a))-t./Tao_NO(i);
alpha(i) = fzero(fun,0.008229);
end
I'm not sure whether i interpret your question correctly, let us know, if my recommendation is workout for you.
Ivy Shen
el 8 de Oct. de 2018
Kevin Chng
el 8 de Oct. de 2018
Editada: Kevin Chng
el 8 de Oct. de 2018
You have to change 0.008229 value.
Kevin Chng
el 8 de Oct. de 2018
Editada: Kevin Chng
el 8 de Oct. de 2018
for i=1:1:length(K)
fun = @(a)(1-K(i)).*(log(1+a))-(1+K(i)).*(log(1-a))-t./Tao_NO(i);
figure
fplot(fun,[-2 2])
alpha(i) = fzero(fun,0.999);
end
Hi, you may use fplot to view how is your graph's pattern. From the graph, you may see the value is leading to 1 when approaching zero for 4 & 5.
When i change the initial value to 0.999, i find the root for 4.
Ivy Shen
el 8 de Oct. de 2018
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Common Operations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
