14 views (last 30 days)

Show older comments

I have an equation and I need to get its solution. I think it has more than one solution, but using the command (solve) I can get only one solution.

Actually, it is expected to get real and complex solutions, but I am interested on the real solutions only.

How can I get this solution in Matlab.

the required unknown is (alphap) and my equation and the command that I have used is:

m=15; Ki=1.3908e+06; B=0.945e-1; db=0.79e-2; alphao=.2618;

x = solve(Pr == m*Ki*(B*db*(cos(alphao)/cos(alphap)-1))^(3/2)*sin(alphap),alphap)

The answer is:

x = 0.37336926931567958392238007768557i

Stephan
on 4 Jan 2019

Edited: Stephan
on 4 Jan 2019

Hi,

getting all possible soultions is a hard job, because you have an infinite bunch of real solutions:

m=15;

Ki=1.3908e+06;

B=0.945e-1;

db=0.79e-2;

alphao=.2618;

Pr = 10;

format long

fun = @(alphap)Pr - m*Ki*(B*db*(cos(alphao)/cos(alphap)-1))^(3/2)*sin(alphap)

x1 = fzero(fun,0.5)

This code results in:

x1 =

0.542034560066698

If you want more solutions just add or subtract integer multiples of 2*pi. Then you can construct as many real solutions as you want by yourself:

x2 = fzero(fun,2*pi+x1)

is_it_2_pi = (x2-x1)/(2*pi)

gives:

x2 =

6.825219867246284

is_it_2_pi =

1

Best regards

Stephan

Vineeth Nair
on 30 Oct 2018

Edited: Vineeth Nair
on 30 Oct 2018

To get only real values use following command >>solve(equation, variable, 'Real', true)

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

Start Hunting!