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

Partialbruchzerlegung mit mehreren Skripten

 

N.U.89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2020, 10:49     Titel: Partialbruchzerlegung mit mehreren Skripten
  Antworten mit Zitat      
Hallo,

ich stehe nun vor dem nächsten Problem.
Meine Aufgabe ist es eine Partialbruchzerlegung mit Matlab durchzuführen.
Ich habe dafür versucht ein Programm zu schreiben. In diesem Programm möchte ich einem Nutzer mit Befehlen und Erklärungen die Zerlegung einfach gestalten.
Dafür sind bei mir jetzt Fünf Skripte entstanden die untereinander nach Aufruf des Nutzers ausgeführt werden.

Gibt es eine Möglichkeit, die Skripte in ein gemeinsames zu überführen, diese aber nicht alle auf einmal ausführen zu lassen?

Die nächste Frage wäre, ob ich das Ergebnis der Partialbruchzerlegung auch in der Form 3/(x-1) + 2/(x+1) ..... ausgeben kann ?

Vielen dank im Vorraus

Gruß
Nico
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.04.2020, 11:00     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Gibt es eine Möglichkeit, die Skripte in ein gemeinsames zu überführen, diese aber nicht alle auf einmal ausführen zu lassen?

Du kannst das Skript in Sections unterteilen (klassischer Editor: %% (Leerzeichen) Text, Live Editor: Section Break - Button) und dann "Run Section" verwenden.

Zitat:
Die nächste Frage wäre, ob ich das Ergebnis der Partialbruchzerlegung auch in der Form 3/(x-1) + 2/(x+1) ..... ausgeben kann ?

Wie wird das denn momentan ausgegeben, was hast du versucht, um das in der neuen Form auszugeben und welche Probleme sind dabei aufgetreten?

Das schönste wäre m.E. im Live Editor die Symbolic Math-Toolbox zu verwenden, siehe als PDF exportiertes Beispiel.

Grüße,
Harald

bsp.pdf
 Beschreibung:

Download
 Dateiname:  bsp.pdf
 Dateigröße:  18.98 KB
 Heruntergeladen:  228 mal

_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
N.U.89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2020, 15:13     Titel:
  Antworten mit Zitat      
Aktuell wird das Ergebnis folgendermaßen ausgegeben:

r =

3
2
4


p =

1
1
-1


k =

[]


Ich hätte das gerne in der Form wie in deinem Beispiel :

f(x)= 3/(x-1) + 2/(x-1) + 4/(x+1)

Allerdings darf das Programm nur als m-file gespeichert werden und nicht als .mlx


Danke

Gruß
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

dann könnte man z.B. etwas basteln:

