Author 
Message 

nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 31 Mar 2009 11:22:11 pm Post subject: 


Howdy,
This is my first post on this board, but I am by no means a n00b when it comes to the interwebz. I'm glad I found this forum! Seems like people actually hang out here and there's lots of good information.
Now on to my question:
First, I'll kind of explain in words what I'm trying to accomplish.
What I'd like to be able to do is run the program and have a dialog box or something of the sort come up and ask me to specify what variable I'm wanting to solve for.
For example, take the equation below:
Let's say I want to solve for M, so next the program should create a new dialog box and ask me to specify the values for the other variables. So in this particular case, it would ask me (preferably all in one dialog) to tell it the value of F, N, INT, T, and k. And obviously, if I choose to solve for a different variable at the beginning, the function should accommodate for that. So if instead of selecting M, if I tell it to solve for INT, then it should ask me to specify values for F, N, M, T, and k.
I don't want this to be like where I type "abc(3500, .05, 10)" to get an answer. This is cool and useful and all but I'm trying to learn more advanced stuff. I'm sure someone here knows what I mean!
One last thing, is there a software available that will allow me to edit .89p files and the like. Surely there is a way to edit the programs I have installed already.
Thank you!
Jason
College Station, Texas 

Back to top 


DarkerLine ceci n'est pas une 
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328

Posted: 01 Apr 2009 12:11:42 am Post subject: 


Well, it's all possible. What specifically have you tried doing? It wouldn't help you in the slightest if we just gave you a finished program. Try it, and then ask for help with specific problems you run into. The Dialog..EndDlog and solve() commands are of course a good start.
Also, the numeric equation solver does a lot of what you want already, with the one drawback that it doesn't give exact solutions. 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 01 Apr 2009 12:15:27 am Post subject: 


Hey,
Yeah I've tried several different things but I always seem to get stuck. I understand that it doesn't do good to just do it all for me but I sure could use a template of sorts to work with. I'm mainly getting stuck with all the conditions that are involved. I truly believe that once I see it done right one time I will forever be cured on this disease they call confusion. 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 01 Apr 2009 12:17:07 am Post subject: 


Do you think this needs to be a function or a program? 

Back to top 


DarkerLine ceci n'est pas une 
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328

Posted: 01 Apr 2009 12:45:27 am Post subject: 


