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

Polynom dynamisch erstellen

 

fish-guts

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2011, 15:51     Titel: Polynom dynamisch erstellen
  Antworten mit Zitat      
Hallo

Ich muss in der Numerik-Vorlesung folgene Aufgabe lösen:

Schreiben Sie ein Programm, welches Ihnen ein Polynom y = a_{n} x^{n} + a_{n-1} x^{n-1}+ ... + a_{1} x^{0} vom Grad n für ein vorgegebenes x-Intervall zeichnet. Input ist ein Vektor mit dem Koeffizienten  a_{0}, a_{1}, ...,  a_{n} , sowie die Intervallsgrenzen. Output ist der Vektor y mit den Funktionswerten und die Grafik am Bildschirm. MATLAB interne Funktionen wie poly() sollen nicht verwendet werden.

Leider habe ich keinen Peil wo ich beginnen soll. Die Input Werte habe ich mal als Vektor
Code:
a = [2 4 7 3 8]
definiert.

Ich hab mir dann überlegt, ob ich eine symbolische Variable y für das Polynom nehmen soll und dann für jeden Durchlauf das entsprechende Glied des Polynoms einfügen soll, also so etwas:

Code:

a = [4 2 6 9 8];
n = length(a)-1;
syms y;
for i = 1 : n
    y = y + 'a[n] .* x^n';
end
 


Leider funktioniert das überhaupt nicht. Hat jemand einen Tipp wie ich das hinbekomme?

Danke und Gruss

fish-guts


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 02.10.2011, 16:34     Titel:
  Antworten mit Zitat      
In meinen Augen hast du die Lösung doch fast. Warum nicht so...ohne syms?

Code:

a = [4 2 6 9 8];
x = [-2 -1 0 1 2] ; % Intervall von x
n = length(a)-1;
y = zeros(length(x),1); % preallocate
for j = 1:length(x)
     for i = 0 : n
          y(j) = y(j) + a(n+1) * x(j)^n; % a(0) ist nicht möglich...erstes Element eines Array ist a(1)
     end
end
plot(x,y)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2011, 16:36     Titel:
  Antworten mit Zitat      
Hallo,
dein Schleifenzähler kann nicht NULL werden, d.h. das kleinste i ist i=1. In der Schleife wird also das Element x^0 nicht berechnet.
Warum machst du das mit einer Schleife? Viel einfacher ist's doch den Vektor a(1,n) mit der Matrix X(n,m) zu multiplizieren.
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2011, 16:41     Titel:
  Antworten mit Zitat      
ich mach mal aus dem a(n+1) von DSP ein a(i+1) und x^n ein x^i! Very Happy
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
fish-guts

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2011, 16:47     Titel:
  Antworten mit Zitat      
Hi Zusammen


Danke für eure Antworten.

Zur 1. Lösung: Das mit dem Intervall ist mir nicht ganz klar; ein Intervall müsste doch für die Werte von x gesetzt sein, also z.B. [-3, 3] und nicht gleich viele Elemente wie a?

Oder seh ich das falsch?

Zur 2. Lösung: Ich dachte, das wär am einfachsten. Wie sieht denn das aus, wenn ich den Vektor mit dem Matrix multipliziere? Ich kann mir grad keinen Reim drauf machen.
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 02.10.2011, 17:04     Titel:
  Antworten mit Zitat      
Oh...danke Kevin. Ist mir gar nicht aufgefallen Embarassed

Du kannst für x doch auch nur 2 Werte vorgeben...allerdings wird man wohl um den Verlauf des Polynoms darstellen zu können, mehrere x Werte innerhalb des Intervalls benötigen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2011, 17:09     Titel:
  Antworten mit Zitat      
Nehmen wir einen einfachen und speziellen Fall:
a=[a0,a1];
x=[x0,x1,x2];

y=a(1)*x^0+a(2)*x^1;

y(1)=a(1)*x(1)^0+a(2)*x(1)^1;
y(2)=a(1)*x(2)^0+a(2)*x(2)^1;
y(3)=a(1)*x(3)^0+a(2)*x(3)^1;

Wenn du das in Matixschreibweise umformst, hast du die Lösung. Die X-Matrix wird aufgestellt durch Multiplikation von x mit einem Einheitsvektor.
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2011, 18:44     Titel:
  Antworten mit Zitat      
Ich habs jetzt mal mit DSP's Lösung gemacht.

Seh ich das richtig, dass ich für a die Koeffenzienten invers eintragen muss?

Wenn ich also ein Polynom habe:

x^{5} -  30x^{4} - 30x^{3}+110x^{2}+29x - 105

muss ich dann a so definiert: a = [-105 29 110 -30 -5 1]?

Für x habe ich ein Intervall x = [-10:1:10] definiert.

Das Plot ist attached. Aber irgendwas scheint noch nicht zu stimmen. Ich habe einen Plot vom genau gleichen Polynom erstellt. Siehe pic2. Es gibt da unterschiede. Habe ich im Code einen Fehler?

code_zu_pic2.txt
 Beschreibung:

Download
 Dateiname:  code_zu_pic2.txt
 Dateigröße:  646 Bytes
 Heruntergeladen:  520 mal
code_zu_pic1.txt
 Beschreibung:

Download
 Dateiname:  code_zu_pic1.txt
 Dateigröße:  673 Bytes
 Heruntergeladen:  452 mal
pic2.jpg
 Beschreibung:

Download
 Dateiname:  pic2.jpg
 Dateigröße:  68.91 KB
 Heruntergeladen:  1041 mal
pic1.jpg
 Beschreibung:

Download
 Dateiname:  pic1.jpg
 Dateigröße:  13.97 KB
 Heruntergeladen:  1026 mal
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2011, 10:58     Titel:
  Antworten mit Zitat      
In code 2 steht
Code:

wo in code 1
Code:

steht. Deshalb sind die Funktionen unterschiedlich.
_________________

1000 Buchstaben? Warum nur 6?
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.