Solving one equation with one unknown and get all possible solutions
    16 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Hassan Alkomy
 il 25 Ott 2018
  
    
    
    
    
    Commentato: Hassan Alkomy
 il 8 Gen 2019
            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
3 Commenti
Risposta accettata
  Stephan
      
      
 il 4 Gen 2019
        
      Modificato: Stephan
      
      
 il 4 Gen 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
5 Commenti
  Walter Roberson
      
      
 il 8 Gen 2019
				The way your problem is constructed, with the sin(alphap) and cos(alphap) you would expect the results to repeat exactly every 2 π radians, since sin(alphap + 2*pi) = sin(alphap) and cos(alphap + 2*pi) = cos(alphap) . In theory. In practice due to round-off error it does not hurt to use the +2*pi as the starting point and use fzero() to confirm the exact location to within numeric bounds.
Più risposte (1)
  Vineeth Nair
    
 il 30 Ott 2018
        
      Modificato: Vineeth Nair
    
 il 30 Ott 2018
  
      To get only real values use following command >>solve(equation, variable, 'Real', true)
0 Commenti
Vedere anche
Categorie
				Scopri di più su Systems of Nonlinear Equations in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





