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

Einfügungs-Summationsmethode

 

Nuuuuuu

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2012, 13:38     Titel: Einfügungs-Summationsmethode
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem mit meinem Programm (s.u). Es geht darum, die Zahlen mit der Einfügungsmethode aufzusummieren. Also zuerst werden die Komponenten des Vektors x aufsteigend sortiert, und dann immer die ersten beiden Komponenten miteinander addiert, und dann diese Summe anstelle der beiden Komponenten in den x Vektor eingefügt. Das wird so lange gemacht, bis am Ende nur eine Komponente (also die Summe aller Komponenten) steht. D.h:

z.B sei  0<e<1/2 dann habe ich:

 1, 1+e, 1+2e, 1+3e  ->  1+2e, 1+3e, 2+e  ->  2+e, 2+5e  ->  4+6e

Code:
%Das ist mein Programm:
function [sum]=insertion(x)
n=length(x);
sum=0;
x=sort(x);
for i=1:n-1
    sum=x(1)+x(2);
    x([1,2])=[];
    x=[sum; x];
    x=sort(x);
end


Mein Problem ist jetzt, dass Matlab mir für die Summe immer 0 ausgibt, egal was für ein Vektor ich angebe.

Wäre toll, wenn ihr mir helfen könntet!

Beste Grüße, Nuuuuuuu


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.02.2012, 14:04     Titel:
  Antworten mit Zitat      
also erstmal würde ich sum nicht als variable benutzen da es ja schon eine matlab funktion ist. zweitens versteh ich nicht was du machen willst.
um die summe eines vektors zu berechnen gibt es doch den befehl sum. und 3. kommt bei mir nicht 0 raus wenn ich für x nen vektor angebe zb 1:10. allerdings sollte deine rückgabe variable auch nicht sum sein sondern x
Private Nachricht senden Benutzer-Profile anzeigen
 
MoKa
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2012, 14:32     Titel:
  Antworten mit Zitat      
Ja das scheint zu funktionieren, aber ich habe das Programm erweitert, sodass mehrere Methoden in einem Programm sind, um ein Skalarprodukt auszurechnen. Alle anderen Methoden funktionieren, nur diese eben nicht. Habe eine weitere Methode unten eingefügt zum Vergleich.

Code:

function [skalar]=skalarprod(x,y,flag)

c=x'*y;

if (flag==1)
    skalar=insertion(c);
        elseif (flag==2)
            skalar=pairwise(c);
end

function [s]=insertion(x)
n=length(x);
s=0;
x=sort(x);
for i=1:n-1
    s=x(1)+x(2);
    x([1,2])=[];
    x=[s; x];
    x=sort(x);
end
s=s;

function [s]=pairwise(x)
n=length(x);
s=0;
for i=1:floor(n/2)
        z=x(2*i-1)+x(2*i);
        s=s+z;
end
if mod(n,2)==0
    s=s;
else
    s=s+x(n);
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.02.2012, 14:43     Titel:
  Antworten mit Zitat      
welchen sinn hat
Code:

c ist das ergebniss eines skalarprodukts... also ein skalar. n ist bei dir also innerhalb deiner funktion immer 1
Private Nachricht senden Benutzer-Profile anzeigen
 
MoKa
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2012, 14:57     Titel:
  Antworten mit Zitat      
hmm summe soll das heißen. Hier geht es darum, dass die summen verschiedene Werte ausgeben. Alle anderen Summationsmethoden geben das gleiche aus, nur die Einfügungsmethode nicht. Was ist denn da falsch, dass es 0 raus kommt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.02.2012, 15:01     Titel:
  Antworten mit Zitat      
hab ich schon erklärt.. aber ich machst nochmal
Code:
c=x'*y %hir kommt eine Zahl Raus

function [s]=insertion(x)
n=length(x); % hier kommt 1 raus... denn x ist ja c und c ist eine zahl
s=0;
x=sort(x);
for i=1:n-1 %geht nicht.. von 1 bist 0 zählen in einzerschritten funktioniert nicht
    s=x(1)+x(2);
    x([1,2])=[];
    x=[s; x];
    x=sort(x);
end
s=s; % hir passiert nix.. ist also sinnfrei


 
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 14.02.2012, 18:24 Uhr von Martin
Von Pro und Contra goMatlab-Forum nach Programmierung
 
MoKa
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2012, 08:21     Titel:
  Antworten mit Zitat      
ja, das habe ich schon verstanden. Also meine Aufgabe ist die verschiedenen Summationsmethoden auf CG Verfahren anzuwenden. Da wo Skalarprodukt ist, soll ich die auch anwenden. Alle anderen Methoden funktionieren, nur die nicht. Wie soll ich es umändern, damit es klappt?
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.