ecco il codice:
codice:
//z(double,double) è la funzione implicita
//g(double,double) ritorna (z(x+0.001,y)-z(x,y))/0.001;
int main()
{
for (double Y=0.003;Y<=1;Y+=0.001)
{
double x=-1;
while (x<=1)
{
if (z(x,Y)>0)
{
double tm=x; //tm è il valore di x che poi verrà approssimato con il metodo delle tangenti all'ascissa del punto sul grafico
for (int i=0;i<10;i++) tm=tm-z(tm,Y)/g(tm,Y);
cout<<Y<<" "<<tm<<endl; //stampo il punto
while((z(x,Y)>0)&&(x<=1)) x+=0.01;
}
else if (z(x,Y)<0) while(z(x,Y)<0) x+=0.01;
else {cout<<Y<<" "<<x<<endl; x+=0.01;}
}
getchar();
}
}
per alcune funzioni (come la circonferenza) funziona alla perfezione, per altre (come una qualsiasi parabola) entra in loop in prossimità del ciclo while (x<=1)