If it were a function, your input and output would generally be in the style you said you wanted to avoid. Programs are generally the ones that deal with dialogs.
So to get you started: First, you want a Dialog box. The variable you want to solve for is one of a few options, so it should be in a DropDown menu; the values of the other variables can be anything, so make them Requests. There's some tricky stuff here. First of all, everything entered into a Request is a string: so you'll have to use the expr() command afterwards to turn them from strings into numbers. Second, the result of the DropDown is a number equal to the option selected. So maybe you have a variable called "var" to determine which variable you want to solve for: if var=1, then you're solving for M, if var=2 you're solving for F, and so on (depending on the order you list them in, in the menu).
Next is the solving step. You could do this in one command, but it's slightly tricky; using If .. Then .. ElseIf .. EndIf is simpler to understand. Just check for every possible value of var, and in each case, output the result of a solve() expression that solves for the corresponding variable. Here, there's another tricky part: solve() returns an equation or several equations, but Text (the command you'll probably want to use) wants a string. So use the string() command to convert it to one.
Here's a sort of framework:
solveeqn()
Prgm
Dialog
© DropDown for variable to solve for, stored to "var"
© Request for each variable in equation
EndDlog
© Use expr() to format each variable's value
If var=1 Then
© solve for first variable, display solution
ElseIf var=2 Then
© solve for second variable, display solution
...
Else
© solve for last variable, display solution
EndIf
EndPrgm
Obviously this isn't the best code. It's repeating things that only need to be written once, and some things, like the equation, are hardcoded and therefore hard to change. Just start with doing something like this and then we can work on improving it.
Last edited by Guest on 11 Jul 2010 05:56:32 pm; edited 1 time in total 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 01 Apr 2009 01:04:29 am Post subject: 


So then the variable I select from the drop down....won't that still show up in the requests? 

Back to top 


DarkerLine ceci n'est pas une 
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328

Posted: 01 Apr 2009 09:51:06 am Post subject: 


Yes. It will. What you input for it won't mean anything, but it will show up.
The only way to avoid that is to have more than one dialog. I don't know if that's worth it for you. Basically, the first thing you do is choose the variable to solve for, in one dialog. Then you have two options to do the rest. One is another chain of If .. ElseIf .. EndIf statements, with a dialog box omitting the variable being solved for in each one. This is very redundant. The other option is to build up a dialog dynamically: make a string containing "Dialog", then add on ":Request "BLAH",blah" for every variable you plan to include, then finish with adding an ":EndDlog". After that, expr() of that string will give you the dialog you want.
This last method is more advanced and may or may not be actually worth it, at this point. Also, it gives up independence from language localization, since the command Dialog is different in other languages.
Last edited by Guest on 01 Apr 2009 09:51:22 am; edited 1 time in total 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 06:32:07 am Post subject: 


Sorry it's taken me a while to reply back.
Ok....here's just what I've come up with so far. I've simplified it down as far the formula goes. I figure that if I can do this with a simple formula I should be able to do it with a more complicated formula.
I'm sure there are some errors in this but I'm hopeful that it's close to being right.
Code: solveeqn()
Prgm
Dialog
DropDown "Solve For:",{"x","y"},var
Request "Specify Value of "x":",num1
Request "Specify Value of "y":",num2
EndDlog
Expr(num1)>num1
Expr(num2)>num2
If var=x Then
solve((y=5+x),x), Disp "x"
ElseIf var=y Then
solve((y=5+x),y), Disp "y"
EndIf
EndPrgm
Thanks for your help so far! 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 07:01:12 am Post subject: 


Or should it be more like this:
Code: solveeqn()
Prgm
Dialog
DropDown "Solve For:",{"x","y"},var
Request "Specify Value of "x":",num1
Request "Specify Value of "y":",num2
EndDlog
Expr(num1)>num1
Expr(num2)>num2
[b]If var=x Then
solve((num2=5+x),x), Disp "x"
ElseIf var=y Then
solve((y=5+num1),y), Disp "y"[/b]
EndIf
EndPrgm


Back to top 


DarkerLine ceci n'est pas une 
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328

Posted: 03 Apr 2009 10:20:52 am Post subject: 


The second approach is correct (although there are multiple valid ways of solving the problem), and both have a few syntactical problems to address. I urge you to try and fix some of them yourself by, y'know, running the program to see what happens, before reading further.
First of all, the output of DropDown is a number: either 1 (representing the first option) or 2 (representing the second option). This should be reflected in your If..ElseIf code.
Second, you can't separate statements with commas. If you want to put the solve() and Disp on one line, you can use a colon. Or you could just put them on two separate lines.
Third, Disp "x" will not display the value of x that has been solved for. It will just write the letter x. What you want to do is output the result of solve(). Which means you must either save the result of solve(): e.g. solve(...,x)>res: Disp res  or just output it immediately: Disp solve(...,x)>res.
Last edited by Guest on 11 Jul 2010 05:56:03 pm; edited 1 time in total 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 10:49:12 am Post subject: 


Awesome. I just plugged the following code in and it works perfectly
Code: solveeqn()
Prgm
Dialog
DropDown "Solve For:",{"x","y"},var
Request "Specify Value of x:",num1
Request "Specify Value of y:",num2
EndDlog
Expr(num1)>num1
Expr(num2)>num2
If var=1 Then
solve((num2=5+x),x)>res1: Disp res1
ElseIf var=2 Then
solve((y=5+num1),y)>res2: Disp res2
EndIf
EndPrgm
Very very cool...
So...how can I go about typing this code up on my computer and sending it to my calculator?
I tried just typing it up in a text editor and saving it as a .89p file but that didn't work.
Any ideas?
THANKS 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 10:58:41 am Post subject: 


Also if I need to add more variables....with regard to the IfThen statements would this be appropriate?
Code: If var=1 Then
solve((num2=5+x+num3+num4),x)>res1: Disp res1
ElseIf var=2 Then
solve((y=5+num1+num3+num4),y)>res2: Disp res2
ElseIf var=3 Then
solve((num2=5+num1+z+num4),z)>res3: Disp res3
ElseIf var=4 Then
solve((num2=5+num1+num3+t),t)>res4: Disp res4
EndIf
Or can you not put that many ElseIf commands back to back? 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 12:53:46 pm Post subject: 


I've made an attempt at making this a lot more complicated math problem and I'm getting a "too few arguments" error.
Not sure exactly what it could be...
Code: solveeqn()
Prgm
Dialog
DropDown "Solve For:",{"M","F","N","INT","T","k"},var
Request "Value of M?",num1
Request "Value of F?",num2
Request "Value of N?",num3
Request "Value of INT?",num4
Request "Value of T?",num5
Request "Value of k?",num6
EndDlog
expr(num1)>num1
expr(num2)>num2
expr(num3)>num3
expr(num4)>num4
expr(num5)>num5
expr(num6)>num6
If var=1 Then
solve((M(1num2)=E(num4(1num5)/((1+num6)^t)+M/((1+num6)^num3)),t,1,num3),M)>res1: Disp res1
ElseIf var=2 Then
solve((num1(1F)=E(num4(1num5)/((1+num6)^t)+num1/((1+num6)^num3)),t,1,num3),F)>res2: Disp res2
ElseIf var=2 Then
solve((num1(1num2)=E(num4(1num5)/((1+num6)^t)+num1/((1+num6)^num3)),t,1,N),N)>res3: Disp res3
ElseIf var=2 Then
solve((num1(1num2)=E(INT(1num5)/((1+num6)^t)+num1/((1+num6)^num3)),t,1,num3),INT)>res4: Disp res4
ElseIf var=2 Then
solve((num1(1F)=E(num4(1T)/((1+num6)^t)+num1/((1+num6)^num3)),t,1,num3),T)>res5: Disp res5
ElseIf var=2 Then
solve((num1(1F)=E(num4(1num5)/((1+k)^t)+num1/((1+k)^num3)),t,1,num3),k)>res6: Disp res6
EndIf
EndPrgm
Note: "E" is the summation sign. 

Back to top 


DarkerLine ceci n'est pas une 
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328

Posted: 03 Apr 2009 01:08:23 pm Post subject: 


You can't name a variable INT because int() is a builtin operation, and variable names are not casesensitive. That's part of the problem.
Another problem that you'll run into is that writing M(1F) makes the calculator think you're evaluating a function called M at the value 1F. Write M*(1F) instead, and similarly in all other such cases. 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 02:23:08 pm Post subject: 


I fixed those things but it's still throwing the error. I think that there is something wrong with the parenthesis. But I can't figure out what could be wrong....do you see anything? 

Back to top 


nactownag
Newbie
Joined: 31 Mar 2009 Posts: 12

Posted: 03 Apr 2009 05:32:37 pm Post subject: 


Got it!
Code: solveeqn()
Prgm
Dialog
DropDown "Find:",{"M","F","N","I","T","k"},var
Request "Value of M?",num1
Request "Value of F?",num2
Request "Value of N?",num3
Request "Value of I?",num4
Request "Value of T?",num5
Request "Value of K?",num6
EndDlog
Expr(num1)>num1
Expr(num2)>num2
Expr(num3)>num3
Expr(num4)>num4
Expr(num5)>num5
Expr(num6)>num6
If var=1 Then
solve(m*(1num2)=E(num4*(1num5)/(1+num6)^x+m/(1+num6)^num3,x,1,num3),m)>res1: Disp res1
ElseIf var=2 Then
solve(num1*(1f)=E(num4*(1num5)/(1+num6)^x+num1/(1+num6)^num3,x,1,num3),f)>res2: Disp res2
ElseIf var=3 Then
solve(num1*(1num2)=E(num4*(1num5)/(1+num6)^x+num1/(1+num6)^n,x,1,n),n)>res3: Disp res3
ElseIf var=4 Then
solve(num1*(1num2)=E(i*(1num5)/(1+num6)^x+num1/(1+num6)^num3,x,1,num3),i)>res4: Disp res4
ElseIf var=5 Then
solve(num1*(1num2)=E(num4*(1t)/(1+num6)^x+num1/(1+num6)^num3,x,1,num3),t)>res5: Disp res5
ElseIf var=6 Then
solve(num1*(1num2)=E(num4*(1num5)/(1+k)^x+num1/(1+k)^num3,x,1,num3),k)>res6: Disp res6
EndIf
EndPrgm


Back to top 


TInewb
Member
Joined: 24 Dec 2008 Posts: 158

Posted: 07 Apr 2009 08:09:28 pm Post subject: 


is this on TiBasic?? i have never encountered.. 'Request' or 'Dialog'. =/ 

Back to top 


DarkerLine ceci n'est pas une 
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328

Posted: 07 Apr 2009 08:18:28 pm Post subject: 


It's TI89 Basic. Come to think of it, I should probably move it to that subforum. 

Back to top 