Code:
fmt =  '%i/(x%+i) + ';
txt = sprintf(fmt, [r, -p]');
disp(txt(1:end-3)) % letztes + braucht man nicht mehr


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
N.U.89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2020, 14:41     Titel:
  Antworten mit Zitat      
Das ist echt schon super vielen lieben Dank.

Nun habe ich mal eine andere Aufgabe eingegeben.
Und zwar folgende: f(x)= 1/(x²-1)*(x³+1)

Als Ergebnis kam dann folgendes:
r =
-1/4 + 0i
-1/6 + 0i
1/4 + 0i
-1/9727775195120234 + 260/1351i
-1/9727775195120234 - 260/1351i


p =
-1 + 0i
-1 + 0i
1 + 0i
1/2 + 1170/1351i
1/2 - 1170/1351i

Die ersten drei Zeilen sind klar, aber die letzten beiden bei r und p kann ich nicht interpretieren. Mein Dozent schrieb mir, dass die Funktion eval() oder double() das Ergebnis: -1/(3*x^2-x+1) liefern soll.

Wenn ich dies anwende kommt aber leider gar nichts bei raus. Hast du dazu auch eine Idee ?

Gruß
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das Ergebnis legt nahe, dass nicht nur Terme der Form a/(x-b) zulässig sein sollen, sondern auch Terme der Form a/(x^2+b*c+c). Das hast du wohl noch nicht berücksichtigt.

M.E. stimmt da aber was nicht. Wenn man die beiden Ausdrücke plottet, kommen vollkommen unterschiedliche Ergebnisse raus.
Code:
syms x
fplot( 1/(x^2-1)*(x^3+1) )
hold on
fplot(1/(3*x^2-x+1))
hold off


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
N.U.89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2020, 15:51     Titel:
  Antworten mit Zitat      
Das Ergebnis war nur auf den letzten Teil der Partialbruchzerlegung bezogen. Sorry für das Missverständnis. Das komplette Ergebnis soll lauten:


f(x)= 1/(x^2 − 1)(x^3 + 1) =
−1/4(x + 1) −1/6(x + 1)^2 +1/4(x − 1) −1/3(x^2 − x + 1)

Das ausgegebene Ergebnis ist immernoch das Gleiche. Wie gehe ich bei der Aufgabe denn am besten vor, hast du einen Tipp?

Gruß
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.04.2020, 16:58     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal, imaginäre Terme der Form a/(x-b) paarweise zu Termen der Form a/(x^2+b*x+c) zusammenzufassen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
N.U.89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 31.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2020, 09:41     Titel:
  Antworten mit Zitat      
Guten Morgen,

da jetzt gerade gar nichts mehr funktioniert würde ich gerne nochmal von vorne anfangen und die komplette Aufgabe präsentieren.

Also ich soll ein Skript für eine Partialbruchzerlegung schreiben.
Dieses Skript soll die beiden folgenden Aufgabe berechnen können:

f(x)=(7x^2-6x+3)/(x^3-x^2-x+1) und f(x)=1/((x^2-1)(x^3+1))


Mein aktuelles Skript sieht wie folgt aus:
[code]

syms x

disp ('Zähler und Nenner müssen zwingend Ausmultipliziert sein ')
disp('Die Polynome müssen ohne Argumente und in Vektorschreibweise eingegeben werden.')

answer = inputdlg('Zählerpolynom eingeben:',...
'Eingabeaufforderung', [1 50])

b = str2num(answer{1})
answer = inputdlg('Nennerpolynom eingeben:',...
'Eingabeaufforderung', [1 50])

a = str2num(answer{1})



format compact

[r,p,k] = residue(b,a)

[/code]

bei der Ersten Aufgabe kommt alles auch ganz Plausibel heraus. Bei der Zweiten kommt jedoch das folgende raus:

[code]r =
-1/4 + 0i
-1/6 + 0i
1/4 + 0i
-1/9727775195120234 + 260/1351i
-1/9727775195120234 - 260/1351i
p =
-1 + 0i
-1 + 0i
1 + 0i
1/2 + 1170/1351i
1/2 - 1170/1351i
k =
[]
[/code]

Mir ist klar, dass die jeweils letzten beiden Zeilen bei r und p etwas mit einer Quadratischen Funktion zu tun haben. Dies darf ich laut dem Dozenten so leider nicht stehen lassen Sad

Die Lösung der Zweiten Aufgabe soll folgende sein:

-1/4(x+1)-1/6(x+1)²+1/4(x-1)-1/3(x²-x+1)

Da ich langsam daran verzweifle, hoffe ich das ihr hier eine Lösung parat habt.

Danke

Gruß
Nico
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du müsstest halt den Vorschlag umsetzen, den ich dir gemacht habe.
Zitat:
versuch mal, imaginäre Terme der Form a/(x-b) paarweise zu Termen der Form a/(x^2+b*x+c) zusammenzufassen.


Wenn du die Rechnung nicht händisch machen willst, dann lass sie von MATLAB machen:

Code:
syms x a_r a_i b_r b_i real

y1 = (a_r + a_i*i)/(x - b_r+b_i*i)
y2 = (a_r - a_i*i)/(x - b_r-b_i*i)

simplify(y1 + y2)


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.