Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Pregunta (http://www.forosdelweb.com/f69/pregunta-460014/)

lizertina 27/01/2007 11:48

Pregunta
 
Hola a todos!
Visual Basic tiene algún problema cuando intenta elevar un numero negativo a un numero par (múltiple de dos, lo aclaro porqué soy catalana y no sé si en castellano se escribe par o tiene otro nombre)? Esque con los números impares me lo hace bien i con los pares no...

Muchas gracias.

Lizer

albertovicat 27/01/2007 13:31

Re: Pregunta
 
Posiblemente sea un problemita de interpretar de quien es el signo. Estos dos ejemplos los ejecuté en la ventana inmediato de VB6 (Control + G):

for n=0 to 4:print -2^n;:next n
-1 -2 -4 -8 -16

for n=0 to 4:print (-2)^n;:next n
1 -2 4 -8 16

... lo que escribí yo es el renglón de arriba en cada caso, lo de abajo es la respuesta de VB6. En el primer caso lo hace "mal" porque entiende que el signo menos es de la potencia ya efectuada: -(2^n), en el segundo caso lo hace bien porque se le aclara que el signo menos es del 2 y no de la potencia.
Saludos.

lizertina 28/01/2007 05:04

Re: Pregunta
 
Hola.
Primeramente, gracias por responder.
El programa encuentra zeros de funciones con el teorema de Bolzano. declaro, por ejemplo una variable a i luego otra f(a) si la funcion a "resolver" es x^2/2 a la que llega a un valor negativo peta pero si la función es x^3/2 lo hace bien. La variable f(a)=(a^2)/2, el programa lo tendria que entender bien no? He provado que f(a)= ((a)^2)/2 pero peta igual... cuando la elevas a pares peta pero si son impares no... la verdad es que no lo entiendo...:serio:

Merci

Lizer.

albertovicat 28/01/2007 08:40

Re: Pregunta
 
Hay algo que no te estoy entendiendo. Mira lo que hace el mío en la ventana inmediato:
a= -3
print a
-3
print (a^2)/2 'esto es correcto, al ser exp par se positiviza
4,5
print (a^3)/2
-13,5
print a
-3

puse en azul lo que responde VB.
Hace años, con GWBASIC, me ocurrió algo así de tener resultados distintos en comando directo y en una función definida en el programa.
Por ser domingo haré un pequeño programita definiendo la función, a ver qué pasa.

lizertina 28/01/2007 09:46

Re: Pregunta
 
Hola!
Te agradezco mucho tu ayuda, ya me has contestado a la pregunta, debería entenderlo bien. En fin, me pondré a mirar qué debe ser aunque lo ilógico es que lo haga bien con algunas expresiones y con otras no...
Gracias de nuevo.
Lizer

lizertina 28/01/2007 09:52

Re: Pregunta
 
Ai que tonta me siento a veces...
Ya sé lo que le pasa! la función es, por ejemplo, x^2/2: dados dos puntos a i b de distinto signo, calculamos f(a) i f(b), el programa peta porque los dos resultados son positivos y, por tanto, no habrà un punto medio en el qual la f(x)=0! El teorema no se cumple! Bueno ahora sólo queda prevenir ese error y eso lo sabré hacer!
A veces lo más evidente no lo parece...
gracias de todas formas!


La zona horaria es GMT -6. Ahora son las 06:21.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.