Asked by Ivy Shen
on 8 Oct 2018

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?

Answer by Kevin Chng
on 8 Oct 2018

Accepted Answer

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

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.

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

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 7 Comments

## Diego Leal (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_618946

## Ivy Shen (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_618947

## Kevin Chng (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_618981

## Ivy Shen (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_618988

## Kevin Chng (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_618992

## Kevin Chng (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_618994

## Ivy Shen (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/422712-use-fzero-to-solve-for-a-parameter#comment_619005

Sign in to comment.