|
|
|
muss in t - 50 Minuten fertig sein
|
Ich wünsche einen wunderschönen guten Abend liebe Forengemeinde.
Ich habe hier ein 'kleines' Problem mit einer zu lösenden Mathematik Aufgabe. Das ganze soll mit Scilab verwirklicht werden. Leider (ja, ich hätte es schon früher machen können) sollte das eigentlich kein größeres Problem darstellen (auch wenn ich kein Scilab Genie bin, eher das Gegenteil), aber nun stehe ich vor einem Scherbenhaufen.
Ich muss das ganze um spätestens 23:00 Uhr ins Postfach meines Profs schicken, sonst hab ich die Arschkarte gezogen
Es geht nicht selbst um die Mathematische Aufgabenstellung, sondern über die absolut verwirrende Fehlermeldung von Scilab, die lautet ...
| -->Resol_Iter(M, N, b, u0, eps)
!--error 266
A und B haben die selbe Anzahl an Spalten.
at line 44 of function Resol_Iter called by :
Resol_Iter(M, N, b, u0, eps)
| |
Ja, nur welches verdammtes A und B? Diese Variablen kommen nicht einmal in der Funktion vor:
|
function [u] = Resol_Iter (M,N,b,u0,eps)
//présuppositions
S = size(M); // dimension de M dans S; S(1) est la nombre des lignes, S(2) la nombre des colonnes
T = size(N);
if S(1) <> S(2) then // si la nombre des lignes n'est pas la meme que celle des colonnes, la matrice n'est pas carrée
disp("Erreur: La matrice M n´est pas carrée => pas inversible!");
return;
end
if T(1) <> S(1) then
disp("Erreur: La matrice N n`a pas la meme taille que M!")
elseif T(2) <> S(1) then
disp("Erreur: La matrice N n X´pas la meme taille que M!") //M-N ne peut pas etre calculée
return;
end
if det(M) == 0 then // si la determinant est égal à 0, la matrice n'est pas inversible
disp("Erreur: La matrice M n´est pas inversible!");
return;
end
if length(b) <> S(1) then // la dimension du vecteur b doit etre S(1) x 1
disp("Erreur: La multiplication avec b n`est pas possible!");
return;
end
if det(M-N) == 0 then // si la determinant est égal à 0, la matrice n'est pas inversible
disp("Erreur: La matrice A = M-N n´est pas inversible!");
return;
end
if length(u0) <> S(1) then // la dimension du vecteur u0 doit etre S(1) x 1
disp("Erreur: La multiplication avec u0 n`est pas possible!");
return;
end
//calculation de u(k+1)= inv(M)*N* u(k) + inv(M) * b pour résoudre Au=b
u = ones(S(1),1)
u = (N*u0+b)/M
Niter = 1
while norm(u - u0) > eps
u = u0
u = (N*u0+b)/M
Niter= Niter + 1
end
disp(Niter)
endfunction
| |
Falls ihr den Fehler reproduzieren wollt, Werte für die Variablen:
M = [1,2,0;2,3,0;3,4,1]
N = [1,2,5;-6,4,0;3,3,1]
b = [1;5;5]
u0 = [3;3;4]
eps = 0.01
Vielen Dank für die Aufmerksamkeit,
und einen stressfreien Abend
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von eX-blood am 30.11.2009 22:33]
|
|
|
|
|
|
Welche Zeile is Zeile 44? Nein, ich zähl jetz nich ab und guck auch nich nach
|
|
|
|
|
|
|
Ihh, das ist ja französisch!
|
|
|
|
|
|
|
| Zitat von mc.smurf
Welche Zeile is Zeile 44? Nein, ich zähl jetz nich ab und guck auch nich nach
| |
fett und kursiv
|
|
|
|
|
|
|
Das ist ja ein knorke Prof, so spät noch letzte Abgabetermine zu setzen.
|
|
|
|
|
|
|
Ich sehe eine Vektor-Matrix-Division, geht das...
|
|
|
|
|
|
|
Was soll das Programm denn machen?
|
|
|
|
|
|
|
Ist das nicht die Fehlermeldung? (nur eben auf französisch und mit anderen Bezeichnungen. )
if T(1) <> S(1) then
disp("Erreur: LX mXtrice N n`X pXs lX meme tXille que M!")
|
|
|
|
|
|
|
| Zitat von Sabin*
Was soll das Programm denn machen?
| |
Ich würde sagen iterativer Solver für irgendwas
|
|
|
|
|
|
|
Ich glaube, die Fehlermeldung ist falsch übersetzt.
Laut manual ist error 266 nämlich
266 "A and B must have equal number of columns."
Das Problem ist also das genaue Gegenteil, er kann nicht rechnen, weil die Spaltenanzahl unterschiedlich ist.
|
|
|
|
|
|
|
| Zitat von SpeedportW700V
Ich glaube, die Fehlermeldung ist falsch übersetzt.
Laut manual ist error 266 nämlich
266 "A and B must have equal number of columns."
Das Problem ist also das genaue Gegenteil, er kann nicht rechnen, weil die Spaltenanzahl unterschiedlich ist.
| |
aber wo? was ist A und B?
Sorry, ich habe automatisiert alle A durch X ersetzt, damit ich absolut ausschließen kann, dass kein A drin vorkommt, editiers grad zurück ...
|
|
|
|
|
|
|
| Zitat von SpeedportW700V
Ich glaube, die Fehlermeldung ist falsch übersetzt.
Laut manual ist error 266 nämlich
266 "A and B must have equal number of columns."
Das Problem ist also das genaue Gegenteil, er kann nicht rechnen, weil die Spaltenanzahl unterschiedlich ist.
| |
Sollte dann das sein, oder?
if T(1) <> S(1) then
disp("Erreur: LX mXtrice N n`X pXs lX meme tXille que M!")
e: wenn "taille" nun Breite ist, also Spaltenanzahl, könnte es sogar passen
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [KoM]TingelTangelBob am 30.11.2009 22:36]
|
|
|
|
|
|
Ich kann mir vorstellen, dass es ein kommutatives Problem ist. Du berechnest: u = (N*u0+b)/M
zuerst also y=(N*u0+b) wo ein 3x1 Vektor rauskommst. dann willts du den mit dem inversen multiplizeren, wenn ich das richtig sehe.
y*M^(-1) und das geht nicht?
du willst:
M/(N*u0+b)
da stehen haben
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Sabin* am 30.11.2009 22:43]
|
|
|
|
|
|
| Zitat von Sabin*
Ich kann mir vorstellen, dass es ein kommutatives Problem ist. Du berechnest: u = (N*u0+b)/M
zuerst also y=(N*u0+b) wo ein 3x1 Vektor rauskommst. dann willts du den mit dem inversen multiplizeren, wenn ich das richtig sehe.
y*M^(-1) und das geht nicht?
| |
Zeile 44 ersetzt durch:
|
z = N*v+b
disp(z)
disp(M)
u = z/M
| |
ergibt:
|
30.
-1.
27.
1. 2. 0.
2. 3. 0.
3. 4. 1.
!--error 266
...
| |
Okay, somit is klar, wo das Problem ist.
Laut Prof sollen wir aber ausdrücklichst den / Operator benutzen
Vielen Dank für die zahlreichen Antworten!
|
|
|
|
|
|
|
Wenn ich das richtig gelesen habe in der pdf: M/(N*u0+b).
|
|
|
|
|
|
|
ich habe ja M⁽⁻¹⁾
dann teile ich durch M, also /M nicht M/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Many Thanks!!!!!
Ich habe immer / anstatt \ benutzt, omg.
Es ist raus Ihr seids die Besten
|
|
|
|
|
|
|
aber 6 minuten zu spät,nech?
|
|
|
|
|
|
|
| Zitat von Gynäkologe
aber 6 minuten zu spät,nech?
| |
in Frankreich geht die Zeit langsamer , das passt schon
|
|
|
|
|
|
|
| Zitat von eX-blood
Frankreich
| |
Glück für dich, dass du das erst jetzt sagst..
|
|
|
|
|
|
|
Für welches Fach muss man denn sowas lösen? Ah verdammt ich hab auch / benutzt
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Sabin* am 30.11.2009 23:10]
|
|
|
|
|
|
| Zitat von mika
| Zitat von eX-blood
Frankreich
| |
Glück für dich, dass du das erst jetzt sagst..
| |
Was für eine garstige List...
|
|
|
|
|
|
|
| Zitat von Sabin*
Für welches Fach muss man denn sowas lösen? Ah verdammt ich hab auch / benutzt
| |
numerik
sagt mal leute, glaubt ihr wirklich ich schreibe die Comments weil ich lustig bin auf Französisch?
|
|
|
|
|
|
|
klickbar.
¤ jaja ich weiss dein Mitbewohner, aber der Zusammenhang is schon lustig... find ich :/
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Gurkenmarmelade am 30.11.2009 23:20]
|
|
|
|
|
|
| Zitat von Gurkenmarmelade
klickbar.
¤ jaja ich weiss dein Mitbewohner, aber der Zusammenhang is schon lustig... find ich :/
| |
dann ist es aber im falschen thread
|
|
|
|
|
|
|
Im anderen wurds ja schon angesprochen :/
|
|
|
|
|
|
Thema: Verwirrendes Problem mit Scilab ( muss in t - 50 Minuten fertig sein ) |