Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Frage-Näherung der Wurzeln » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Frage-Näherung der Wurzeln
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
marie m
Eroberer


Dabei seit: 08.06.2013
Beiträge: 57

Frage-Näherung der Wurzeln Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wink Ich habe eine Frage über die folgende Aufgabe:
Schreiben Sie ein Programm,in dem Sie die Wurzeln der Gleichung a*x^2+b*x+c=0 finden.Wenn a=1.0,b=-3.6778,c=0.0020798,dann sind die y1=3.67723441190 und y2=0.00056558809 eine gute Näherung der Wurzeln.Finden Sie die Wurzeln x1,x2,indem sie den bekannten Lösungsweg benutzen und finden Sie das |y1-x1|,als auch das |y2-x2|.

Ich habe die Variablen als "double" bezeichnet und die Diskriminante gefunden.Das Ergebnis ist x1=3.677234,x2=0.000566..
Wie kann ich die |y1-x1|,|y2-x2| finden,ohne dass sich die y1,y2 ändern??
Ich habe sie nämlich als "double" bezeichnet und dann gibt es diese Änderung ,y1=3.677234,y2=0.000566.. verwirrt
26.10.2013 01:39 marie m ist offline Beiträge von marie m suchen Nehmen Sie marie m in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In welcher Sprache soll das Programm sein?
Wäre nett, wenn du deinen bisherigen Versuch anfügst, damit ich sehe, wo es klemmt.

Und ich brauche noch etwas mathematische Nachhilfe:
Zitat:
Wurzeln der Gleichung a*x^2+b*x+c=0 finden

Ich weiß, wie man Nullstellen bestimmt, von Wurzeln habe ich in dem Zusammenhang noch nie etwas gehört. Die Werte sind auch gleich, nur dass es bei dir y1 und y2 sind, nicht x1 und x2. Was sind dann bei dir x1 und x2?
Zitat:
Finden Sie die Wurzeln x1,x2,indem sie den bekannten Lösungsweg benutzen

jetzt heißen die Wurzeln auf einmal wieder x verwirrt
und was ist der bekannte Lösungsweg?

Zitat:
Wie kann ich die |y1-x1|,|y2-x2| finden,ohne dass sich die y1,y2 ändern??

Indem du dafür eine neue Variable anlegst:
code:
1:
2:
3:
double x1, x2, y1, y2, y1_minus_x1, y2_minus_x2;
x1=...; x2=...; y1=...; y2=...;
y1_minus_x1 = abs(y1-x1); y2_minus_x2 = abs(y2-x2);


__________________
Syntax Highlighting fürs Board (Link)
26.10.2013 07:33 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
marie m
Eroberer


Dabei seit: 08.06.2013
Beiträge: 57

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe die y1=3.67723441190 und y2=0.00056558809 als double bezeichnet...Dann habe ich geschreiben
printf("y1=%lf,y2=%lf.\n",y1,y2);

und das Ergebnis ist y1=3.677234,y2=0.000566.Ich will aber dass diese Variablen eine Genauigkeit von 12 Nummern haben,damit ich danach die |x1-y1| und |x2-y2| finde.
Wie könnte ich die Variablen bezeichnen sodass sie eine Genauigkeit von 12 Nummern haben oder was könnte ich sonst ändern???? verwirrt
26.10.2013 16:18 marie m ist offline Beiträge von marie m suchen Nehmen Sie marie m in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich weiß immer noch nicht, welche mathematischen Überlegungen dahinter stecken.

Falls es dir um eine genauere Nullstellenberechnung bzw. Ausgabe geht:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
#include "stdio.h"
#include "math.h"

int main(void)
{
	double a=1, b=-3.6778, c=0.0020798;
	double D = b*b-4*a*c;
	double x1 = (-b+sqrt(D))/(2*a);
	double x2 = (-b-sqrt(D))/(2*a);
	printf("x1=%.15lf,x2=%.15lf.\n",x1,x2);
}

mit .15lf gibt man die Präzision der Ausgabe (15 Stellen) an.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 26.10.2013 18:15.

26.10.2013 18:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
marie m
Eroberer


Dabei seit: 08.06.2013
Beiträge: 57

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bei der Aufgabe soll man die Wurzeln den Polynoms a*x^2+b*x+c=0 mit der Formel

x1=(-b+sqrt(d))/2a, x2=(-b-sqrt(2))/2a ,d=b^2-4ac

finden.
Die Aufgabe gibt auch noch die genaue Lösungen,und man soll den Unterschied zwichen der Wurzeln die man gefunden hat und die genaue Lösungen die die Aufgabe gibt ,finden.


Bei mir kommt bei beide Unterschiede 0 raus,das ist aber falsch!!!

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von marie m: 27.10.2013 10:28.

26.10.2013 19:12 marie m ist offline Beiträge von marie m suchen Nehmen Sie marie m in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn du keinen vollständigen Quellcode angibst, kann ich dir nicht sagen, woran das liegt.
Mein Programm funktioniert jedenfalls:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
#include "stdio.h"
#include "math.h"

int main(void)
{
	double a=1, b=-3.6778, c=0.0020798, y1=3.67723441190, y2=0.00056558809;
	double D = b*b-4*a*c;
	double x1 = (-b+sqrt(D))/(2*a);
	double x2 = (-b-sqrt(D))/(2*a);
	
	printf("x1 = %.15lf, x2 = %.15lf.\n", x1, x2);
	printf("y1 = %.15lf, y2 = %.15lf.\n", y1, y2);
	printf("|y1-x1| = %.15lf, |y2-x2| = %.15lf.\n", fabs(y1-x1), fabs(y2-x2));
	printf("|y1-x1| = %g, |y2-x2| = %g.\n", fabs(y1-x1), fabs(y2-x2));
}


__________________
Syntax Highlighting fürs Board (Link)
26.10.2013 19:54 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
marie m
Eroberer


Dabei seit: 08.06.2013
Beiträge: 57

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich hatte die Funktion abs benutzt,deswegen ist bestimmt 0 rausgekommen..Danke vielmals!!!!!!! Augenzwinkern Daumen hoch smile
26.10.2013 20:05 marie m ist offline Beiträge von marie m suchen Nehmen Sie marie m in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Frage-Näherung der Wurzeln