Laden...

Methode funktioniert beim zweiten Aufruf nicht

Erstellt von plucked vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.455 Views
P
plucked Themenstarter:in
70 Beiträge seit 2006
vor 17 Jahren
Methode funktioniert beim zweiten Aufruf nicht

Hallo,

Ich habe ein kleines Problem und komme nicht drauf woran das liegt. Ich will die Funktion "lineDiv" im folgenden Quelltext ausführen. Beim ersten mal macht er genau das was ich will und beim zweiten Mal wird nichts geändert.

Output:

Matrixoutput for [inputMatrix]

2 6 4
2 8 5
1 4 7

Matrixoutput for [outputMatrix]

1 0 0
0 1 0
0 0 1

Matrixoutput for [inputMatrix]

1 3 2
2 8 5
1 4 7

Matrixoutput for [outputMatrix]

1 0 0
0 1 0
0 0 1

public Inversing()
{


bothMatrixOut();

lineDiv(ref inputMatrix, 0, inputMatrix[0,0]);
lineDiv(ref outputMatrix, 0, inputMatrix[0,0]);

bothMatrixOut();

Console.ReadKey();
}

public void lineDiv(ref double[,] intputArray, int line, double divident)
{
for (int i = 0; i < 3; i++)
{
intputArray[line, i] = intputArray[line, i] / divident;
}
}

Grüße

plucked

121 Beiträge seit 2006
vor 17 Jahren

Hi plucked,
das Programm läuft doch wunderbar,
Du teilst durch inputMatrix[0,0]
dessen Wert ist eben beim ersten Mal 2
und beim zweiten Mal 1. x/1 = x.
(Du arbeitest mit ref und veränderst Deine Matrix)
Aus meiner Sicht alles bestens 🙂
Gruß Hape

P
plucked Themenstarter:in
70 Beiträge seit 2006
vor 17 Jahren

Das Problem ist das er die output-Matrix nicht verändert (zweiter Methodenaufruf).

Das ist quasi so als ob ich für jedes Array eine eigene Methode schreiben müsste.

Eigentlich müsste der Output zum schluss so aussehen:

Matrixoutput for [outputMatrix]

0.5 0 0
0 1 0
0 0 1

Grüße

plucked

121 Beiträge seit 2006
vor 17 Jahren

Das Problem ist das er die output-Matrix nicht verändert (zweiter Methodenaufruf).

Schon klar. Du rufst doch Deine lineDev Methode beim zweiten Mal u.a. mit inputMatrix[0,0] auf und da steht eine 1 drinnen.
Und dann teilst Du irgendwas durch 1 und deshalb tut sich nichts.
Gruß Hape

121 Beiträge seit 2006
vor 17 Jahren

Hi plucked,
dann mach

lineDiv(ref inputMatrix, 0, 2);
statt
lineDiv(ref inputMatrix, 0, inputMatrix[0,0]);

dann halbiert er das auch richtig.
Gruß Hape

PS: Weiß ja nicht, was Dein Programm bezwecken soll, das steht nirgends in Prosa grins

P
plucked Themenstarter:in
70 Beiträge seit 2006
vor 17 Jahren

Stimmt du hast recht, ich hab da n kleinen Dreher drin, ich glaub ich muss output zuerst berechnen. Danke (o:

ps: Ich will für mich selber eine methode zum Invertieren einer Matrix schreiben (Gauß-Jordan-Verfahren)

Grüße

plucked