Newsgroup: it.comp.lang.visual-basic
Titolo: plotta funzioni

Salve.
Devo disegnare una funzione di 1 variabile per punti.
Esempio:
x=0
Do while x<5
  y=f(x)
  x=x+h
loop
Questo č a passo fisso.
Come fare un passo variabile in modo
tale che i punti sulla curva siano equidistanti?
Grazie.

 Grazie.
Equidistanti tra di loro?
In generale occorre risolvere questa equazione nell'incognita h (l'incremento
orizzontale), data x:
d = distanza da mantenere costante
h²+[f(x+h)-f(x)]²=d²
Chiaramente se f(x) è l'equazione di una circonferenza le cose si semplificano,
ma bisogna cambiare approccio...
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 ha scritto nel messaggio 
news:457d941a$0$16147$4faf...@reader3.news.tin.it...

Mi puoi spiegare il senso di questa richiesta?
E' puramente estetico o ha un suo perchč?
Altrimenti forse ti conviene unire i punti con una linea cosě risolvi i 
problemi ;)
Ciao 


D'accordo.
Mi è venuta in mente la idea seguente:
Sia data la funzione f(x).
Fissiamo un passo h e la distanza d.
Fisso il punto iniziale x0.
Quindi faccio avanzare (x=x+h)  fino a che  sqr(h²+(f(x+h)-f(x))²)<=d.
quindi ottengo un valore x1.
pongo poi x0=x1 e ricomincio.
otterrò una serie di valori x per i quali sqr(h²+(f(x+h)-f(x))²)=d.
Giusto?
Questa è l'idea.........
uno:
x=x0
do
  doevents
  y=f(x)
  y1=f(x+h)
  L=sqr(h²+(f(x+h)-f(x))²)
  if L>d then exit do
  x=x+h
loop
x0=x
goto uno
Ho forse sbagliato qualcosa?


A parte che il loop esterno lo potevi realizzare anch'esso con un Do..Loop
anziché con un GoTo, il problema più grave è che a priori potresti anche non
uscire più dal loop interno oppure addirittura uscire dal dominio di f(), a
seconda di come scegli l'incremento h.
Cioè, non è detto che l'equazione h²+[f(x+h)-f(x)]²=d² abbia radici reali per h.
Ragionando un po' e applicando quello che mi ricordo di analisi matematica,
potrei dirti che se nell'intervallo in cui devi plottare il grafico di f() essa
è continua e derivabile, una buona approssimazione per h la si ottiene con
questa formula, posto che tu conosca la derivata prima f'(x):
h = d / sqr(1+[f'(x)]²)
Questa si ottiene risolvendo h²+[f(x+h)-f(x)]²=d² dopo aver sostituito (per
approssimazione) f(x+h)-f(x) con h * f'(x).
Sono curioso: cosa devi fare?


 Ciao
Ovviamente la funzione non è di primo grado!
Sarebbe peraltro interessate sapere se è suffiiente che la distanza
tra i punti deve essere semplicemente misurata come distanza rettilinea
oppure deve essere intesa come distanza curvilinea misurata lungo la
funzione stessa.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 funzione stessa.
nient'altro? :)
Ciao 

 
La mia è una risposta per Fabio: il suo consiglio potrebbe essere utile
solo nel caso di una funzione di primo grado (retta nel piano).
Diversamente non potrebbe sapere dove posizionare il 2° punto della
linea
con la quale vorrebbe unire i punti.


 con la quale vorrebbe unire i punti.
y = f(x)
data x, ricavi y, io a scuola sul quaderno disegnavo anche le parabole e 
senza bisogno del PC :)
Se mi parli di "non saprebbe dove posizionare il 2° punto a una distanza 
prefissata" allora è un'altro discorso e non saprei ne smentire ne 
confermare.
Forse questo thread andava postato su it.scienza.matematica.
Ciao 

 Ciao
Infatti, è chiaro, mi riferivo priprio al 2° punto a una distanza 
prefissata.
Ciao.
