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

Jakobi Matrix numerisch

 

Christian St.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2016, 09:05     Titel: Jakobi Matrix numerisch
  Antworten mit Zitat      
Hallo zuasamen,
ich habe folgendes Problem, ich habe ein nichtlineares gleichungssystem mit (vorerst) 7 Variablen. Dieses Gleichungssystem beschreibt ein vermaschtes Rohrnetz mit zwei Einspeisungen. Ich suche nach einem Lösungsverfahren das mir zuverlässig den Massenstrom in allen Leitungen berechnet. Ich möchte dieses Verfahren dann in einem größeren und System verwenden um dies ebenfalls zu berechnen. Um das Newtonverfahren anwenden zu können muss ich ja bei einem Gleichungssystem die Jakobimatrix bilden, ich habe mittlerweile schon einiges gegooglet und beispiele durchgelesen, wobei die Jakobi immer "zu Fuß" gebildet wurde. Ich kann mir nicht vorstellen dass es jedenfalls notwendig ist das Gleichungssystem selbst abzuleiten, das muss doch auch numerisch möglich sein.



Ich habe dazu ein Functionhandle gebildet, wenn ich dieses System nun versuche mit fsolve zu lösen, bekomme ich zwar die richtige Lösung, jedoch auch Warnungen dass die Matrix singulär ist. Das bedeutet doch, dass die Toleranzen der Lösung relativ groß sind und evtl bei einem größeren System stark abweichen werden, oder?

Code:

mstrom= @(x)[10-x(1)-x(2);
x(1)+x(3)-10;
x(2)+15-x(5);
x(5)-x(4)-x(6);
x(4)+x(6)-x(7);
x(7)-x(3)-15;
x(2).^2*70+x(5).^2*100+x(6).^2*500+x(7).^2*100+x(3).^2*70-x(1).^2*300];


Dererste Teil stellt die Knotengleichungen dar und die letzte Zeile eine Masche,

Vielleicht hat wer einen Tipp wie ich dieses Problem am besten angehen kann??

SG Christian


Christian St.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2016, 12:00     Titel:
  Antworten mit Zitat      
Hallo nochmal,

ich habe jetzt etwas weiter gesucht und ein en Code gefunden der fast genau das macht was ich brauche - ein Gleichungssystem an der Stelle x ableiten.

Ich möchte es nun so abändern dass ich es verwenden kann, nur schaffe ich es nicht sie von dem vektor x abhängig zu machen.

Code:

function df=NumJacob(f,x0,varargin)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This code was made by Youngmok Yun, UT Austin.
% You can distribute or modify as you want,
% but please do not erase this comment
% - 2013.05.04
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

epsilon = 1e-6; % delta
l_x0=length(x0); % length of x0;
f0=feval(f,x0,varargin{:}); % caclulate f0
l_f=size(f0,1); % check the size of f



for i=1:l_x0
    dx = [ zeros(i-1,1); epsilon; zeros(l_x0-i,1)];
    df(:,i) = ( feval(f,x0+dx,varargin{:}) - f0)/epsilon;
end
 


Um diese Funktion verwenden zu können müsste sie ein Functionhandle bei x ableiten und als Matrix ausgeben und mit dem command NumJacob(x0) aufgerufen werden.

Vielleicht hat wer eine Idee, ich bin für jeden Tipp dankbar.

SG Christian
 
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 - 2024 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.