HP Prime Who know how to do that ? « Next Oldest | Next Newest »

 ▼ dg1969 Junior Member Posts: 39 Threads: 14 Joined: Jun 2013 10-22-2013, 10:18 AM I want to ask for a function f (X) with the command "INPUT" ... then create the function F1 = f(i*X). example: f(X)=1/(1+0.2*X+5*X^2) => F1(X)=1/(1+0.2*i*X+5*(i*X)^2) ```EXPORT test() BEGIN LOCAL f; IF INPUT(f,"ENTER f with single quote. Example: '1/X' ") THEN F1:=subst(f,X,'(i*X)'); END; END; ``` I try : F1:=expr("subst(f,'X','(i*X)')"); with another local var g : g:=subst(f,X,'(i*X)'); F1:=g; or : CAS("F1:=subst(f,X,'(i*X)')"); I try also with string and the command REPLACE See my previous post... I do not see it very clear... Thanks for your help. ▼ Han Senior Member Posts: 709 Threads: 104 Joined: Nov 2005 10-22-2013, 12:40 PM ``` LOCAL f; IF INPUT(f,"ENTER f with single quote. Example: '1/X' ") THEN f:=STRING(f); // not needed this if user inputs f in double quotes F1:=EXPR("subst('" + f + "','X','i*X');"); END; ``` ▼ dg1969 Junior Member Posts: 39 Threads: 14 Joined: Jun 2013 10-22-2013, 03:32 PM Many many thanks Han !! I owe you the most best thing that ever happened to me today ;o) I hope that in the near future we can manipulate symbolic expressions from within a program so much easier. dg1969 Junior Member Posts: 39 Threads: 14 Joined: Jun 2013 10-22-2013, 03:57 PM Unfortunately ... This does not always work ... But for my purpose it should not be annoying... ```LOCAL f; IF INPUT(f,"ENTER f with single quote. Example: '1/X' ") THEN f:=STRING(f); // not needed this if user inputs f in double quotes F1:=EXPR("subst('" + f + "','X','(i*X)');"); END; ``` I add () around i*X to accept power... for exact coef in f(X) it works great... Examples: '1/X' or '2/(1+2/10*X+5/10*X^2)' But for example with : '0.2/(1+X)' => Crash !! Is it consistent with the expected operation of "subst" ? Edited: 22 Oct 2013, 4:01 p.m. ▼ Han Senior Member Posts: 709 Threads: 104 Joined: Nov 2005 10-22-2013, 05:16 PM Quote: Unfortunately ... This does not always work ... But for my purpose it should not be annoying... ```LOCAL f; IF INPUT(f,"ENTER f with single quote. Example: '1/X' ") THEN f:=STRING(f); // not needed this if user inputs f in double quotes F1:=EXPR("subst('" + f + "','X','(i*X)');"); END; ``` I add () around i*X to accept power... for exact coef in f(X) it works great... Examples: '1/X' or '2/(1+2/10*X+5/10*X^2)' But for example with : '0.2/(1+X)' => Crash !! Is it consistent with the expected operation of "subst" ? Remember that if you are using a CAS command, then by introducing a non-exact value into a CAS calculation, you have implicitly told the calculator to switch into approximate mode. What this means is that 0.2/(1+X) gets evaluated first (using whatever X value you currently have) and _then_ the result is passed to the command subst(). I will have to test when I get home on whether it crashes for me. In the meantime, if you should consider using exact(). F1:=EXPR("subst(exact('" + f + "'),'X','(i*X)');"); More info:Edited: 22 Oct 2013, 5:17 p.m.

Forum Jump: