elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: [1] 2 3 4 5
1  Programación / Scripting / Re: Método de Newton en: 26 Abril 2017, 16:04 pm
E intentándolo ahora mismo de otra forma llego a que .

 
Código:
from __future__ import division, print_function # Sólo para Python 2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from pylab import *
Código:
def newton(f, df, x0, tol=1e-11, maxiter=100):
    """Cálculo de una solución de $f(x)=0$ mediante el método de Newton.
   
    Argumentos:
        f: Función considerada
        df: Función derivada de f
        x0 : Estimación inicial
        tol: Tolerancia (diferencia entre dos iteraciones sucesivas)
        maxiter: Número máximo de iteraciones admitidas
    Valores devueltos: (x, niter) con
        x: Aproximación del punto fijo
        niter: Número de iteraciones realizadas
    """
    k = 0
    error = tol
    while k<maxiter and error >= tol:   
        x1 = x0-f(x0)/df(x0) # Iteración de punto fijo
        error = abs(x1-x0)
        x0 = x1 # Preparamos la siguiente iteración
        k = k+1
       
    # Si se llegó al número máximo de iteraciones, lanzar una excepción
    if k==maxiter:
        raise ValueError("Error de convergencia!")
       
    # Si todo fue bien, devolvemos la solución y el número de iteraciones
    return x1, k
Código:
x0 = 7 # Inicialización sugerida por la regla de Fourier
x, niter = newton(f,df,x0)
print("Aproximación por el m. de Newton:", x)
print("Número de iteraciones:", niter)
print("Resíduo: |f(x)| = %1.16f" % abs(f(x)))
OBviamente con su respectivos errores.

 
Código:
TypeError                                 Traceback (most recent call last)
<ipython-input-10-6e031eb10445> in <module>()
      1 x0 = 7 # Inicialización sugerida por la regla de Fourier
----> 2 x, niter = newton(f,df,x0)
      3 print("Aproximación por el m. de Newton:", x)
      4 print("Número de iteraciones:", niter)
      5 print("Resíduo: |f(x)| = %1.16f" % abs(f(x)))

<ipython-input-7-ffca3434fb25> in newton(f, df, x0, tol, maxiter)
     15     error = tol
     16     while k<maxiter and error >= tol:
---> 17         x1 = x0-f(x0)/df(x0) # Iteración de punto fijo
     18         error = abs(x1-x0)
     19         x0 = x1 # Preparamos la siguiente iteración

mtrand.pyx in mtrand.RandomState.f (numpy\random\mtrand\mtrand.c:22229)()

TypeError: f() takes at least 2 positional arguments (1 given)
2  Programación / Scripting / Re: Método de Newton en: 26 Abril 2017, 16:00 pm
Hola, perdona es que es mi primera vez en python
Estoy usando juypyter notebook python 3.
Tengo ahora mismo lo siguiente:

 
Código:
from __future__ import division, print_function # Sólo para Python 2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from pylab import *


def f(x): return exp(x)-(5* x**2)-5
def df(x): return exp(x)-(10* x)

def newton(f, df, x0, tol):
    """Calcula una raíz de $f(x)=0$ mediante el método de Newton, a partir de x0"""
   
    max_iters = 100
    iter = 0
    while iter<max_iters:
        x1 = x0-f(x0)/df(x0) # Punto fijo en Newton
        if abs(x1-x0) < tol: #hacemos iteraciones hasta que las dferencias consecutivas sea tol
            return x1 , iter #En la función devolvemos la lista con los dos valores
        x0 = x1
        iter = iter+1
    print ("Error de convergencia")
   
x = newton(f, df, x0=7, tol=1e-11)
print (x)
y el error es el siguiente.
 
Código:
NameError                                 Traceback (most recent call last)
<ipython-input-4-89b96b21ad01> in <module>()
     15     print ("Error de convergencia")
     16
---> 17 x = newton(f, df, x0=7, tol=1e-11)
     18 print (x)

<ipython-input-4-89b96b21ad01> in newton(f, df, x0, tol)
      8     iter = 0
      9     while iter<max_iters:
