Omnimaga

Calculator Community => TI Calculators => TI-BASIC => Topic started by: Roondak on October 24, 2013, 10:35:35 pm

Title: [Nspire] Buggy Inflection Point Code
Post by: Roondak on October 24, 2013, 10:35:35 pm
I've been programming an inflection point solver in Nspire BASIC, and my code seems to have an odd bug in it. If x^4+cx+d, where c and d are constants (ex. x^4+3x), is entered, the program spits out an error of nsolve not having an equation in the first argument, and I can't figure out why.

Code: [Select]
Define inflect(ex)=
Func
:Local ansx,di2,di3,ex,i,out
:derivative(ex,x,2)→di2
:derivative(di2,x)→di3
:ansx:=10^(99)
:out:={}
:For i,1,10
:  nSolve(di2=0,x=ansx,−10^(99),ansx-10^(−7))→ansx
:  If ansx="No solution found" Then
:    Exit
:  EndIf
:  If 0≠di3|x=ansx Then
:    out[2*i-1]:=ansx
:    out[2*i]:=ex|x=ansx
:  EndIf
:EndFor
:Return out
:EndFunc
ex is the expression entered, di2 and di3 are the second and third derivatives respectively, out is the output, ansx is the last x value found, and i is the for loop variable.

Also, any suggestions on how to make my code more efficient and such would be nice.

EDIT: Attached program below.
Title: Re: [Nspire] Buggy Inflection Point Code
Post by: Roondak on October 29, 2013, 05:45:51 pm
Managed to fix it, found about zeros(), much better than solve here.
New code if anyone wants to see it:
Code: [Select]
Define inflect(ex)=
Func
:Local ansx,di2,di3,ex,xvals,out,i
:derivative(ex,x,2)→di2
:derivative(di2,x)→di3
:xvals:=zeros(di2,x)
:out:={}
:For i,1,dim(xvals)
:  If di3≠0|x=xvals[i] Then
:    out[dim(out)+1]:=xvals[i]
:    out[dim(out)+1]:=di2|x=xvals[i]
:  ElseIf (di2|x=xvals[i]+1.E−5)*(di2|x=xvals[i]-1.E−5)<0 Then
:    out[dim(out)+1]:=xvals[i]
:    out[dim(out)+1]:=di2|x=xvals[i]
:  EndIf
:EndFor
:If out={} Then
:  Return "No inflection points found."
:EndIf
:out:=list▶mat(out,2)
:Return out
:EndFunc
Title: Re: [Nspire] Buggy Inflection Point Code
Post by: tpt1234567890 on October 29, 2013, 05:48:04 pm
Nice job on fixing it!
Title: Re: [Nspire] Buggy Inflection Point Code
Post by: Roondak on October 29, 2013, 10:46:32 pm
Nice job on fixing it!
Thanks!