Kubikwurzel?

Status
Nicht offen für weitere Antworten.

holzi

Mitglied
Code:
class Wurz3    
{      
  public static void main( String[] args ) 
  { double a, eps=0.001, xa, xn, r[];
  	do{
  	System.out.println("ENDE mit 110\nEingabe: ");
  	do{
  		a = IO1.eindouble();
  	}while(a<=0);
  	xa=a;
  	r=new double[2];
  	do{
  		xn=(2./3.)*xa+a/(3.*xa*xa);
  		xa=xn;
  		if (xa==0)
  		{
  			r[0]=-1;
  			r[1]=0;
  			System.out.println("xa = 0 ->"+r[0]+" und ->"+r[1]);
  		}
  	  }while(Math.abs(Math.pow(xa,3)-a) <= eps);
  	  r[0]=1;
  	  r[1]=xa;
  	  System.out.println(r[0]+" und xa ->"+r[1]);
  }while(a!=110);
  	  			
}
  
}

dies ist eine Programm zur Annäherung der Kubikwurzel!

Bei xa==0 soll er
Code:
if (xa==0)
  		{
  			r[0]=-1;
  			r[1]=0;
  			System.out.println("xa = 0 ->"+r[0]+" und ->"+r[1]);
  		}
dies machen und die do Schleife verlassen! Wie kann ich dies am besten! bewerkstelligen?
 

Leroy42

Top Contributor
Code:
if (xa==0) 
        { 
           r[0]=-1; 
           r[1]=0; 
           System.out.println("xa = 0 ->"+r[0]+" und ->"+r[1]); 
           break;
        }

Aber Vorsicht: Es ist unwahrscheinlich daß xa genau den Wert 0 erreicht.

Prüfe lieber auf eine Abweichung um ein (sehr) kleines epsilon.
 

holzi

Mitglied
Code:
class Wurz3   
{     
  public static void main( String[] args )
  { double a, eps=0.001, xa, xn, r[];
     do{
     System.out.println("ENDE mit 110\nEingabe: ");
     do{
        a = IO1.eindouble();
     }while(a<=0);
     xa=a;
     r=new double[2];
     do{
        xn=(2./3.)*xa+a/(3.*xa*xa);
        xa=xn;
        if (xa==0)
        {
           r[0]=-1;
           r[1]=0;
           System.out.println("xa = 0 ->"+r[0]+" und ->"+r[1]);
           break;
        }
       }while(Math.abs(Math.pow(xa,3)-a) > eps);
       r[0]=1;
       r[1]=xa;
       System.out.println(r[0]+" und xa ->"+r[1]);
  }while(a!=110);
                
}
 
}


danke! Funktioniert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben