cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - When posting, your subject should be specific and summarize your question. Here are some additional tips on asking a great question. X

Substitute in a programm...

ptc-1739038
5-Regular Member

Substitute in a programm...

Hi

just looked over some old custom functions from Tom Gutman.

He sometimes uses substitute in his functions, but I cannot fiugure out how he types it IN the programm.

looks something like:

if I try to explicitly type subsittute (ersetzen) it gets interpreted as a variable, if I use the symbolic -> subsittute it gets writen besides the funvction-definition.

Cannot figure it out for MC 15 and MCP3?

What's the trick?

Need this to define a gradient function in MC

Thnkx

Werner

1 ACCEPTED SOLUTION

Accepted Solutions

WERNER CYRMON wrote:

Bin da vom Prinzip völlig bei dir. Aber bei uns an der HTl wurde die Entscheidung für Prime (modernere Oberfläche) getroffen und nun häng ich da drin. Für die meisten Sachen gehts ja eh ganz gut, aber wenn man a bisserl was spezielleres will (finde auch keine funktionierende Version von implicitplot3d) dann hakts halt.

LG retour nach Wien (ich glaube es war HTL Donaustadt) und nice weekend

Werner

BTW: Nachtrag - geht nicht in Prime. Man kann syntaktisch die doppelte Ersetzung so nicht eingeben (Klammernsetzung) und die Zeile ist nicht in die Funktion hineinkopierbar.

Ich habs befürchtet, dass es da in Prime Probleme geben könnte.

Und wenn ich mir die Qualität der 3D-plots in Prime ansehe würd ich nicht einmal ansatzweise daran denken, hier so etwas wie implicitplot3d() zu implementieren.

Sich immer nur für das Neueste zu entscheiden ist nicht unbedingt die beste Strategie. Obwohl es im Grunde ja unfassbar ist, was sich PTC da leistet. Und ein Außenstehender kann ja beim besten Willen nicht annehmen, dass eine Nachfolgesoftware in der Version 3 im Vergleich zur 8 Jahre alten Vorgängerversion Schrott ist. Eklatant langsamer ist, trotz "moderner" Oberfläche gravierend umständlicher zu bedienen ist, eine unglaubliche Fülle von Funktionalität vermissen lässt (geskriptete Komponenten, Animationen, ....) und das, was da ist, meist auch von deutlich minderer Qualität ist (2D und vor allem 3D plots).

Wir sehen uns jetzt u.a. auch Matlab an - da gibst ein unglaublich günstiges Angebot für eine schulweite Lizenz, welche auch die Schülergeräte inkludiert. Natürlich ist Matlab mehr eine Programmierumgebung und kein so nettes Dokumentationstool wie Mathcad. Aber ich seh leider keine Zukunft für Prime - das wird so schnell nich um so vieles beser als es sein aollte.

View solution in original post

12 REPLIES 12
ptc-1739038
5-Regular Member
(To:ptc-1739038)

||...

||g <- g substitute, x = 3 ->

|| ...

Just looked over some of my old post, seems not wo work in MC15 and Prime anymore 😞

So how do I implement a gradient function?

Something like

f(x,y,z)=x^2+y^2+z^3 v=[x y z]

gradient(f,v) -> [2x 2y 2z]

Can't figure out how to differenziate symbolicly in the programm loop ....

WERNER CYRMON wrote:

||...

||g <- g substitute, x = 3 ->

|| ...

Just looked over some of my old post, seems not wo work in MC15 and Prime anymore 😞

So how do I implement a gradient function?

Something like

f(x,y,z)=x^2+y^2+z^3 v=[x y z]

gradient(f,v) -> [2x 2y 2z]

Hopefully 3z^2 😉

A gradient operator is already implemented in Mathcad.

1.png

Any way, what you want to achieve should be doable. Years ago I wrote a sheet which would solve a lienar ODE of first order symbolically and the integration variable was an argument to that function.

It was very tricky to implement this and it would require that I substitute the varaible of integration by a different variable in the program and only then integration worked. Then again a resubstitution to get back the real variable of integration yielded the desired result. This still works in Mathcad 15. Haven't tried in Prime as that program is such a useless crap.

ptc-1739038
5-Regular Member
(To:Werner_E)

@Werner Nope, the Gradient function of MC15 is gone in Prime, at least I can't finde, hence all the trouble 😉

WIll try your trick with subst and resubst

Thx

Werner

BTW:; Hopefully 3z^2 😉

Du siehst, ich brauche drindend eine Funktion ide das rechnet 😉

WERNER CYRMON wrote:

@Werner Nope, the Gradient function of MC15 is gone in Prime, at least I can't finde, hence all the trouble 😉

WIll try your trick with subst and resubst

Thx

Werner

BTW:; Hopefully 3z^2 😉

Du siehst, ich brauche drindend eine Funktion ide das rechnet 😉

I am not sure at all if the routine I posted in my other reply will work in Prime - you will have to give it a try.

Lieber Namensvetter!

Es gibt eigentlich derzeit noch keinen vernünftigen Grund, Prime anstelle von Mathcad 15 zu verwenden. Auch wenn deine Schüler über die neue Lizenzvereinbarung des bmbf für ihre Jahresmiete von EUR 10,- zunächst nur Prime bekommen sollten, gilt die Lizenz auch für Mathcad 15. Das soll laut PTC mindestens noch bis zu Prime 5 so laufen (und vorerst ist im nächsten Frühjah erst einmal Prime 3.1 projektiert). Auch die flexLM Lizenzdatei stellt beide Versionen zufrieden. PTC weiß schon, was sie da machen - eine Version für Masochisten zum Herumspielen (P3) und eine um damit vernünftig arbeiten zu können.

Liebe Grüße and die htl Wiener Neustadt!

Werner

ptc-1739038
5-Regular Member
(To:Werner_E)

Bin da vom Prinzip völlig bei dir. Aber bei uns an der HTl wurde die Entscheidung für Prime (modernere Oberfläche) getroffen und nun häng ich da drin. Für die meisten Sachen gehts ja eh ganz gut, aber wenn man a bisserl was spezielleres will (finde auch keine funktionierende Version von implicitplot3d) dann hakts halt.

LG retour nach Wien (ich glaube es war HTL Donaustadt) und nice weekend

Werner

BTW: Nachtrag - geht nicht in Prime. Man kann syntaktisch die doppelte Ersetzung so nicht eingeben (Klammernsetzung) und die Zeile ist nicht in die Funktion hineinkopierbar.

WERNER CYRMON wrote:

Bin da vom Prinzip völlig bei dir. Aber bei uns an der HTl wurde die Entscheidung für Prime (modernere Oberfläche) getroffen und nun häng ich da drin. Für die meisten Sachen gehts ja eh ganz gut, aber wenn man a bisserl was spezielleres will (finde auch keine funktionierende Version von implicitplot3d) dann hakts halt.

LG retour nach Wien (ich glaube es war HTL Donaustadt) und nice weekend

Werner

BTW: Nachtrag - geht nicht in Prime. Man kann syntaktisch die doppelte Ersetzung so nicht eingeben (Klammernsetzung) und die Zeile ist nicht in die Funktion hineinkopierbar.

Ich habs befürchtet, dass es da in Prime Probleme geben könnte.

Und wenn ich mir die Qualität der 3D-plots in Prime ansehe würd ich nicht einmal ansatzweise daran denken, hier so etwas wie implicitplot3d() zu implementieren.

Sich immer nur für das Neueste zu entscheiden ist nicht unbedingt die beste Strategie. Obwohl es im Grunde ja unfassbar ist, was sich PTC da leistet. Und ein Außenstehender kann ja beim besten Willen nicht annehmen, dass eine Nachfolgesoftware in der Version 3 im Vergleich zur 8 Jahre alten Vorgängerversion Schrott ist. Eklatant langsamer ist, trotz "moderner" Oberfläche gravierend umständlicher zu bedienen ist, eine unglaubliche Fülle von Funktionalität vermissen lässt (geskriptete Komponenten, Animationen, ....) und das, was da ist, meist auch von deutlich minderer Qualität ist (2D und vor allem 3D plots).

Wir sehen uns jetzt u.a. auch Matlab an - da gibst ein unglaublich günstiges Angebot für eine schulweite Lizenz, welche auch die Schülergeräte inkludiert. Natürlich ist Matlab mehr eine Programmierumgebung und kein so nettes Dokumentationstool wie Mathcad. Aber ich seh leider keine Zukunft für Prime - das wird so schnell nich um so vieles beser als es sein aollte.

ptc-1739038
5-Regular Member
(To:Werner_E)

... und wieder - bin völlig bei Dir. Kam ja von der Mathematica Seite, wo es nichts gibt, dass man nicht machen kann und da war das umdenken schwer, aber mit MC15 gings noch einigermaßen. Aber Prime ....

