[ bijna ] universle inverse functie

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

[ bijna ] universle inverse functie

Berichtdoor bluatigro » do sep 09, 2010 11:41 am

ik ben bezig met een
[ bijna ] universle inverse functie
dit werkt alleen als f'(x)<0 of f'(x)>0
de call van de functie :
inv( y , func$ , low , high , type$ , er )
y = getal om door de inversefunctie to doen
func$ = f(x) : gebruik een # voor alle x
low = laagste verwacht resultaat
high = hoogste verwachte resultaat
type$ = "<" of ">"
er = gewenste presisie resultaat
Code: Selecteer alles

''example f'(x) < 0
print inv( 10 , "-#^5-#^3-#+7" , -100 , 100 , "<" , 1e-13 )
''example f'(x) > 0
print inv( 9 , "#^#+#" , 1 , 30 , ">" , 1e-13 )

end
function inv( x , func$ , low , high , type$ , er )
  while abs( x - midle ) > er
    midle = ( high - low ) / 2 + low
    f$ = replace( func$ , "#" , str$( midle ) )
    q = eval( f$ )
    if eval( str$( q ) ; type$ ; str$( x ) ) then
      high = midle
    else
      low = midle
    end if
  wend
  inv = midle
end function
function replace$( org$ , remove$ , putin$ )
  while instr( org$ , remove$ ) <> 0
    a = instr( org$ , remove$ )
    l$ = left$( org$ , a - 1 )
    r = len( remove$ )
    r$ = mid$( org$ , a + r , len( org$ ) - r )
    org$ = l$ + putin$ + r$
  wend
  replace$ = org$
end function

ik had nog wat vragen :
- testen aub
- fouten ?
- kan : func$ = "ZelfGemaakteFunctie( # )" ?
[ de code is voorbereid op deze mogelijkheid ]
bij onvewachte resultaten
verwissel low en high in if blok van inv()
en test weer
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm

Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron