WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Jacobi-Verfahren

 

StAnger_
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2010, 20:52     Titel: Jacobi-Verfahren
  Antworten mit Zitat      
Hallo,

ich möchte gerne das Jacobi-Verfahren programmieren. Bin soweit fertig:
Code:

function [ xstern, its ] = jacobi ( A, b, x0, eps )

x(0) = x0;
k = 1;         % Laufvariable
its = 1;       % Anzahl der Iterationen

% Bestimmen der Größe der Matrix A
n = size(A,1);

% Zerlegung der Matrix A in D, L und R
D = zeros(n);
D(1:n+1:n*n) = diag(A);

L = tril(A);
L(1:n+1:n*n) = 0;

R = triu(A);
R(1:n+1:n*n) = 0;

% Berechnung von x(1), da dieses in der Bedingung der while - Schleife benötigt wird
x(1) = -inv(D)*(L+R)*x(0)+inv(D)*b;

% Iteration
while(abs(x(k)-x(k-1)) > eps)
    x(k+1) = -inv(D)*(L+R)*x(k)+inv(D)*b;
    k = k + 1;
    its = its + 1;
end

% Ergebnis
xstern = x(k);


end
 


Bekomme beim ausführen mit beliebigen Argumenten aber folgende Fehlermeldung:

??? Subscript indices must either be real positive integers or logicals.

Error in ==> jacobi at 3
x(0) = x0;

Falls ich aus der 0 'ne 1 mache und den Rest auch entsprechend anpasse, bekomme ich:

??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> jacobi at 3
x(1) = x1;

Wo liegt denn da nun der Fehler?
Ich verstehe dass so, dass es nicht funktioniert, weil x1 ein Vektor mit mehreren Elementen ist, der Index 1 aber skalarwertig?!? Aber wie könnte man denn dann Vektoren indizieren?
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.11.2010, 22:08     Titel: Re: Jacobi-Verfahren
  Antworten mit Zitat      
Hallo StAnger_,


Zitat:
??? Subscript indices must either be real positive integers or logicals.

Error in ==> jacobi at 3
x(0) = x0;

Eindeutige Fehlermeldung, oder? Im "Getting Started" der Matlab-Dokumentation wird beschrieben, welche Indices in Matlab erlaubt sind, nämlich ganzzahlige positive.

Zitat:

x(1) = x1;
Wo liegt denn da nun der Fehler?
Ich verstehe dass so, dass es nicht funktioniert, weil x1 ein Vektor mit mehreren Elementen ist, der Index 1 aber skalarwertig?!?

Ganz genau. Im "Getting Started" Kapitel findest Du auch etwas über Matrizen. Beispiel:
Code:

x = zeros(4, 4)
x(:, 1) = rand(4, 1);
x(2, :) = rand(1, 4);
 

Herzlich willkommen bei Matlab, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
StAnger_
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2010, 19:53     Titel:
  Antworten mit Zitat      
Danke ich glaub ich habs Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.