Steepest Ascent Method to Find Minimum - Error with syms to logical
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    N/A
 el 11 de Mzo. de 2020
  
    
    
    
    
    Respondida: Samatha Aleti
    
 el 26 de Mzo. de 2020
            I am attempting to find a minimum point, but I am receiving the following error for my code. I am unsure of how to work around this.
ERROR:
>> SteepestAscent
Conversion to logical from sym is not possible.
Error in SteepestAscent (line 10)
while es<ea && iter<itermax
MATLAB CODE:
function SteepestAscent()
iter=1;
itermax=5;
ea=5;
es=1;
x0=1;
y0=1;
%while (-6<x0) && (x0<6)
%    while (-6<double(subs(y0))) && (double(subs(y0))<6)
while es<ea && iter<itermax
    if (-6<x0) && (x0<6)
        if (-6<double(subs(y0))) && (double(subs(y0))<6)
         fx=4*x0^3+4*x0*y0+2*y0^2-42*x0-14; %Partial Deriv w/ X
         fy=4*y0^3+2*x0^2+4*x0*y0-26*y0-22; %Partial Deriv w/ Y
         %grad=[fx,fy];
         syms h
         x=x0+fx*h;
         y=y0+fy*h;
         f=x^4+y^4+2*x^2*y+2*x*y^2-21*x^2-13*y^2-14*x-22*y+170;
         c=diff(f,h);
         assume(h,'clear')
         h=solve(c==0,h,'PrincipalValue',true);
          x_new=x0+fx*h;
          y_new=y0+fy*h;
          ea=abs((x_new-x0)/x_new)*100;
          x0=x_new;
          y0=y_new;
        end       
    end
    iter=iter+1;
end
fprintf('X coordinate=')
disp(x0)
fprintf('Y coordinate=')
disp(y0)
end
0 comentarios
Respuesta aceptada
  Samatha Aleti
    
 el 26 de Mzo. de 2020
        This error occurs when comparing a numeric value and a symbolic value. In order to compare these two values, you can convert symbolic value to numeric using “subs” function and “double” type-conversion. 
The value "ea" will be symbolic values for the next iteration of while loop(in your code), Hence you can replace :
es < ea;
with
es<double(subs(ea)) ;
You can similarly replace when comparing other symbolic values with numeric values.
0 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

