www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Maple" - Maple mehrere Unbekannte
Maple mehrere Unbekannte < Maple < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Maple"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Maple mehrere Unbekannte: Definition von Funktionen
Status: (Frage) beantwortet Status 
Datum: 00:31 Mo 20.02.2012
Autor: PhilDerBaer

Hallo liebe Mitleser,

Es geht um folgendes:

Eine funktion mehrere Variablen definiert man ja in Maple bekannterweise z.B. so

f:=(x,y,z)->x+y+z

Nehmen wir jetz einfach mal an ich hätte eine Liste mit Variablen

ListOfVal :=  [x,y,z]

Gibt es eine möglichkeit jetz etwas der Art

f:=(ListOfVal[i],i=1..nops(ListOfVal))->x+y+z

zu definieren?

Also dass er mir als Variablen quasi die Liste ausliest.

Ich will mir ein Vorlagen-Worksheet erstellen für die Praktikumsauswertung.
Und da ich da jedes mal unterschiedlich viele Variablen habe, wäre etwas der Art sehr hilfreich.

Mit freundlichen Grüßen,
Phil.

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Maple mehrere Unbekannte: Antwort
Status: (Antwort) fertig Status 
Datum: 10:16 Mo 20.02.2012
Autor: Al-Chwarizmi


> Hallo liebe Mitleser,
>  
> Es geht um folgendes:
>  
> Eine funktion mehrerer Variablen definiert man ja in Maple
> bekannterweise z.B. so
>
> f:=(x,y,z)->x+y+z
>
> Nehmen wir jetz einfach mal an ich hätte eine Liste mit
> Variablen
>
> ListOfVal :=  [x,y,z]
>  
> Gibt es eine möglichkeit jetz etwas der Art
>  
> f:=(ListOfVal,i=1..nops(ListOfVal))->x+y+z
>
> zu definieren?
>
> Also dass er mir als Variablen quasi die Liste ausliest.
>
> Ich will mir ein Vorlagen-Worksheet erstellen für die
> Praktikumsauswertung.
> Und da ich da jedes mal unterschiedlich viele Variablen
> habe, wäre etwas der Art sehr hilfreich.
>
> Mit freundlichen Grüßen,
> Phil.
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.


Hallo Phil,

das Funktionsbeispiel, das du angibst, ist sehr einfach
(Summe der Variablen). Dies kann man bestimmt auch
in Maple mit dem Summenbefehl so formulieren, dass
es für eine beliebige Anzahl von Summanden klappt.
Falls du aber auch an andere Arten von Funktionen
denkst, müsstest du schon klarer spezifizieren, was
dir denn wirklich vorschwebt.
Gib also mal ein paar typische Beispiele konkret an,
damit man sich das besser vorstellen kann !

LG   Al-Chw.


Nebenbei:  
wozu die große Mühe mit dem kursiv gesetzten Text ?
Die einschließenden Zeichen  [i] und [/i] müssen doch
nur einmal gesetzt werden, nämlich am Anfang und
am Ende des kursiven Textes - falls du solchen
überhaupt willst.

Bezug
                
Bezug
Maple mehrere Unbekannte: Allgemeineres Beispiel
Status: (Frage) beantwortet Status 
Datum: 16:02 Mo 20.02.2012
Autor: PhilDerBaer

Okay sagen wir jetz mal ich will von 3 Messgrößen

ListOfVal:=[R,Is,P]

wobei R den verwendeten Widerstand der Schaltung, Is den Strom und P die Leistung angibt über eine Differenzfunktion überprüfen, ob P = [mm] R*Is^2 [/mm] stimmt.

Dazu definiere ich mir
[mm] f:=(R,Is,P)->P-R*Is^2 [/mm]


Bei nur drei Variablen geht das ja noch mit eintippen, aber die Frage ist, ob ich es auch

[mm] f:=(seq(ListOfVal[i],i=1..nops(ListOfVal)))->P-R*Is^2 [/mm]

schreiben könnte.

Die Summe war nur ein kleines Beispiel, aber die Funktion kann beliebiger Art sein.

Es geht nur darum, wie ich einer funktion als Variable eine Liste bzw einen Vektor übergeben kann, die dann mit den einzelnen Einträgen/Komponenten arbeitet.

Z.b.


ListOfVal:=[x1,x2,y1,y2,z1,z2,a1,a2]

