• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

C - Aufgabe

Status
Für weitere Antworten geschlossen.

matcho

Mitglied
Hallo vielleicht kann mir jemand nen Ansatz geben/zeigen, da ich nicht wirklich weiter komme...

Code:
Zur Berechnung von y = sinh(x) steht in C eine entsprechende Routine zur
Verfügung. Außerdem kann man die Darstellung y = 1/2 (exp(x) - exp(-x))
verwenden. Man schreibe ein Programm, das y für x = 10^-i, i = 1,...., 20,
auf beide Arten bestimmt und vergleiche die erhaltenen Werte etwa durch
Ausgabe mit dem Format %23.16e. Man begründe den beobachteten Effekt.
da ich keine ahnung von C habe, aber trotzdem schonmal angefangen habe, hier mal der code :)

PHP:
#include <math.h>
int main(void)
{

int i;
double exp(double x);
float res;

x=10^(-i);


for(i=1;i<=20;i++)

{

res = 1/2 * (exp(double x) - exp(double (-x));
    
}
printf("result= %23.16e\n",res);    

}
 
Zuletzt bearbeitet:
Werbung:
Erstmal huiii =) endlich wieder was in C *gg*

Sag uns doch mal, was dein konkretes Problem ist ;)
Der Ansatz scheint mal ganz gut zu sein.

Wenn du für i alle werte bis 20 verwenden sollst würde ich dir empfehlen das alles in eine Schleife zu packen, die bei i=20 abbricht.

x wurde nie deklariert, also wird das eine exception werfen.

die routine 'exp' wird zwar deklariert, aber es gibt nix was die tun soll
also wenn dann double exp(double x){
weitere berechnungen
return ergebnis
}

und die Zeile wo du das ausgibst (das printf(...) ) bringt rein garnix, da du zwar hinter dem komma 'res' stehn hast aber zwischen den " " nix, wo das ausgegeben werden soll. Wenn dann müsstest du es so machen:
printf("blablabla %d ",res);
ich persönlich bevorzuge jedoch cout (keine ahnung warum ^^) ..
da würde es so aussehn:
cout << "blablabla" << res;


lg,
n1ob
 
Werbung:
Code:
// Mathematische Funktionen
#include <math.h>

// Ein- und Ausgabe
#include <stdio.h>

int main(void)
{
  int i;

  // Alle i von 1 bis 20
  for(i = 1; i <= 20; i++)
  {
    // x errechnen
    long double x = pow(10, -i);
    
    // ausgabe
    printf("i = %u\n", i);
    printf("x = %23.16e\n", x);
    printf("sinh(x) = %23.16e\n", sinh(x));
    printf("y = %23.16e\n\n", (0.5 * (exp(x) - exp(-x))));    
  }
  
  return 0;
}

Begrundung: Rundungsfehler

@N10B: Der großteil deiner vorschläge bezieht sich auf C++ nicht auf C.
 
Werbung:
aach prophet .. wir wollen hier doch keine lösungen posten ;)
wie heisst es so schön:
Ich kann dir die Tür öffenen - aber durchgehn musst du selber

lg,
n1ob
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben