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

Randbedingungen bestimmen

 

Carl
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 00:36     Titel: Randbedingungen bestimmen
  Antworten mit Zitat      
Ich habe ein Problem bei der Bestimmung meiner Randbedingungen für mein Gebiet. Das Ganze soll eine Dreiecksfläche sein, auf der eine Funktion abgebildet werden kann. Wie kann ich dafür meine Ränder definieren? Die Vertikale sowie Horizontale sind ja kein Problem, jedoch weiß ich nicht, wie ich mit der Diagonalen/Schräge umzugehen habe. Die eigentliche Matrix ist schon erstellt. Kann mir da jemand weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen


Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 23.12.2010, 09:43     Titel:
  Antworten mit Zitat      
Zeig mal was du schon hast, dann ist es einfacher zu helfen.


Grüße
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Carl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 11:49     Titel:
  Antworten mit Zitat      
ich habe dir das Programm mal per Mail geschickt
Private Nachricht senden Benutzer-Profile anzeigen
 
Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 23.12.2010, 11:58     Titel:
  Antworten mit Zitat      
Ich darf auf "Arbeit" gmx und sowas nicht besuchen.
Stells doch hier rein, machen ja alle Very Happy
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Carl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 14:36     Titel:
  Antworten mit Zitat      
Code:

Mx=10;
My=5;

h=Mx./10;
k=My./10;


%% Dreieck erstellen

%Hier werden zunächst die Ecken des Dreiecks definiert. Die Eckpunkte sind
%die vom Benutzer gewählte "Mx und My"
Ecke1=[0,0];
Ecke2=[Mx,0];
Ecke3=[0,My];

%Nun wird das Gitter erzeugt.
%Das Programm stellt das Gitter in der beliebig gewählten Schrittweite h
%bis zum eingegebenen Punkt Mx dar.
 x=0:h:Mx;
 y=0:k:My;
 
[X,Y]=meshgrid(x,y);

%An dieser Stelle wird das Dreieck erstellt.
ecken=[Ecke1;Ecke3;Ecke2;Ecke1];

% px und py tragen Spalten über Zeilen der Werte von x und y auf
px=ecken(:,1); py=ecken(:,2);

%Nun werden nur die Punkte berücksichtigt, die sich innerhalb der
%Dreiecksbegrenzungen liegen. Die auf der Begrenzung liegenden werden nicht
%berücksichtigt.
[in on]=inpolygon(X,Y,px,py);
in=in & ~on;

%Der nachfolgende Befehl ist eine Alternative zu der von uns gewählten
%Möglichkeit:
%in=logical(in-on);

% Nachfolgend wird ein Fenster für die Darstellung erzeugt.
figure(1)

%Das Gitter wird geplottet und die Achsen erstellt.
plot(X,Y,'k'); hold on; axis ([0, Mx, 0, My])
plot(X',Y','k')

%Die Figur wird gezeichnet und die Punkte mit einem blauen Stern in der
%Strichstärke 1 markiert.
plot(px,py,X(in),Y(in),'b*','LineWidth',1)
plot(px,py,X(on),Y(on),'m*','LineWidth',1)


%% Randbedingungen definieren

uB=zeros(1,Mx);
uL=zeros(1,My);
uR=sin(3*pi*x);


%% Analytische Lösung

UE=(sin(3*pi*X)).*sinh(sin(3*pi*Y)./sinh(3*pi));


%% Rechte Seite des Gleichungssystems

rhs=zeros((Mx-1)*(My-1));



for kk=1:Mx
kp=kk+1;
km=kk-1;
jj=(Mx-1)*Mx+kk;
%rhs(1+km+Mx)=rhs(1+km*Mx)+uL(kp);
rhs(kk*Mx)=rhs(kk*Mx)+uR(kp);
%rhs(kk)=rhs(kk)+uB(kp);
end

%% Aufbau der Matrix  

%In diesem Abschnitt wird nun die Matrix des Gebietes erzeugt. Dabei wird
%auf die vom Benutzer eingegebenen Angaben zurückgegriffen.
%Als Vorlage hierfür diente eine handschriftliche Skizze.

h1=h;
h2=h;
h3=k;
h4=k;

UP=(-2./(h1.*h2))-(2./(h3.*h4));
UW=2.*(h2.*(h1+h2));
UN=2.*(h3.*(h3+h4));
US=2.*(h4.*(h3+h4));
UE=2.*(h1.*(h1+h2));
 
mat1=UP;  

C=(Mx./h)-2;  
 
 
%Beginn der for-Schleife
for m=2:C                      

   
%Erstellung der Hauptdiagonalen.
B=UW.*diag(ones(1,m-1),-1)+UE.*diag(ones(1,m-1),1)+UP.*diag(ones(1,m));

%An die Hauptdiagonale werden die Nebendiagonalen drangesetzt.
Bu=US.*diag(ones(1,m-1),-1);  
     
%Die unteren Nebendiagonalen werden zurechtgeschnitten.
Bu=US.*Bu(2:end,:);    
 

%Die Nullmatrizen werden erzeugt und angesetzt.
Bz=zeros(size(mat1,1)-size(Bu,1),m);  

%Bu wird aus den bestehenden Bu und Bz zusammengesetzt.
Bu=[Bu;Bz];

%mat1 ist die Matrix, die nachfolgend aus den Einzelbestandteilen
%zusammengesetzt wird.
mat1=[B Bu' ; Bu  mat1];  

%Ende der For-Schleife
end

%Matrix mat1 wird der Vereinfachung halber in A umbenannt.
A=mat1;

%Die Größe der Matrix wird im command-Window dargestellt um die gewünschten
%Ergebnisse bequem überprüfen zu können.
[m,n] = size(A);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.12.2010, 19:51     Titel:
  Antworten mit Zitat      
Hey Carl, wir haben dein Beitrag mit viel interesse verfolgt, da wir ein sehr ähnliches Projkt für die FH mache müßen. Daher würden wir gerne wissen, ob du schon weitergekommen bist mit den Randbedingungen?
Grüße aus Hamburg
René und Lars
 
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.