Determinante

Ich soll mit JavaScript eine Seite machen, mit der eine Determinante berechnet wird. Habe also die Formeln a1x1+b1x2=c1 sowie a2x1+b2x2=c2
Weiterhin weiß ich, dass man die Determinante folgendermaßen berechnet: det=m11*m22- m12*m21
Definiere ich aber bei function input die ganzen Variablenaus beiden obengenannten Formeln, so habe ich ja zweimal eine jeweils doppelgenannt. Also , damit es nicht zu Verwirrung kommt, habe ich dann x1 definiert als det1 : det 2 sowie x2= det3 : det2 Doch leider funktioniert das nicht. Es ging kurzfristig, leider kam immer Nan und Nan raus, mittlerweile gehts wieder gar nicht.
Es taucht dann unten links ein gelbes Warndreieck auf: Fehler auf der Seite. Der Fehler ist bei button onclick->ein Objekt wird erwartet. Hm, was für eins denn?
Ich habe gerade die Zeile so gelassen und nicht verändert, also muss
das eigentlcih richtig sein.
Wer sich die Aufagabe genauer ansehen will:
http://www.inf.fh-flensburg.de/lang
auf inf.Uni (unten rechts) klicken, die 4. Aufgabe. Ich habe für die Aufgabe als Hilfe den Quelltext der Aufageb davor genommen

Gruß, Marleen

Es ging
kurzfristig, leider kam immer Nan und Nan raus, mittlerweile
gehts wieder gar nicht.

NaN -> Not a Number
d.h. dass du z.b. verscuht hast strings zu addieren. stell sicher, dass du alle werte aus „input“-feldern mit parsefloat o.ä. behandelst. siehe die funktion input aus dem beispiel aus der aufgabe davor von der seite rechts unten … :wink:

Es taucht dann unten links ein gelbes Warndreieck auf: Fehler
auf der Seite. Der Fehler ist bei button onclick->ein
Objekt wird erwartet. Hm, was für eins denn?

naja, der fehler ist eigentlich zu interpretieren als: „das was du mir gegeben hast sollte ein objekt sein, war es aber nicht.“

wenn du also noteirt hast:

und dann kommt o.g. fehler, heisst dass das er funktionsname nicht kennt, sei es aufgrund eines vorherigen syntax-errors, od. du hast schlicht einen falschen funktinosnamen genannt.

Ich habe gerade die Zeile so gelassen und nicht verändert,
also muss das eigentlcih richtig sein.

wenn der interpreter aber sagt, dass es nciht richtig ist, wird er wohl recht haben - der interpreter hat immer recht :wink:))

Wer sich die Aufagabe genauer ansehen will:

näää zeig uns lieber deinen bisherigen nciht funktionierenden code.

näää zeig uns lieber deinen bisherigen nciht funktionierenden
code.

Tue ich hiermit.

Lösung eines linearen Gleichnugssystems

// Globale Variablen
var a1, b1, c1, a2, b2, c2, x1, x2 ;

// Ein-/Ausgabe-Funktionen
function input()
{a1=parseFloat(document.eingabeformular.textbox1.value);
b1=parseFloat(document.eingabeformular.textbox2.value);
c1=parseFloat(document.eingabeformular.textbox3.value);
a2=parseFloat(document.eingabeformular.textbox4.value);
b2=parseFloat(document.eingabeformular.textbox5.value);
c2=parseFloat(document.eingabeformular.textbox6.value); }

function output()
{ document.write(„Die Lösungen der zwei Gleichungen sind: „);
document.write(x1);
document.write(“ und „);
document.write(x2);
document.write(“<p>Zurück mit der Zurück-Schaltfläche des Browsers“); }

// Berechnungs-Funktionen
function det(m11, m12, m21, m22)
{var a1, b1, c1, a2, b2, c2 ;

// wir setzen voraus, dass det>0 ist

det=m11*m22 - m21*m12
x1=det : det ;
x2=det : det;}

function main()
{input();
det(m11, m12, m21, m22);
output();}

Lösung eines linearen Gleichungssystems mit zwei Gleichungen und zwei Unbekannten .

Hierbei wird als Lösungsverfahren die Cramersche Regel angewandt.

Geben Sie die Koeffizienten a1,
b1, c1, a2, b2 und c2
der Gleichungen a1x1 + b1x2 = c1 und
a2x1 + b2x2 = c2 ein:

a1:  
b1:  
c1:

a2:  
b2:  
c2:  OK 

näää zeig uns lieber deinen bisherigen nciht funktionierenden
code.

Tue ich hiermit.

ok, wenn du die datei im browser aufrufst, siehst du dass er sofort einen scriptfehler, namentlich in zeile 33, bringt. den solltest du als erstes beheben, kann ich nicht machen, weil ich nciht erkenne, was du dort machen moechtest;

danach wird er einen fehler bringen, dass m11 in der zeile „det(m11, m12, m21, m22);“ nicht definiert sei. ich vermute mal, du musst dich dort auf a1 … c2 beziehen.