---> 10         x1 = x0-f(x0)/df(x0) # Punto fijo en Newton
     11         if abs(x1-x0) < tol: #hacemos iteraciones hasta que las dferencias consecutivas sea tol
     12             return x1 , iter #En la función devolvemos la lista con los dos valores

<ipython-input-4-89b96b21ad01> in f(x)
----> 1 def f(x): return exp(x)-(5* x**2)-5
      2 def df(x): return exp(x)-(10* x)
      3
      4 def newton(f, df, x0, tol):
      5     """Calcula una raíz de $f(x)=0$ mediante el método de Newton, a partir de x0"""

NameError: name 'exp' is not defined

In [ ]:


 No sé como declarar el utf-8 ni importar el módulo math.
3  Programación / Scripting / Método de Newton en: 25 Abril 2017, 17:41 pm
Me da error el siguiente código. Lo que quiero es mostrar una especie de lista con
 Iteracion 1, valor de la aproximación x
 etc

 este es el código:
 
 
Código:
def f(x): return exp(x)-(5* x**2)-5
def df(x): return exp(x)-(10* x)

def newton(f, df, x0, tol):
    """Calcula una raíz de $f(x)=0$ mediante el método de Newton, a partir de x0"""
   
    max_iters = 100
    iter = 0
    while iter<max_iters:
        x1 = x0-f(x0)/df(x0) # Punto fijo en Newton
        if abs(x1-x0) < tol: #hacemos iteraciones hasta que las dferencias consecutivas sea tol
            return x1 , iter #En la función devolvemos la lista con los dos valores
        x0 = x1
        iter = iter+1
    print ("Error de convergencia")
   
x = newton(f, df, x0=7, tol=1e-11)
print (x)

   
   
   
   




   
   
   
   
   
    c= 1


    for iter in range(1,99):
   
    x1= x0-f(x0)/df(x0)
    x0= x1
    print("iteracion",c,",raiz aproximada,",x0)
    c= c+1
   
4  Programación / Programación C/C++ / Numero feliz en C en: 8 Junio 2016, 12:30 pm
Hola, tengo que hacer un programa que me diga si un número es feliz. No sé como implementarlo. Lo que he hecho es primero que me diga las cifras que tiene el número ingresado y que me diga las cifras que son.
 Aquí está la definición de número feliz: https://es.wikipedia.org/wiki/Número_feliz
    esto es lo que tengo de momento:
   
Código:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define max 100



    int cifras(int n,int i){
        i=1;
    while(n/10>0){
        n=n/10;
        i++;

    }
    return(i);
    }
    void digito(int v[],int n,int digitos,int c ){

       for(c=0;c<digitos;c++){
        v[c]=n%10;
        n=n/10;
       }

    }


       int main(Void){
       int n;
       int i=1;
       scanf("%d",&n);
       int v[max];
       int digitos=cifras(n,i);
    printf("Tiene %d cifras\n",digitos);
    int c;
   digito(v,n,digitos,c);
   for(c=0;c<digitos;c++){
    printf("%d\n",v[c]);
   }

















       system("pause");
       return(0);

       }
Gracias.
 
5  Programación / Programación C/C++ / Contar elementos de un vector en: 18 Enero 2016, 01:16 am
Hola, quisiera saber un código que me dijera para un vector de 10 enteros que:
  El primer elemento esta repetido 2 veces
  El segundo elemento esta repetido 1 veces
.......... etc... Lo he intentado todo y no me sale. Gracias.
Al fin y al cabo es un programa que me diga cuantas veces aparece los elementos de un vector.
6  Programación / Programación C/C++ / factorización de un número en: 14 Enero 2016, 23:26 pm
Hola,  he hecho un programa que me factoriza un número. Me da error, y yo creo que el error está en dónde poner la función return.
Código:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

     int divide(int n,int divisores){
         divisores=2;
     while(n>=divisores){
        while(n%divisores==0){
            n=n/divisores;


        } divisores++;

     }

      return(divisores);
     }







     int main(void){
         int n,divisores;
     printf("dime el numero\n");
     scanf("%d",&n);
    printf("%d\n",divide(n,divisores));

     system("pause");
     return(0);

     }
