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
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2009, 12:07     Titel: Brauche dringend Hilfe!!!
  Antworten mit Zitat      
Hi, ich bin Matlab Anfänger und komme überhaupt nicht klar mit einer Aufgabe. Ich weiß gar nicht, wie ich diese Aufgabe in den Editor schreibe. Könnt ihr vllt mir dabei helfen? Danke




Gegeben sei die gebrochenrationale Funktion

f(x)=(x³+(a1)x²+(a2)x+a3)/((b1)x²+(b2)x+b3)


Man berechne alle kritischen Punkte (Nullstellen, Polstelle, Lücken) dieser Funktion und stelle die Funktion einschließlich der berechneten Punkte graphisch dar. Der Darstellungsbereich auf der y-Achse ist auf das Intervall [-5,5] zu begrenzen.
Die als Vektoren a=[ a1 , a2 , a3 ] und b=[ b1 , b2 , b3 ] bereitgestellten Koeffizienten sind für den Testbetrieb fest einzuprogrammieren, wahlweise ist aber auch das Einlesen beliebiger Vektoren zu gestatten.

a = [ 0, 3, -2] b = [ 3, -2, 3]

Hinweis: Die Nullstellen der Polynome im Zähler und im Nenner können mit der Funktion "roots" berechnet werden.


Ihr würdet mir dabei so helfen!
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 27.10.2009, 12:26     Titel:
  Antworten mit Zitat      
Hallo,

der Hinweis ist eigentlich schon recht aussagekräftig, oder? Ansonsten hilft auch die Funktion polyval weiter ...
Wo genau haperts denn? Bei der Mathematik oder der Umsetzung in MATLAB?

Titus
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: 27.10.2009, 18:14     Titel:
  Antworten mit Zitat      
es hapert gewaltig an der umsetzung, hab das programm grad in info und wir müssen diese aufgabe als vorleistung für die prüfung abgeben. aber alle leute aus dem kurs sehen überhaupt nicht durch. allgemein hab ich von anderen studenten gehört dass matlab nicht gerade beliebt bei den studenten ist. würde mich sehr um jede hilfe freuen.
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: 27.10.2009, 18:15     Titel:
  Antworten mit Zitat      
p.s. mathematisch sehe ich da eher nicht die probleme, an der umsetzung scheiterts dann...
Private Nachricht senden Benutzer-Profile anzeigen
 
Petz
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 27.08.08
Wohnort: Lübeck
Version: ---
     Beitrag Verfasst am: 28.10.2009, 10:34     Titel:
  Antworten mit Zitat      
Moinmoin!

Gib einfach mal die gegebenen Werte ganz stur mathematisch in den Editor ein, ungefähr so:

Code:
a=[1 0 3 -2];
b=[3 -2 3];
zaehler= (a(1)*x.^3+a(2)*x.^2+a(3)*x+a(4));
nenner= (b(1)*x.^2+b(2)*x+b(3));
y=(zaehler./nenner);


Dann brauchst du einen x-Vektor. Den erzeugst du dir durch
x=(Anfangswert:Schrittweite:Endwert).
Jetzt kannst du einfach mal rumspielen und schauen ob dus hinbekommst. Zum plotten (Funktionsverlauf einfach mal anschauen hilft immer) schau dir mal die Funktionen
Code:
und
Code:
.

Dann einfach mal die schon empfohlene Funktion
Code:
anschauen, da siehst du dann auch warum ich den a-Vektor verlängert habe.
Zum finden der Nullstellen gibts aber auch noch unzählige andere Möglichkeiten!
Versuch dich mal dran!
Peter
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2009, 11:19     Titel:
  Antworten mit Zitat      
cool danke, und wie mach ich das mit den polstellen und den lücken?
Private Nachricht senden Benutzer-Profile anzeigen
 
Petz
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 27.08.08
Wohnort: Lübeck
Version: ---
     Beitrag Verfasst am: 28.10.2009, 11:27     Titel:
  Antworten mit Zitat      
Die können doch nur dann auftreten, wenn die Funktion nicht definiert ist, weil irgendein mathematisches Gesetz verletzt wird ( zum Beispiel: niemals durch Null teilen )... Wink

Darum steht der Nenner daoben auch nochmal einzeln, damit du den auch extra verwursten kannst!

Weisst du was ich meine?
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
faceman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2009, 12:43     Titel:
  Antworten mit Zitat      
