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

Berechnung von Nullstellen in Flächenformel

 

morbias_one
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 13.12.08
Wohnort: ---
Version: 5.3.1
     Beitrag Verfasst am: 13.12.2008, 19:59     Titel: Berechnung von Nullstellen in Flächenformel
  Antworten mit Zitat      
Hallo Forum,

ich habe die Frage schon einmal in einem anderen Forum gestellt aber leider keine Antwort bekommen Crying or Very sad Ich hoffe ihr könnt mir helfen.

Wir haben eine Aufgabe bekommen:

=========================================================
Gegeben sei ein Polynom 3. Grades

f(x) = a(3)x³ + a(2)x² + a(1)x + a(0)

in Form des Koeffizientenvektor a=[a(3), a(2), a(1), a(0)] und ein Integrationsintervall I=[ug,og].
Schreiben Sie ein Programm zur Berechnung der Fläche zwischen der x-Achse und der Funktion f(x) im Intervall I mit Hilfe der numerischen Integration nach der Simpsonregel. Nullstellen des Polynoms innerhalb des Intervalls I sind zu berücksichtigen, positive und negative Flächenanteile sind betragsmäßig zu addieren.
Neben dem direkten Aufruf des Programms mit den vorgegebenen Daten soll die Eingabe eigener Daten möglich sein. Eine Programmwiederholung ist vorzusehen.

Beispieldaten:
a = [-5 , 3 , 4 , -5]
I = [-6 , -2]

Hinweis:
Zur Berechnung der Nullstellen kann die Funktion „roots“ verwendet werden.

Die Simpsonregel



ist mit n=20 für jedes mögliche Teilintervall zu verwenden.
=========================================================

Die Aufgabe ist soweit klar. Mein vorläufiges Ergebnis sieht so aus:

hier klicken

Wir sollen jetzt aber die Nullstellen in die Flächenformel mit einbinden. Da ist mein Problem, da ich nicht weiss wie das gehen soll.

Ich hoffe mir kann jemand helfen.
Danke schon einmal im Vorraus.

MfG
Julia
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 13.12.2008, 23:04     Titel:
  Antworten mit Zitat      
Hallo,

hier die Lösung auf dieser webseite:
http://www.mathworks.com/matlabcentral/fx_files/13538/1/cumquad.m
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
morbias_one
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 13.12.08
Wohnort: ---
Version: 5.3.1
     Beitrag Verfasst am: 07.01.2009, 20:25     Titel:
  Antworten mit Zitat      
Hallo Forum,

ich habe das Programm jetzt soweit fertig. Es gibt da nur noch ein Problem:

"Case 2"
Die Fläche soll nicht so ausgerechnet werden, wie mit einem Taschenrechner (es würde 318 rauskommen, soll es aber nicht). Es soll so gemacht werden: von der 1. Intervallgrenze zur Nullstelle "addiert mit" Nullstelle zur 2. Intervallgrenze (es soll 321,6075 rauskommen). Mit manchen Werten klappt das ganze auch. Wenn man aber die Werte aus dem "Case 1" nimmt klappt es nicht. (In Case 2 müssen auch eigene Werte eingegeben werden können.)

Ich habe die Dateien noch einmal hier (*.m-File zum runterladen) und hier (*.txt-File zum angucken). Kann mir da jemand helfen? Confused

Liebe Grüße
Julia

edit: der "Case 1" ist richtig. Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 07.01.2009, 22:35     Titel:
  Antworten mit Zitat      
Case 1 funktioniert und in Case 2 musst du für alle Möglichkeiten hinter den "disp"-Befehlen ein Pause setzen.





Code:
 F=abs(F);
                A=A+F;end;
               disp(['Der Flächeninhalt beträgt ',num2str(A),' FE.'])
                pause % <----------
            end;
         else
         h=(og-ug)/n;
         x=[ug:h:og];
         y=polyval(p,x);
         A=(h/3)*(y(1)+2*sum(y(3:2:end-2))+4*sum(y(2:2:end-1))+y(end));
         A=abs(A)
         disp(['Der Flächeninhalt beträgt ',num2str(A),' FE.'])
         pause % <----------
         end;
      else
      h=(og-ug)/n;
      x=[ug:h:og];
      y=polyval(p,x);
      A=(h/3)*(y(1)+2*sum(y(3:2:end-2))+4*sum(y(2:2:end-1))+y(end));
      A=abs(A)
      disp(['Der Flächeninhalt beträgt ',num2str(A),' FE.'])
      pause

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
morbias_one
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 13.12.08
Wohnort: ---
Version: 5.3.1
     Beitrag Verfasst am: 08.01.2009, 07:08     Titel:
  Antworten mit Zitat      
Guten Morgen,

danke für die Antwort.
Die Pausen habe ich eingefügt, aber leider kommt immer noch das falsche Ergebnis von 318 FE raus.

Gibt es noch irgendeine Möglichkeit auf das richtige Ergebnis zu kommen?

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 08.01.2009, 09:23     Titel:
  Antworten mit Zitat      
Ich schau heute abend nochmal drüber, dass war mir beim Testen entfallen, dass man ja Case 1 und Case 2 miteinander kombinieren kann. Ich hatte nur ein eigenes Beispiel gewählt und das wollte er nicht anzeigen, deswegen der Einschub mit den Pausen.

edit: Du solltest nochmal deine if-schleifen kontrollieren, wenn du es so machst wie geschrieben, dann springt er sofort in die else bedingung der ersten if-schleife, sobald die nullstelle über der unteren grenze liegt und das wolltest du damit bestimmt nicht erreichen.
_________________

>> why
The computer did it.
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.