Wurzel ziehen in C

Status
Für weitere Antworten geschlossen.
U

unull

Ich denke, dass die Potenzreihenentwicklung der Wurzel die einfachste Methode waere. Ausserdem bekommt man damit die Fehlerabschaetzung gleich mit dazu.

Also: sqrt(x+1) = 1+1/2*x -1/8*x^2+3/48*x^3- \dots
 
Zuletzt bearbeitet von einem Moderator:
D

dpkg

Mitglied
stimmt nicht.

x = y * 0.5

angenommen

y = 16

jeder weiß dass die wurzel aus 16 4 ist.

aber

16 * 0.5 = 8

und 8 * 8 = 64 ;)

denkfehler 0 punkte setzten 6.

außerdem wollte er keine spezielle funktion anwenden.

y^0.5, nicht y*0.5

EDIT: SRY, hab übersehen, dass JoelH das bereits gepostet hat.
 
Zuletzt bearbeitet:
hofmannc11

hofmannc11

der der mit dem Tux tanzt
Ich würde vorschlagen einfach mal in den Sourcecode von einem Taschenrechner Programm reinschauen und sehen wie es dort gemacht wurde. Aber es wird doch bestimmt eine Bibiothek geben die Wurzeln ziehen kann oder?
 
dietox

dietox

Eroberer
Ich würde vorschlagen einfach mal in den Sourcecode von einem Taschenrechner Programm reinschauen und sehen wie es dort gemacht wurde. Aber es wird doch bestimmt eine Bibiothek geben die Wurzeln ziehen kann oder?

Meinst du math.h?
Nein, die gibt es nicht, sie ist komplett imaginär und alle,
die etwas anderes behaupten, leiden an Halluzinationen.

Ironie der Wurzel :))
 
M

m0erk

Grünschnabel
das thema hat mich sehr weiter gebracht... hab mich nicht alles komplett angeschaut aber hier mal meine lösung.. getestet und komplett das programm ;)

mfg m0erk








/* 26.11.08 - Quadratwurzel ohne math.h - JR */

#include <stdio.h>
// #include <math.h>

double lese_f(void);
int lese_i(void);

main()
{
int key;
int p=0;
double i;
double wrzl;
int count=0;
while(p < 1)
{
switch(p)
{
case 0:

printf("\nBitte Zahl eingeben, deren Wurzel gesucht ist.\n");
wrzl=lese_f();
i=wrzl;
while( count < 5000 )
{
i = ((i*i)+wrzl)/(2*i);
count++;
}
printf("\nDie Wurzel aus %lf ist %lf.\n",wrzl,i);
getchar();
printf("\nNochmal?! (1=j/2=n)\n");
key=lese_i();
if( (key == 2) )
p++;
}
}
}
double lese_f( void )
{
double zahl;
char zeile[80];

gets( zeile );
sscanf( zeile, "%lf", & zahl );
return( zahl );
}
int lese_i( void )
{
int zahl;
char zeile[80];

gets( zeile );
sscanf( zeile, "%d", & zahl );
return( zahl );
}
 
saeckereier

saeckereier

Graue Eminenz
Boah das kann ja keine Sau lesen.
1. Code TAGS
2. Einrücken
3. Die Variablennamen sind eh nach dem Kompilieren weg, dann kann man sie vorher auch sprechend schreiben
 
icephilipp

icephilipp

Foren As
ich habe zur berechnung folgenden algorythmus verwendet:
while(i!=st&&end!=1){
while(((*a)*(*a))<w&&end!=1){

(*a)+=*add;
if((*a)*(*a)==w){
end=1;
}
}
i++;
if(end!=1){
(*a)-=*add;
}
*add=*add/10;

}
wobei die variable st die anzahl der gewünschten stellen und w die zahl von der die wurzel erechnet werden soll ist
 
daboss

daboss

Kaiser
Hab noch des Heron'sche Iterationsverfahren im Angebot :P (In der Version der Musterlösung... war zu faul, meine Version nochmal abzutippen....)
Code:
#include <stdio.h>
#define epsilon 0.000001
double fabs(double x)
{
    /* berechnet den Absolutbetrag einer Fliesskommazahl */
    if(x<0)
        return -x;
    else
        return x;
}

double heron(double y)
{
    double x_old=0.0, x_new = 1.0;

/* Initialisierung des Verfahrens */

    while(fabs(x_new-x_old)>epsilon)
    {
        /* solange das Ergebnis noch nicht genau genug ist:
        eine weitere Iteration gem¨aß Heron-Verfahren */
        x_old=x_new;
        x_new=0.5*(x_old+y/x_old);
    }

    return x_new;
}

int main()
{
    double y;
    printf("Geben Sie y ein: ");

    /* Wir wollen m¨oglichst genau rechnen, deshalb nehmen wir
    eine Fliesskommazahl doppelter Genauigkeit (double) f¨ur y.
    Eine Variable vom typ double kann man mit %lf ausgeben
    (printf) bzw. einlesen (scanf).*/

    if(scanf("%lf", &y)!=1)
    {
        printf("Sie m¨ussen eine reelle Zahl eingeben. \n");
        return -1;
    }

    if(y<0)
    {
        printf("Die Wurzel einer negativen Zahl ist nicht definiert. \n");
        return -2;
    }
}
 
Zuletzt bearbeitet:
icephilipp

icephilipp

Foren As
so jetz haben wir sehr viele bsps aba gibt es auch eine möglickeit wurzeln auf n steillige genauigkeit ausrechnen??
 
daboss

daboss

Kaiser
Ja, meine. Die Genauigkeit wird im
Code:
#define epsilon
festgelegt.
 
icephilipp

icephilipp

Foren As
ja aba auch bei double is nach (ich glaub) 14 stellen aus bei long double nach 19 wie berechne ich z.b die 1. 100 stellen
 
icephilipp

icephilipp

Foren As
Irgendwie verstehst du des mit n-stellen nich auch long kann nich unendlich stellen speichern. Ich brauche ienen algorythmus der die stellen nacheinander berechnet.
 
defcon

defcon

Moderator
Oh entschuldige erwürdiger Meister das man nicht alles Wissen kann..... *scnr
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Python checkbox in der Kommandozeile

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Samba4 Freigabe erstellen

Luks keyfile over ssh

FreeBSD oder Linux?

Sucheingaben

wurzel in c

,

c wurzel

,

c wurzel ziehen

,
Wurzel Ziehen In C
, wurzel ziehen c, heron verfahren in c, wurzel c, c programmieren wurzel, wurzel in c programmieren, wurzel berechnen, wurzel in c ohne sqrt, wurzelziehen in c, c programmierung wurzel, heron verfahren c program, c programmierung wurzel ziehen, heron verfahren in c wurzel einer zahl ziehen, c n. wurzel, wurzel c programmieren, wurzeln in C, wurzel berechnung in C, c wurzel berechnen, quadratwurzel in c, heron verfahren als c programm, c programm quadratwurzel, Wurzel in c ziehen
Oben