7  Programación / Programación C/C++ / Re: Decir si dos vectores son iguales en C en: 4 Enero 2016, 13:01 pm

Código
  1. int soniguales(int v[],int a[]){
  2.   int i;
  3.   for(i=0;i<5;i++)
  4.     if(v[i]!=a[i])
  5.       return 1;
  6.   return 0;
  7. }
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
Pero así solo comparas la primera iteracción.
8  Programación / Programación C/C++ / Decir si dos vectores son iguales en C en: 4 Enero 2016, 12:40 pm
Hola, me encuentro con el mismo problema que con las matrices, en este caso con vectores. Tengo que compararlos y ver si son iguales.
este es el código:
 
Código:
  #include<stdio.h>
        #include<stdlib.h>

        int soniguales(int v[5],int a[5],int aux){
            int i;
        for(i=0;i<5;i++){
        if(v[i]!=a[i]) {
            aux=1;
        }
        }
        return (aux);
        }




    int main(void){
    int v[5],a[5],i,aux;
    for(i=0;i<5;i++){
    scanf("%d",&v[i]);
    }
    for(i=0;i<5;i++){
    scanf("%d",&a[i]);
    }
    soniguales(v,a,aux);

    if(aux==1) printf("Son distintos\n");
    else printf("Son iguales");
   







    system("pause");
    return(0);

    }
9  Programación / Programación C/C++ / Re: Determinar si dos matrices son iguales en: 3 Enero 2016, 19:25 pm
No te funciona porque a la primera iteración, la primera comparación,  ya retornas de la función. Solo comparas el primer elemento.
return termina la función sí o sí.
Debes rehacer la función.

Recomendación: establece una variable con un valor tal que indica que la función ha tenido éxito en ver que los dos arrays son iguales.
Empieza a realizar la comparación de forma iterativa.
Si encuentras que en algún momento son diferentes cambias el valor de la anterior variable y sales del bucle.
Retorna ek valor.

Y cómo lo harías en código? no entiendo establecer una variable con un valor



creo que te refieres a algo así, aunque todavía sigue sin salir correcto, pues al introducir dos matrices iguales me dice que no lo son:
 
Citar
#include<stdio.h>
#include<stdlib.h>
     int compi(int m[3][3],int a[3][3]){
     int i,j,comparacion;
     for(i=0;i<3;i++){
        for(j=0;j<3;j++){
         if(m[j]==a[j]) comparacion++;
        }
     }
   return(comparacion);

     }
     int soniguales(int m[3][3],int a[3][3],int comparacion){
     compi(m,a);
     if(comparacion==9) return 1;
     else return 0;






     }

     int main(void){
      int m[3][3],i,j;
      int a[3][3];
      int comparacion;

             for(i=0;i<3;i++){
             for(j=0;j<3;j++){
             scanf("%d",&m[j]);
             }

             }
             printf("\n\t");

              for(i=0;i<3;i++){
              printf("\n");
             for(j=0;j<3;j++){

              printf("%6d ",m[j]);

             }
             }

             printf("\n");
             for(i=0;i<3;i++){
                for(j=0;j<3;j++){
                    scanf("%d",&a[j]);
                }
             }
                printf("\n\t");
                for(i=0;i<3;i++){
                        printf("\n");
                    for(j=0;j<3;j++){
                        printf("%6d ",a[j]);
                    }
                }
                printf("\n");
                   compi(m,a);

                  if(soniguales(m,a,comparacion)) printf("Son iguales\n");
                  else printf("No son iguales\n");







             system("pause");
             return(0);
             }
10  Programación / Programación C/C++ / Re: Determinar si dos matrices son iguales en: 2 Enero 2016, 21:11 pm
si, es verdad de todas maneras no me funciona el programa, me dice que son iguales aunque la matrices sean distintas.
Páginas: [1] 2 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines