Darstellen einer Wertetabelle < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 13:15 Mi 14.05.2008 | Autor: | Naqnaq |
Hallo,
vielleicht kann mir ja hier jemand bei meinem Problem helfen. Ich soll eine Wertetabelle in Maple für eine Funktion von zwei Veränderlichen tabellarisch darstellen. Hier mein erster Ansatz:
1: | restart:
| 2: | f:=(x,y) -> x + y;
| 3: | wertetabelle:=proc(f,xa,xb)
| 4: | local i;
| 5: | for i from xa to xb do
| 6: | printf("%g\t %g\n", i, f(i,y));
| 7: | end do;
| 8: | end proc:
| 9: | wertetabelle(f,-10,10); |
Error, (in fprintf) number expected for floating point format
Leider bekomme ich jedoch von Maple eine Fehlermeldung ausgegeben. Hab ja schon die Vermutung, dass es an der Variablen y liegt, die ja berechnet werden muss. Nur hab ich keine Ahnung, wo hier mein Denkfehler liegt. Deshalb wäre es super, wenn mir jemand von euch da vielleicht weiterhelfen könnte.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Gruß Sandy
|
|
|
|
Hallo!
Ich soll eine komplizierte nicht-lineare Gleichung mit Doppelsumme, vielen sin und cos und teilweise komplexen oder unendlichen Lösungen in einer Wertetabelle berechnen. Dabei sind die Grenzen und die Schrittweiten vorgeschrieben. Jetzt bekomme ich immer einen Float-Fehler. Was muss ich hier machen, damit, dieser Fehler nicht mehr auftritt?
Dateianhänge: Anhang Nr. 1 (Typ: mw) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:20 Mi 26.07.2017 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Hallo und ,
dein Problem ist, dass du der Variablen y nie einen Wert zuweist. Entweder hast du vergessen, y konstant auf einen Wert zu setzen, oder y soll der Prozedur übergeben werden. Auf jeden Fall ist dann das Problem behoben.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:02 Mi 21.05.2008 | Autor: | Naqnaq |
Danke für den Tipp!
Jetzt funktioniert's!
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 09:28 Do 02.09.2010 | Autor: | qay |
Hallo,
ich habe ein ähnliches Problem und eine daher Rückfrage. Wie muss ich y der Prozedur übergeben, wenn es keine Konstante ist sondern z.B. die Kreisgleichung [mm] r=x^2+y^2 [/mm] mit x und y als Wertepaaren ausgegeben werden soll. (r ist dabei einen Konstante und kann bereits in der Gleichung angegeben werden.
Für Hinweise bin ich sehr dankbar!
Viele Grüße,
Bettina
|
|
|
|
|
Die Frage ist ziemlich komisch formuliert. Wenn du r gegeben hast und x in der Schleife laufen lässt, dann funktioniert es so nach umstellen
[mm]r=x^2+y^2\gdw \pm y=\sqrt{r-x^2}[/mm]
1: | restart;
| 2: | f:=(x,r) -> sqrt(r -x^2);
| 3: | wertetabelle := proc (f, xa, xb, r)
| 4: | local i;
| 5: | for i from xa to xb do
| 6: | print(i, f(i, r))
| 7: | end do
| 8: | end proc;
| 9: | wertetabelle(f, -10, 10, 8)
|
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:20 Mo 19.12.2011 | Autor: | djuud |
Hi,
das Thema ist zwar sehr lange her, aber vielleicht bemerkt mich hier ja noch jemand.
Ich benötige in Maple eine Wertetabelle für eine Funktion mit zwei Variablen. Da die Funktion über eine halbe Seite geht, können wir zur Problemlösung auch einfach sagen f=3x+2y.
Leider habe ich keine Ahnung, wie ich da rangehen soll. Mit einer Variablen ist die Wertetabelle ja kein Problem, aber zu zwei Variablen kann ich einfach nix finden.
Zusätzlich sollen die Werte in kleinen, aber unterschiedlichen Schritten eingesetzt werden.
Bsp:
f=3x+2y
x von 0.75 bis 1.5 in 0.01er Schritten
y von 0 bis 2.5 in 0.1er Schritten
Gibt es da eine einfache Lösung für?
Liebe Grüße,
djuud
|
|
|
|
|
1: | f(x,y):=3 x+2 y;
| 2: | for i from 0.75 by 0.01 to 1.5 do
| 3: | for j from 0 by 0.1 to 2.5 do
| 4: | printf("%10f %10f %10f \n", i,j,f(i,j));
| 5: | od;
| 6: | od; |
|
|
|
|
|
Weiß nicht, ob das hier noch ganz reinpasst, aber ich stell trotzdem mal die Frage.
Ich habe mir verschiende Funktionen in Maple zusammengebastelt. Diese will ich nun diskretisieren.
Ich dachte mir, dass ich mir erstmal verschiedene Punkte in eine Wertetabelle eintrage lasse, wie es hier schon beschrieben ist. Danach diese Wertetabelle auslese und wieder plote.
Geht das mit Maple ?
Ziel ist es aus mehreren Funktionen diskrete Werte zunehmen und diese in ein Plot zeichnen zu lassen.
mfg
Bill
|
|
|
|
|
Du kannst mit Maple dir Listen erstellen:
liste:= [1, 5, 7, 7, 7, 3, 2, 12];
Ohne es getestet zu haben:
1: | restart;
| 2: | xwerte :=[];
| 3: | ywerte :=[];
| 4: | f:=(x,r) -> sqrt(r -x^2);
| 5: | wertetabelle := proc (f, xa, xb, r)
| 6: | local i;
| 7: | for i from xa to xb do
| 8: | print(i, f(i, r))
| 9: | [op(xwerte),i];
| 10: | [op(ywerte),f(i, r)]
| 11: | end do
| 12: | end proc;
| 13: | wertetabelle(f, -10, 10, 8)
|
geht bestimmt auch schöner. Einen anderen Weg die Werte diskret zu plotten kenn ich auch nicht.
|
|
|
|
|
Schonmal Danke für deine schnelle Antwort :)
Das mit der Liste ist eine sehr gute Idee und funktioniert vor allem auch über pointplot sehr gut !
Ich hab deinen Qode gleiche probiert, allerdings funktioniert er bei mir nicht ganz.
Es werden die Werte nicht in der Liste gespeichert, so dass ich der Liste keine Werte entnehmen kann.
mit "nops(xwerte) erhalte ich immer noch 0 Einträge.
Hab schon ein bisschen rumprobiert und es scheint mir auch trival, aber vielleicht könntest du mir nochmal helfen :)
Schonmal Danke !
MFG
> Du kannst mit Maple dir Listen erstellen:
> liste:= [1, 5, 7, 7, 7, 3, 2, 12];
>
> Ohne es getestet zu haben:
>
> 1: | restart;
| 2: | > xwerte :=[];
| 3: | > ywerte :=[];
| 4: | > f:=(x,r) -> sqrt(r [mm]-x^2);[/mm]
| 5: | > wertetabelle := proc (f, xa, xb, r)
| 6: | > local i;
| 7: | > for i from xa to xb do
| 8: | > print(i, f(i, r))
| 9: | > [op(xwerte),i];
| 10: | > [op(ywerte),f(i, r)]
| 11: | > end do
| 12: | > end proc;
| 13: | > wertetabelle(f, -10, 10, 8)
| 14: | > |
|
|
|
|
|
> Schonmal Danke für deine schnelle Antwort :)
>
> Das mit der Liste ist eine sehr gute Idee und funktioniert
> vor allem auch über pointplot sehr gut !
>
> Ich hab deinen Qode gleiche probiert, allerdings
> funktioniert er bei mir nicht ganz.
>
> Es werden die Werte nicht in der Liste gespeichert, so dass
> ich der Liste keine Werte entnehmen kann.
>
> mit "nops(xwerte) erhalte ich immer noch 0 Einträge.
>
> Hab schon ein bisschen rumprobiert und es scheint mir auch
> trival, aber vielleicht könntest du mir nochmal helfen :)
Was hast du denn da ausprobiert?
>
> Schonmal Danke !
>
> MFG
>
>
>
> > Du kannst mit Maple dir Listen erstellen:
> > liste:= [1, 5, 7, 7, 7, 3, 2, 12];
> >
> > Ohne es getestet zu haben:
> >
> >
Wie wärs mit:1: | restart;
| 2: | xwerte :=[];
| 3: | ywerte :=[];
| 4: | f:=(x,r) -> sqrt(r-x^2);
| 5: | wertetabelle := proc (f, xa, xb, r)
| 6: | local i;
| 7: | global xwerte,ywerte;
| 8: | for i from xa to xb do
| 9: | print(i, f(i, r))
| 10: | xwerte:=[op(xwerte),i];
| 11: | ywerte:=[op(ywerte),f(i, r)];
| 12: | end do
| 13: | end proc;
| 14: | wertetabelle(f, -10, 10, 8) |
http://pastebin.com/fcJmPAgU
>
>
|
|
|
|
|
Ich habe lange rumgespielt und komme einfach auf keinen grünen Zweig.
wieschoo nochmals danke, mit deiner Hilfe komme ich wenigstens schon nahe an das Problem.
Ich beschreibe das Problem nochmal genauer, vielleicht kannst du mir dann nochmal präzise helfen.
Nehmen wir an ich habe die Funktion:
f:= (x,y)->x+y;
die Funktion kann ich mir nun einfach ploten lassen und wähle nun x=0..5 und y=0..5;
Jetzt will ich aber nur bestimmte Funktionswerte dieser Funktion f ploten.
z.B.
f(1,4)
f(2,6)
f(3,7)
f(4,10)
f(5,12)
Wie würde ich dafür am besten vorgehen ?
Mein Gedankenansatz war nun einen Vektor zu erzeugen, der den Funktionswert und dessen x-Wert und y-Wert speichert und diesen Vektor in einem Plot wieder zeichnen zulassen.
Ich hab nun vieles probiert, seien es Sequenzen oder Schleifen und komme der Sache kaum näher.
Vielleicht hast du ja noch eine Idee ?
|
|
|
|
|
Hi,
das geht sogar richtig einfach*
f(x,y):=x+~y
x := [1, 3, 5, 7, 8];
y := [15, 6, 9, 8, 7];
z := f(x, y);
Bei der Funktion musst du nur eine Tilde~ hinter die Operatoren schreiben.
*ab Maple 13
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:15 Di 08.05.2012 | Autor: | threebill |
Nochmals vielen Dank !
das mit der Tilde hat leider nicht funktioniert. Ich habe es nun so gelöst. Bin für Verbesserungsvorschläge offen, gerade die Plot-Grenzen gefallen mir noch nicht.
restart;
with(plots);
verlauf := proc (f, anfangx, endex, diffx, anfangy, endey, diffy)
local akt1:=anfangx:
local akt2:=anfangy:
local y:=[]:
local x:=[]:
local z:=[]:
while (akt1 <= endex or akt2 <= endey)
do
x := [op(x), akt1];
y := [op(y), akt2];
z := [op(z), f(akt1, akt2)];
akt1 := akt1+diffx;
akt2 := akt2+diffy;
print(x, y, z)
od;
pointplot3d({y, x, z}, axes = boxed, orientation = [-130, 75], view = [0 .. 25, 0 .. 25, 0 .. 65]);
end
fkt:= [mm] x^2+y^2;
[/mm]
verlauf(fkt,0,5,1,0,5,1);
Noch eine Frage habe ich. Wie fügt man 2 Listen zusammen ? Ich habe L1 und L2 und möchte nun L2 an L1 hängen.
Bsp:
L1:=[2,3]
L2:=[2,4];
L3 = L1 + L2 = [2,3,2,4]
mit:
[op(L1),L2]
wird die komplette L2 auf den 3 Listenplatz von L1 gesetzt. Das möchte ich nicht, sondern ich möchte die L1 mit den Werten der L2 fortführen.
Vielen Dank schonmal :)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:55 Di 08.05.2012 | Autor: | wieschoo |
a := [1, 2];
b := [c, d];
~[op]([a, b])
kombiniert diese Liste.
Im Übrigen kann man soetwas auch in Kurzform schreiben
with(plots)
pointplot3d({seq([sin(i), i, [mm] i^2], [/mm] i = 1 .. 1000)})
|
|
|
|