2 views (last 30 days)

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?

Kevin Chng
on 8 Oct 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

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

Opportunities for recent engineering grads.

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

Start Hunting!
## 7 Comments

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## 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.