f:=(seq(ListOfVal[i],i=1..nops(ListOfVal))->x1*y2-x2*y1+a1*z2-a2*z2



Hoffe es wurde nun ein bisschen klarer.

Mit freundlichen Grüßen,
Phil.

Bezug
                        
Bezug
Maple mehrere Unbekannte: Antwort
Status: (Antwort) fertig Status 
Datum: 18:24 Mo 20.02.2012
Autor: Al-Chwarizmi


> Okay sagen wir jetz mal ich will von 3 Messgrößen
>  
> ListOfVal:=[R,Is,P]
>  
> wobei R den verwendeten Widerstand der Schaltung, Is den
> Strom und P die Leistung angibt über eine
> Differenzfunktion überprüfen, ob P = [mm]R*Is^2[/mm] stimmt.
>  
> Dazu definiere ich mir
>   [mm]f:=(R,Is,P)->P-R*Is^2[/mm]
>  
>
> Bei nur drei Variablen geht das ja noch mit eintippen, aber
> die Frage ist, ob ich es auch
>
> [mm]f:=(seq(ListOfVal[i],i=1..nops(ListOfVal)))->P-R*Is^2[/mm] [/i][/mm]
> [mm][i][/i][/mm]
> [mm][i]schreiben könnte.[/i][/mm]
> [mm][i] [/i][/mm]
> [mm][i]Die Summe war nur ein kleines Beispiel, aber die Funktion [/i][/mm]
> [mm][i]kann beliebiger Art sein.[/i][/mm]
> [mm][i] [/i][/mm]
> [mm][i]Es geht nur darum, wie ich einer funktion als Variable eine [/i][/mm]
> [mm][i]Liste bzw einen Vektor übergeben kann, die dann mit den [/i][/mm]
> [mm][i]einzelnen Einträgen/Komponenten arbeitet.[/i][/mm]
> [mm][i] [/i][/mm]
> [mm][i]Z.b.[/i][/mm]
> [mm][i] [/i][/mm]
> [mm][i][/i][/mm]
> [mm][i]ListOfVal:=[x1,x2,y1,y2,z1,z2,a1,a2][/i][/mm]
> [mm][i] [/i][/mm]
> [mm][i]f:=(seq(ListOfVal[i],i=1..nops(ListOfVal))->x1*y2-x2*y1+a1*z2-a2*z2 [/i][/i][/mm]
> [mm][i][i][/i][/i][/mm]
> [mm][i][i][/i][/i][/mm]
> [mm][i][i][/i][/i][/mm]
> [mm][i][i]Hoffe es wurde nun ein bisschen klarer.[/i][/i][/mm]
> [mm][i][i] [/i][/i][/mm]
> [mm][i][i]Mit freundlichen Grüßen,[/i][/i][/mm]
> [mm][i][i] Phil. [/i][/i][/mm]


Sorry, aber ich sehe da nicht weiter. In den angegebenen
Beispielen hat doch jeweils die Funktion f eine ganz
bestimmte Anzahl von Variablen (im ersten Beispiel
genau 3, im zweiten genau 8). Da ist mir rätselhaft, wie
eine Vereinfachung für eine beliebige Anzahl von
Variablen aussehen sollte.
Allenfalls könntest du einfach für jede Funktion, die du
je gebrauchen willst, eine umfassende Variablenliste
benützen, in welche du einfach alles reinschmeißt, was
du an Variablen je zu verwenden gedenkst. Dann kannst
du wohl für diese Liste eine Abkürzung wie etwa "varlist"
benützen und einfach bei jeder Funktion auf diese varlist
zurückgreifen.

LG


Bezug
                                
Bezug
Maple mehrere Unbekannte: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 01:38 Di 21.02.2012
Autor: PhilDerBaer

naja sagen wir so,

Ich will gaußsche fehlerfortpflanzung machen und dafür brauch ich nunmal die summe über aller ableitungen

Sagen wir einfach Sys[i][j] hat in der Zeile [i] die entsprechende Größe und in der Spalte steht jeweils der Fehler der größe der entsprechenden Messung und ebenso steht in Messung[i][j] die entsprechenden Messdaten , wobei die spaltenanzahl bis Numb geht.

ich würde nun gerne etwas derart machen

sys:=1/Numb*add( sqrt(add( eval(    (diff (f(ListOfVal[i],i=1..nops(ListOfVal)), ListOfVal[k])*Sys[k][j] [mm] )^2, [/mm] seq(ListOfVal[i]=Messung[i][j], i=1..nops(ListOfVal)), k=1..nops(ListOfVal) ), j=1..Numb)


Damit die Formel mal übersichtlicher wird gilt n = nops(ListOfVal)

[mm] sys:=\frac{1}{Numb} \sum\limits_{j=1}^{Numb} \sqrt{ \sum\limits_{k=1}^{n} \left( \frac{\mathrm{d} f(x_1,\dots,x_n)}{\mathrm{d} x_k} \cdot Sys_{k,j} |_{x_l = Messung_{l,j} } \right)^2 } [/mm]


so dass ich einfach nurnoch via readdata die messdaten und die fehler einlesen muss und die zu untersuchende funktion vorher via

[mm] f(x_1,\dots,x_n) = \cdots [/mm]

definieren kann, sofern ListOfVal:=[x1,...,xn] definiert ist.



Bezug
                                        
Bezug
Maple mehrere Unbekannte: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:33 Mi 22.02.2012
Autor: PhilDerBaer

Ich schreib mal genauer auf was ich bisher habe

Nehmen wir eine Matrix Messungen in der in der Zeile i die Messdaten zur Größe ListOfVal[i] stehen und in der in der j-ten Spalte das Ergebnis des j-ten Versuchs steht.

Das Gleiche gilt für die Matrix Fehler, nur das dort eben die Fehler drin stehen.

Definiere ich mir f:=(x,y,z)->3*x-2*y+z und ListOfVal:=[x,y,z]

kann ich folgendes ohne probleme anwenden.


[mm] sysmittel:=1/Size(Messungen,2)*add(sqrt(add(eval((diff(f(x,y,z),ListOfVal[i])*Fehler[i][j])^2,[ [/mm] seq(ListOfVal[k]=Messungen[k][j],k=1..nops(ListOfVal))]),i=1..nops(ListOfVal))),j=1..Size(Messungen,2));


Achtung : Wers auch anwenden will muss ArrayTools einbinden für den Size befehl.

Jetz würde ich aber gerne in dem sysmittel-Aufruf das f(x,y,z) durch f(ListOfVal) ersetzen, so dass ich diesen Befehl einfach nur copy & pasten muss, um ihn bei verschiedenen Funktionen mit unterschiedlich vielen Variablen anwenden zu können.

Mit freundlichen Grüßen,
Phil.

Bezug
                                        
Bezug
Maple mehrere Unbekannte: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:27 Fr 24.02.2012
Autor: PhilDerBaer

Wie genau kann ich den Thread als gelöst markieren?



Bezug
                                        
Bezug
Maple mehrere Unbekannte: Antwort
Status: (Antwort) fertig Status 
Datum: 17:12 Do 01.03.2012
Autor: Peter_Pein

Hallo,

da du weiter unten schreibst, dass du eine Lösung gefunden hast, entferne ich hiermit den "Frage offen Status".

Damit's nicht aussieht, wie das Ergaunern von Antwortpunkten, will ich wenigstens noch auf das Folgende hinweisen:

> alternierendeSumme := proc (x::(seq(anything))) [mm] -add((-1)^k*[x][k], [/mm] k = 1 .. nops([x])) end proc:

> alternierendeSumme(a, b, c, d, e, f, g, h);

a-b+c-d+e-f+g-h


Gruß,
Peter


Bezug
                        
Bezug
Maple mehrere Unbekannte: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:10 Do 23.02.2012
Autor: wieschoo

Warum schreibst du dir keine Prozedur, die als Parameter einen Vektor von Indizies deiner Messmatrix nimmt. Und dann nach Schema berechnet

deine Matrix
0   1   2   3   4   5   6   7   8   9
x1  x2  y1  y2  z1  z2  a1  a2  b1  b2


myfunc := proc( x )
    print(x[1]+x[2]+x[3]);
end proc:

Um dann x1+y1+z1 zu berechnen rufst du deine Funktion myfunc([1,2,4]) auf

Aber so wirklich wird man da noch nicht klug, was du nun wirklich einsparen möchtest. Solange du die Formel auf der Rechtenseite vom "->" eingeben musst, solange kannst du auch die Parameter explizit angeben.

Bis jetzt hast du nur Beispiele angegeben, wo die Funktion explizit angegeben war. Du hast doch nur eine Formel zu berechnen, oder?




Bezug
                        
Bezug
Maple mehrere Unbekannte: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:25 Fr 24.02.2012
Autor: PhilDerBaer

Ich habe nun die Prozedur

Sys:=proc(f,ListOfVal, Messungen, Fehler ) [mm] 1/Size(Messungen,2)*add(sqrt(add(eval((diff(f(seq(ListOfVal[count],count=1...nops(ListOfVal))),ListOfVal[i])*Fehler[i][j])^2,[ [/mm] seq(ListOfVal[k]=Messungen[k][j],k=1..nops(ListOfVal))]),i=1..nops(ListOfVal))),j=1..Size(Messungen,2)) end proc;


(Achtung, zum ausprobieren wieder ArrayTools einbinden)

durch die Auswertung der Funktion, ist es nunmal erforderlich , dass die Funktionsparameter genau in der Reihenfolge wie sie in der Liste stehen definiert werden.

Ich habe jedoch gerade herausgefunden wies funktioniert.

einfach f:=Liste-> Funktionendefinition, wobei ich dann in der Definition nicht die eigentlichen Variablen verwenden darf, sondern Liste[i].

Trotzdem herzlichen Dank euch allen,

Mfg Phil

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Maple"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]