ja verstehe ich so n bissl Smile dafür muss ich aber doch dann irgendwie das noch in matlab definieren dass der nenner nich null sein darf, weiß bloß nich wie.

du hattest auch das geschrieben:

Code:
zaehler= (a(1)*x.^3+a(2)*x.^2+a(3)*x+a(4));
nenner= (b(1)*x.^2+b(2)*x+b(3));


was hat das zu bedeuten: a(1), a(2)...b(3)?
ich will bzw. muss ja werte für a1 a2...b3 eingeben, hab das jetzt so verstanden dass a mal 1, a mal 2, a mal 3... multipliziert wird.
dachte mir dass ich zum anfang a1 usw. eingeben muss mit input?
wie gesagt, bin matlab anfänger... freue mich aba um jede hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
evil1202
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 12.08.09
Wohnort: Erfurt
Version: 2007 b
     Beitrag Verfasst am: 30.10.2009, 13:43     Titel:
  Antworten mit Zitat      
n das bedeutet das du von deiner a [0,3,-2 ] bei a(1)=0, a(2)=3 usw.
das gilt auch bei b
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: 31.10.2009, 19:06     Titel:
  Antworten mit Zitat      
wie kann ich die polstellen ermitteln? ich bin soweit dass die koeffizienten im zähler und nenner eingegeben werden, wenn nun aber der nenner=0 ist dann kommt die meldung "Warning: Divide by zero." ich muss ja schon im vorfeld irgendwie den nenner so definieren dass matlab erkennt dass der nenner auch null werden kann, damit ich nachher meine polstellen ausrechnen kann.
hier mein code:
Code:

clc
disp('Darstellung gebrochenrationaler Funktionen')
disp('Gegeben sei die Funktion:')
disp('                f(x)=   (x³+a1x²+a2x+a3)/(b1x²+b2x+b3)')
%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)];
nullstellen=roots(Zcoeff);
disp('Nullstellen:')
disp('      x1                     x2                 x3  ')
disp(nullstellen')
%Polstellen
if nenner==0
Ncoeff=[b(1) b(2) b(3)];
polstellen=roots(Ncoeff);
disp(polstellen')
else
  disp('Es gibt keine Polstellen')
end
 

komme einfach nicht weiter da ich ja eigentlich schon oben den nenner als NaN defienieren muss, bloß wie mache ich das?
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: 31.10.2009, 19:32     Titel:
  Antworten mit Zitat      
Hallo,

die Polstellen sind die Nullstellen des Nenners. Und wenn ich das richtig sehe, hast du die doch auch schon fast. Die Abfrage if nenner == 0 ist allerdings unsinnig, da die Nullstellen des Nenners ja nicht unbedingt auf dem Gitter -5:0.1:5 auftreten müssen.
Ich würde stattdessen folgende Abfrage nehmen:
Code:

(nach der Berechnung der polstellen).

Ich gehe mal einfach davon aus, dass du hier nur an reellwertigen Polstellen interessiert bist. Ansonsten gibt es natürlich immer welche, ausser b(1) = b(2) = 0.

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: 31.10.2009, 19:48     Titel:
  Antworten mit Zitat      
ja aber wenn ich oben die koeffizienten eingebe und der nenner dann null ist dann zeigt er mir die warnung an, die will ich ja umgehen, kann man den nenner nich irgendwie so definieren dass er null werden kann um die polstellen auszurechnen, ich weiß schon dass wenn man den nenner null setzt die polstellen rausbekommt. nur wenn ich für b1 und b2 werte hab und b3 null is, dann kann man ein x rausklammern und das wird null, d.h. immer wenn b3 null ist, kommt die warnung "warning: divide by zero."
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: 31.10.2009, 23:21     Titel:
  Antworten mit Zitat      
Hallo,

was ist denn so schlimm an der Warnung? Wenn das das einzige Problem ist, kannst du sie ja ausschalten; siehe Doku zu warning.

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: 01.11.2009, 11:59     Titel:
  Antworten mit Zitat      
hallo,
wie kann ich nullstellen und pollstellen in der graphik als punkte darstellen?
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: 01.11.2009, 12:20     Titel:
  Antworten mit Zitat      
Hallo,

in der komplexen Ebene:

Code:
plot(real(polstellen), imag(polstellen), 'bo')
hold on
plot(real(nullstellen), imag(nulstellen), 'go')
hold off


Wenn du dir eine andere Visualisierung vorstellst, müsstest du schon noch sagen wie.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.