Visualizzazione dei risultati da 1 a 8 su 8

Discussione: funzione inversa

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    funzione inversa

    ciao a tutti

    con questa funzione ricavoil prezzo maggiorato in base ad una percantuale

    ad esempio se prezzo è = a 10.00 avrò 23.00 ma come posso costruire una funzione analoga partendo da 23.00 per arrivare a 10.00 :master:

    codice:
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function calcolapubblico(prezzo) {
      var prezzo = parseFloat(prezzo.value);
      if (prezzo < 15.00){
    		var aumento = prezzo * 130/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
      }else if (prezzo > 15.00 && prezzo < 50.00){
    		var aumento = prezzo * 120/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
      }else if (prezzo > 50.00 && prezzo < 150.00){
    		var aumento = prezzo * 100/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
      }else if (prezzo > 150.00){
    		var aumento = prezzo * 80/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
    	}
    	return Math.floor(pubblico*100)/100
    }
    </script>
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Gentilissima Rossella, non ho studiato la tua funzione, perciò ti rispondo in modo generale.
    In pratica hai una funzione del tipo f(x, y) = 0. Nel tuo caso puoi esplicitare y = f(x). Però, non è detto che puoi esplicitare x = f(y).

    Questo si presenta spesso. Per esempio, se hai le dimensioni di una trave in cemento armato con i carichi utili noti, è facile fare una verifica diretta per stabilire se la trave è dimensionata bene o no.

    Però, non si può fare il contrario. Cioè, dati i carichi utili, non si può, in maniera diretta, esplicitare delle formule per ricavare le dimensioni della trave e del ferro contenuto.

    Però possiamo risolvere iterativamente per successive approssimazioni, fermando il calcolo quando otteniamo la precisione voluta.
    Nel tuo caso userei lo stesso aproccio. Basta utilizzare il metodo delle tangenti di Newton, quello delle secanti, o quello della bisezione.
    Nota, che il metodo iterativo è esatto come quello diretto, ed è molto veloce.

    Ciao
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Per la parte teorica, dovresti rivedere le conoscenze imparate in seconda media (proporzioni).
    Poi implementare la cosa in un codice JS non e` difficile.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    mi fareste un piccolo esempio

    grazie

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Rossella_75
    mi fareste un piccolo esempio

    grazie
    per quanto riguarda le medie, le ho fatte da un pezzo e non mi ricordo niente

    per l'altro, posso recuperare forse un esempio domani, almeno che non mi aiuti tu a capire come ricercare nel mio computer con windows XP sp2, tutti i files che hanno una certa frase :master:

    ciao
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Guarda se ti può andare.
    Nota: la tua funzione non va per gli estremi di intervallo, cioè è indefinita per prezzo = 15, 50, 150

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    	<head>
    		<title>a</title>
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="ProgId" content="VisualStudio.HTML">
    		<meta name="Originator" content="Microsoft Visual Studio .NET 7.1">
    		<script id="clientEventHandlersJS" language="javascript">
    <!--
    
    function Button1_onclick() {
    	document.getElementById("Text2").value = calcolapubblico(document.getElementById("Text1").value);
    }
    
    function Button2_onclick() {
    	var e = 0.000001;//errore massimo tollerabile
    	
    	//valore di cui si deve calcolare la radice
    	var valore = parseFloat(document.getElementById("Text2").value);
    	
    	var a = 0; //inizio intervallo
    	var b = valore; //fine intervallo
    	var c;
    	var i;
    	var n = 0;
    	for( i = 0; i < 1000; i++)
    	{
    		n++;
    		c = (a + b)/2;
    		if ( (calcolapubblico(c) - valore) > 0   )
    			b = c;
    		else
    			a = c;
    		
    		if(Math.abs(b - a) < e) break;
    	
    	}
    	c = Math.floor(c*100)/100;
    	
    	document.getElementById("Text3").value = ("Risultato: " + c + " dopo " + n + " iterazioni");
    	
    
    }
    
    function calcolapubblico(p) {
      var prezzo = parseFloat(p);
      if (prezzo < 15.00){
    		var aumento = prezzo * 130/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
      }else if (prezzo >= 15.00 && prezzo < 50.00){
    		var aumento = prezzo * 120/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
      }else if (prezzo >= 50.00 && prezzo < 150.00){
    		var aumento = prezzo * 100/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
      }else if (prezzo >= 150.00){
    		var aumento = prezzo * 80/100;
    		var tot = aumento + prezzo;
      		//var menoiva = tot / 1.20;
    		var pubblico = tot;
    	}
    	return Math.floor(pubblico*100)/100
    }
    
    
    
    //-->
    		</script>
    	</head>
    	<body MS_POSITIONING="FlowLayout">
    		<INPUT type="text" ID="Text1" NAME="Text1" value="10"><INPUT type="button" value="Calcolo diretto" ID="Button1" NAME="Button1" language="javascript"
    			onclick="return Button1_onclick()">
    		
    
    		
    
    		<INPUT type="text" ID="Text2" NAME="Text2" value=""><INPUT type="button" value="Calcolo inverso" ID="Button2" NAME="Button2" language="javascript"
    			onclick="return Button2_onclick()">
    		
    
    <INPUT type="text" ID="Text3" NAME="Text3" size="50"></p>
    	</body>
    </html>
    Pietro

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ehm! la tua funzione calcolapubblico è un poco strana non restituisce valori univoci.

    Per esempio, dà 33, sia immettendo 14.35, sia 15

    dà 270 immettendo, sia 135, sia 150


    La funzione inversa trova solo il primo valore
    Pietro

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    VVoVe: incredibile, ci siamo quasi, adesso la studio un pò per capirla bene poi ti faccio sapere....


    cmq mille grazie per l'esempio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.