Andereseits brauchen die Kids zur Zentralmatura ja eh nicht viel, a gibts ja eh keine Gradienten ....

WERNER CYRMON wrote:

... und wieder - bin völlig bei Dir. Kam ja von der Mathematica Seite, wo es nichts gibt, dass man nicht machen kann und da war das umdenken schwer, aber mit MC15 gings noch einigermaßen. Aber Prime ....

Andereseits brauchen die Kids zur Zentralmatura ja eh nicht viel, a gibts ja eh keine Gradienten ....

Allerdings - für die Zentralmatura bräuchten sie eher eine Funktion, die die Angabetexte einliest und in eine für sie verständliche (Bild-?)Spache übersetzt. Die dahinter stehende Mathematik scheint ja in der Regel eher simpel zu sein.

Hast du schon herausgefunden, warum du beim Löschen oder Ändern der Funktion Fehler erhalten hast?

EDIT: Ich denke ich weiß es. Du hast von der konvertierten Datei In Prime gesprochen, richtig? Da werden meine Funktionen und auch die Regionen mit dem gradient Operator nur als Bilder eingefügt - lieb. aber hilf- und nutzlos. Im Gegensatz zu Mathcad wird bei Prime eine Datei beim Laden nicht neu berechnet, sondern es wird das angezeigt, was bei letzten Speichern da war. Das ist im Falle des Konverters eben das Ergebnis meiner Mathcad15 Datei, die zunächst auch richtig aussieht. Wenn aber durch eine Änderung (oder durch Drücken von Strg-F9) eine Neuberechnung erzwungen wird, kommt Prime erst drauf, dass es die Funktionen grad und grad3 ja gar nicht gibt (sind ja nur Bilder) und es kommt die Fehlermeldung.

Was die Gradienten anlangt scheint es bei Prime nur mit dem Holzhammer zu funktionieren - Argumentanzahl und Argumentnamen fest:

gradient3.png

Just played around with your question and its fairly easy to accomplish. While there actually is no need to reinvent the wheel as we have the gradient operator out of the box anyway.

Here you are, with a slight change in sysntax - you must hand over the full function definition, not just the function name. The reason is that we have no way to detect the number of arguments a function has and even if we provide this information (using the argument names vector v) we cannot write or call a function with a variable number of arguments.

Actually it is possible to do it exactly how you demanded, but then you would need different functions depending on the number of arguments. I have added grad3() to show what I mean. I see no way to make this function more general so it would handle function with different number of arguments. Main reason is that unfortuneatly we don't have the data type "list" (the comma separated list which Mathcad uses itself for function arguments and other things) in Mathcad programs and so we cannot create the necessary argument list on the fly with a loop.

gradient.png

gradient2.png

ptc-1739038
5-Regular Member
(To:Werner_E)

For more than 3 vars I'll tried for Origin to length(v). Wont work.

If I delete the first definition of f(xy,c) in your worksheet, grad3 stops working, so f is globaly definied an nat a parameter of grad3?

Changing the second funtion let's say to cos(x)+y^2+c^3 results in an error ....

Will try that in Prime3

WERNER CYRMON wrote:

For more than 3 vars I'll tried for Origin to length(v). Wont work.

What function are you talking about? I guess its grad3(), right. First you should not use length(v) but last(v). length(v) will give you the number of elements and will only work correctly if ORIGIN is set to 1. last(v) returns the last index and is ORIGIN aware.

But that obvious appraoch cannot work because of the function call f(v[O,....) which has a fixed numner of arguments and I see no way to change the number of arguments.

There might be a way to do it if the function is written to be a function of just one vector, but thats quite unvomfortable. f(X):=X[0^2 + X[1^2 + X[2^3

If I delete the first definition of f(xy,c) in your worksheet, grad3 stops working, so f is globaly definied an nat a parameter of grad3?

No, I don't experience that behaviour. Have you moved around the regions a bit so the (second) function definition is below the call of grad3?

Changing the second funtion let's say to cos(x)+y^2+c^3 results in an error ....

Will try that in Prime3

No again. This works pretty well when I do this (grad and grad3). Maybe a problem with the position of the expressions?

You can't simply paste pictures here, you have to use the appropriate button at the top to insert pics.

According symbolic command inside a program - you have to type the symbolic expression outside the program and then copy and paste it in your program.

You have to be aware that a lot of Toms functions won't work in Mathcad 15 because of the change of the symbolics engine from Maple (in Mathcad 11) to MuPad.

Top Tags