dann koennte es schon gehen. wenn ja, kannst du die zeile „{var a1, b1, c1, a2, b2, c2 ;“ in der function det rausschmeissen (die klammer brauchst du!), die ist dort naemlich ziemlich wirkungslos.

wenn du dann noch nciht weiterkommst, poste deinen neuen code.

ps:
wenn du die klammern leserlich setzen, tust du dich leichter:

deine mir unbekannte notation:

function name()
{code;
code;}

standard ist:

function name() {
 code;
 code;
}

ich bevorzuge:

function name()
 {
 code;
 code;
 }

danach wird er einen fehler bringen, dass m11 in der zeile
„det(m11, m12, m21, m22);“ nicht definiert sei. ich vermute
mal, du musst dich dort auf a1 … c2 beziehen.

ich habe jetzt versucht, dass Problem anders zu lösen. Es gibt nämlich in der Uni-bibliothek Bücher zum Thema Determinanten…
Dort stand, wenn ich folgende Gleichung habe
a11x1+a12x2=c1 und a21+a22=c2 dann ist die Determinante dazu:
(a11 a12
a21 a22) Das mit den Klammern sieht natürlich etwas anders aus, da
weiß ich aber nicht, wie das geht, ist ja auch jetzt egal.
So, wenn ich meine Determinante aber nu m11 usw. nennen soll, muss ich m11 usw. auch in den Gleichungen haben. Und erspare mir somit a1, b1, usw zu definieren.

dann koennte es schon gehen. wenn ja, kannst du die zeile
„{var a1, b1, c1, a2, b2, c2 ;“ in der function det
rausschmeissen (die klammer brauchst du!), die ist dort
naemlich ziemlich wirkungslos.

Hatten wir bei function solve der pq-Formel so gemacht, ich dachte, dass ich anstatt function solve function det schreiben muss, und somit dort alles nochmal definieren muss.

wenn du dann noch nciht weiterkommst, poste deinen neuen code.

trotzdem geht es noch nicht.

standard ist:

function name() {
code;
code;
}

haben wir auch so gelernt, die unleserliche Art spart nur beim Ausdrucken etwas Platz.

Lösung eines linearen Gleichnugssystems

// Globale Variablen
var m11, m12, m21, m22, c1, c2, x1, x2 ;

// Ein-/Ausgabe-Funktionen
function input()
{m11=parseFloat(document.eingabeformular.textbox1.value);
m12=parseFloat(document.eingabeformular.textbox2.value);
c1=parseFloat(document.eingabeformular.textbox3.value);
m21=parseFloat(document.eingabeformular.textbox4.value);
m22=parseFloat(document.eingabeformular.textbox5.value);
c2=parseFloat(document.eingabeformular.textbox6.value); }

function output()
{ document.write(„Die Lösungen der zwei Gleichungen sind: „);
document.write(x1);
document.write(“ und „);
document.write(x2);
document.write(“<p>Zurück mit der Zurück-Schaltfläche des Browsers“);
}

// Berechnungs-Funktionen
function det(m11, m12, m21, m22){
var m11, m12, m21, m22, c1, c2 ;

// wir setzen voraus, dass det>0 ist

det=m11*m22 - m21*m12
x1=(c1*m22 - c2*m12): (m11*m22 - m12*m21);
x2=(c2*m11 - c1*m21): (m11*m22 - m12*m21);
}

function main(){
input();
det(m11, m12, m21, m22);
output();
}

Lösung eines linearen Gleichungssystems mit zwei Gleichungen und zwei Unbekannten .

Hierbei wird als Lösungsverfahren die Cramersche Regel angewandt.

Geben Sie die Koeffizienten m11,
m12, c1, m21, m22 und c2
der Gleichungen m11*x1 + m12*x2 = c1 und
m21*x1 + m22*x2 = c2 ein:

m11:  
m12:  
c1:

m21:  
m22:  
c2:  OK 

Gruß, Marleen

die zeile var… muss weg, weil du sonst die argumente wegschmeisst (var deklariert eine neue variable):

// Berechnungs-Funktionen
function det(m11, m12, m21, m22){
var m11, m12, m21, m22, c1, c2 ;

der doppelpunkt in den 2 zeilen ist ein bug, wenn du eine division meisnt, dann ist die mit einem / zu notieren

> x1=(c1\*m22 - c2\*m12): (m11\*m22 - m12\*m21);  
> x2=(c2\*m11 - c1\*m21): (m11\*m22 - m12\*m21);

wenn du die bd. sachen getan hast, funktioniert der code bei mir im internetexplorer, in anderen browsern geht es prinzipbedingt wg. dem document.write in output nicht.

Ein ganz großes Juchu!!!
Hallo,

der doppelpunkt in den 2 zeilen ist ein bug,

Was ist ein „bug“?

wenn du eine
division meisnt, dann ist die mit einem / zu notieren

Ja, die Division habe ich gemeint, habe ich als erstes gemacht, es funktionierte dann halb, wieder mit NaN und NaN

die zeile var… muss weg, weil du sonst die argumente
wegschmeisst

was genau schmeiße ich denn damit weg? Die Zeile davor? (Weiß nicht, was du mit Argumente meinst.)
Habe ich getan, es geht. Juchuuuuuuuuuuuuuuuuuuu! Ich habe es geschafft!!!Ich bin so froh! Danke, Danke, danke!

Gruß, Marleen