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

Brauche dringend Hilfe!!!

 

faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2009, 12:42     Titel:
  Antworten mit Zitat      
ich will dass er nur die real pol und nullstellen anzeigt. die imaginären sollen außen vor gelassen werden.

desweiteren hab ich eine frage, wie man die definitionslücken berechnet. mathematisch macht man das ja mit dem limes soweit ich weiß.
bloß wie schreibt man den code für matlab?
Private Nachricht senden Benutzer-Profile anzeigen


faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2009, 11:16     Titel:
  Antworten mit Zitat      
kann mir keiner helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2009, 12:26     Titel:
  Antworten mit Zitat      
Wie sollen sie denn angezeigt werden?

Vorschlag z.B.:

plot(real(polstellen), 0, 'bo')

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2009, 11:44     Titel:
  Antworten mit Zitat      
es ist ein neues problem aufgetreten wobei ich nicht weiter weiß. mir wurde gesagt dass ich die Nullstellen mit den polstellen vergleichen soll, dabei soll ich eine for schleife einbauen. mein programm für die aufgabe sieht wie folgt aus:

Code:

clc
format bank
disp('   ');
disp('                             >>>>>>>>>>>>>>>Darstellung gebrochenrationaler Funktionen<<<<<<<<<<<<<<<')
disp('   ');disp('   ');
disp('     Gegeben sei die Funktion:')
disp('   ');
disp('                               f(x)=   (x³+a1x²+a2x+a3)/(b1x²+b2x+b3)')
disp('   ');
%Eingabe der Koeffizienten
                           a=input('Geben Sie die Werte der Koeffizienten im Zähler ein! Hinweis: [a1 a2 a3] ');
                           b=input('Geben Sie die Werte der Koeffizienten im Nenner ein! Hinweis: [b1 b2 b3] ');
                           x=-5:0.1:5;
                           zaehler=(x.^3+a(1)*x.^2+a(2)*x+a(3));
                           nenner=(b(1)*x.^2+b(2)*x+b(3));
                           y=(zaehler./nenner);
      %Nullstellen berechnen
      Zcoeff=[1 a(1) a(2) a(3)];
      null=roots(Zcoeff);
      null=null(imag(null)==0);
      disp('   ');
      disp('Nullstellen:')
      disp('   ');
      disp(null(:))
      %Polstellen
      Ncoeff=[b(1) b(2) b(3)];
      pol=roots(Ncoeff);
      %pol=pol(imag(pol)==0);
      disp('   ');
      if isreal(pol) & (pol.^3+a(1)*pol.^2+a(2)*pol+a(3)~=0)
         disp('Polstellen:')
         disp('   ');
         disp(pol(:))
      else
         disp('Es gibt keine Polstellen!')
      end
      disp('   ');
       %Definitionsluecken
      luecke=roots(Ncoeff);
      DL=(pol.^3+a(1)*pol.^2+a(2)*pol+a(3));
      disp('   ');
      if DL==0                                      
         disp('Definitionslücke:')
         disp('   ');
         disp(luecke(:))
      else
          disp('Es gibt keine Definitionslücken!')
       end
       disp('   ');
      %Grafikausgabe
      axis([-5,5,-5,5])
      plot(x,y)
      hold on
      plot(real(pol), 0, 'go',real(null), 0, 'r+')
      %plot(real(pol), 0, 'bo')
      %plot(real(null), 0, 'r+')
      xlabel('X-Achse')
      ylabel('Y-Achse')
      title('Darstellung gebrochenrationaler Funktionen')
      grid on
      pause
close
 


ich hab überhaupt keine ahnung wie ich die nullstellen mit den polstellen vergleiche, denn daraus folgt eine lücke.
habe für
a=[-2 -5 6]
b=[1 3 2]
eingegeben, dabei zeigt er 3 nullstellen, aber die eine nullstele ist eine lücke. die nullstellen und polstellen werden in matlab in vektoren ausgegeben damit sie verglichen werden können.

kann mir jemand weiter helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2009, 12:17     Titel:
  Antworten mit Zitat      
Hallo,

mit
Code:
intersect(polstellen, nullstellen)
kannst du herausfinden, welche Zahlen in beiden Vektoren auftauchen. Dann ist aber immer noch das Problem, dass das Verhalten um den Punkt herum von der Vielfachheit abhängt. Soll das auch ermittelt werden?

Eine Bitte übrigens: versuche, die Frage übersichtlich zu stellen. Was soll man denn mit dem ellenlangen Code??

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2009, 11:31     Titel:
  Antworten mit Zitat      
sorry, dachte nur dass damit jemand was anfangen kann.

mein prof meinte dass ich in den code noch eine for schleife einfügen muss damit die nullstellen und polstellen verglichen werden können. wenn eine nullstelle mit einer polstelle übereinstimmt, dann ist es eine lücke.

er meinte mit solch einem beispiel würde ich wissen wie es geht:
Code:

for i=1:3
for j=1:2
if null(i)==pol(j)
luecke=[luecke,null(i)];
end
end
end
 


ich weiß nur nicht was i=1:3 und j=1:2 zu bedeuten hat. mein erster gedanke war dass es die null- und polstellen sind, aber ich habe beide stellen mit roots errechnet. deswegen frage ich mich wie er auf die zahlen kommt? er hatte für das beispiel die nullstellen=[1 2 3] und polstellen=[-1 1]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2009, 12:03     Titel:
  Antworten mit Zitat      
Hallo,

das bedeutet, dass i die Werte 1,2,3 annehmen soll, und j die Werte 1,2. Allgemeiner sollte man statt 3 length(null) und statt 2 length(pol) verwenden. Dann sieht es so aus:

Code:
null =[1 2 3]
pol =[-1 1]
luecke = [];
for i=1:length(null)
for j=1:length(pol)
if null(i)==pol(j)
luecke=[luecke,null(i)];
end
end
end


Und jetzt mal zum Vergleich

Code:


Fällt dir auf, dass da das gleiche rauskommt? Siehe also Antwort davor.
Ich würde dich ernsthaft bitten, die komplette Antwort zu lesen und ggf. Fragen dazu zu stellen, bevor du deine nächste Frage postest.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2009, 12:47     Titel:
  Antworten mit Zitat      
ok...
sorry...
wie ich sehe hast du die null- und polstellen definiert. mein problem ist aber dass ich ja durch roots
null=roots(Zcoeff)
pol=roots(Ncoeff)

die stellen ausrechne. d.h. ich weiß ja gar nicht welche nullstellen ich genau habe. ich kann ja nicht einfach

null=[null1 null2 null3]

schreiben. ich weiß, hier kann ich mich nich genau ausdrücken, es wäre auch besser wenn man den code oben mal abspielen lässt und dann für a=[-2 -5 6] und für b=[1 3 2] eingibt, kann die m-file datei auch hochladen. wenn man die werte für a und b eingibt dann erhält man 3 nullstellen und zwei polstellen, dabei ist aber die eine null- und die eine polstelle eine definitionslücke. er gibt mir aber keine lücke an und die "wahre" lücke soll nich als null- und polstelle angezeigt werden. sondern als lücke...sorry wenn das so kompliziert beschrieben is, aber ich hab selber keine ahnung von matlab, hatte mal mit delphi programmiert.

haus.m
 Beschreibung:

Download
 Dateiname:  haus.m
 Dateigröße:  3.79 KB
 Heruntergeladen:  485 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2009, 14:04     Titel:
  Antworten mit Zitat      
Hallo,

dein Programm gibt für deine Angaben KEINE Polstellen aus. Grund ist die Abfrage
Code:
if isreal(pol) & (pol.^3+a(1)*pol.^2+a(2)*pol+a(3)~=0)


Diese wird auf ALLE Polstellen gleichzeitig angewandt. D.h. wenn eine Polstelle eine Lücke ist, werden die anderen auch nicht ausgegeben.
Zudem ist ~= 0 oder == schlecht, da es zu numerischen Ungenauigkeiten kommen kann.
Dasselbe gilt auch für die Lücken. Gib nach deinem Code mal
Code:

ein. Die sind gar nicht gleich - durch numerische Fehler.

Dein Code wäre übrigens übersichtlicher, wenn du

Code:
disp(' ')
            pause
            disp('(1) Wertetabelle');disp('(2) Nullstellen');disp('(3) Polstellen');disp('(4) Definitionslücken');disp('(5) Grafik');disp('(6) Programm beenden');disp(' ')
            auswahl= input('Eingabe einer Zahl: ','s');


aus dem Switch-Case-Teil herausnehmen würdest (kannst ja auswahl == 0 überprüfen).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2009, 21:56     Titel:
  Antworten mit Zitat      
ich seh da irgendwie überhaupt nich druch, bin das nicht gewohnt dass nullstellen als matrix/vektor angegeben werden. kenne das halt nich von delphi. kannst du mir vllt die befehle reinschreiben und die datei dann schicken? sorry, aber mit matlab stehe ich irgendwie auf kriegsfuss...anfänger halt Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2009, 22:45     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich seh da irgendwie überhaupt nich druch


Einen Punkt nach dem anderen durchgehen und gegebenenfalls Rückfragen stellen.

Zitat:
bin das nicht gewohnt dass nullstellen als matrix/vektor angegeben werden

als was sollen sie denn sonst dargestellt werden? als Array? ein Vektor ist letztlich auch nichts anderes.

Zitat:
kenne das halt nich von delphi.

Für Delphi kann ich es nicht sagen, aber zumindest bei C würdest du auf genau die gleichen Probleme stoßen. Es sind nämliche keine Probleme von MATLAB, sondern numerische Probleme.

Anbei der gewünschte Lösungsvorschlag. Ich kann dir aber nur raten, selbstständiges Arbeiten zu lernen (das kann Fragen einschließen, aber dann zumindest Antworten aufzunehmen und selber umzusetzen).

Grüße,
Harald

haus2.m
 Beschreibung:
Lösungsvorschlag

Download
 Dateiname:  haus2.m
 Dateigröße:  4.22 KB
 Heruntergeladen:  487 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2009, 23:26     Titel:
  Antworten mit Zitat      
vielen dank...du hast auch vollkommen recht, aber ich habe matlab seit 1 monat, in den übungsstunden komme ich kaum mit, ich habe ein skript wo nur kurze stichpunkte und unverständlich beispiele sind. habe auch schon oft gegoogelt, aber dadurch dass du mir das jetzt gezeigt hast, verstehe ich das besser als wenn ich irgendwelche bruchteile aus meinem skript verwende. danke nochmal.
Private Nachricht senden Benutzer-Profile anzeigen
 
gast von heute

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2009, 19:06     Titel: hilfe
  Antworten mit Zitat      
kann einer vielleicht einen kompletten lösungsvorschlaf für das programm reinstellen ?
 
gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2009, 19:20     Titel: polstelle als grade
  Antworten mit Zitat      
wie mach ich die polstelle zu einer linie ?
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.