PROCEDIMIENTO: Desarrollar los programas mencionados y sacar conclusiones.
PROBLEMA 1: Muestra en pantalla el uso de todas las funciones matemticas de prolog. SOLUCION goal Y1 = sin(90*3.141516/180), % Seno 90 = 0.9999999993 writef("Seno 90 = %f",Y1), Y2 = cos(90*3.141516/180),nl, writef("Cos 90 = %f",Y2),nl, % Cos 90 = 0.0000383268 Y3 = arctan(1)*180/3.141516, writef("ArcoTangente de 1 = %f",Y3),nl, % ArcoTangente de 1 = 45.0010980086 Y4 = ln(2.718281),/*logaritmo natural de e en base e*/ writef("Ln 2.718281 = %f",Y4),/*1*/nl, Y5 = log(10),/*logaritmo en base 10 de 10*/ writef("log 10 = %f",Y5),/*1*/nl, Y6 = exp(1),/*e elevado a 1*/ writef("Exp 1 = %f",Y6),/*1*/nl, Y7 = sqrt(2), writef("Raiz cuadrado de 2 = %f",Y7),/*1.414213*/nl, Y8 = round(16.5), writef("Redondear al entero 16.5 = %f",Y8),/*17*/nl, Y9 = trunc(16.5), writef("Truncar 16.5 a la parte entera = %f",Y9),/*16*/nl, Y10 = abs(-15), writef("Valor absoluto de -15 = %d",Y10),/*15*/nl, readln(_).
PROBLEMA 2: Convertir una coordenada cartesiana a coordenada polar.
SOLUCION
domains r=real predicates convertir(r,r) LABORATORIO SESIN N 4 Facultad: Ingeniera de Sistemas y Electrnica. Asignatura: Programacin Lgica. Ciclo: Sptimo Semestre Acadmico: 2014 -II Docente: Ing. Sal Prez Vega Sesin 4: Expresiones Aritmticas
domains r = real predicates regla(r,r) clauses regla(X,Y):- X <> 0, D = X * X + Y * Y, R = round(sqrt(D)), A = round(arctan(Y/X) * 180 / 3.141516), write("RADIO = ",R),nl, write("ANGULO = ",A),!. regla(_,_):- write("X TIENE QUE SER DIFERENTE CERO"),!. goal write("INGRESE X = "), readreal(X), write("INGRESE Y = "), readreal(Y), regla(X,Y), readln(_).
PROBLEMA 3
Hallar la potencia Y = X N donde X = 2, N = 5.
SOLUCION
goal X = 2, N = 5, A = N * ln(X), Y = exp(A), write("Potencia = ",Y), readln(_).
domains r = real
predicates regla(r,r)
clauses regla(B,N):- B >= 0, Y = exp(N * ln(B)), write("Y = ",Y),!. regla(_,_):- write("LA BASE TIENE QUE SER POSITIVOS MAYORES QUE CERO"),!. goal write("INGRESE BASE = "), readreal(B), write("INGRESE EXPONENTE = "), readreal(N),
3 Ing.SalPrezVega PROGRAMACION LOGICA
regla(B,N), readln(_).
PROBLEMA 4 N Hallar la potencia Y = X donde X = 2 , N = 0.5.
SOLUCION
goal X = 2, N = 0.5, A = N * ln(X), Y = exp(A), write("Potencia = ",Y), readln(_).
PROBLEMA 5
Hacer una regla que halle la potencia de un nmero real cualquiera elevado a un exponente tambin real cualquiera. La regla tendr 3 argumentos en 2 de ellos recibe la base y el exponente y en el tercer argumento regresa la potencia. SOLUCION
domains r = real predicates potencia(r,r,r) clauses potencia(P,X,N):- Z = N * ln(X), P = exp(Z). goal write("Ingrese X = "),readreal(X), write("Ingrese N = "),readreal(N), potencia(P,X,N), write("Potencia = ",P), readln(_).
PROBLEMA 6
Hacer la deduccin de la frmula para obtener la potencia de cualquier nmero. SOLUCION
Y = X N
LN(Y) = LN(X N ) LN(Y) = N * LN(X) Y = E N * LN(X)
clauses funcion(X):- X<>0,X>0, % La interseccin es X>0 calculo(X,Y), write("Y = ",Y),!.
funcion(_):- write("NO EXISTE"),!.
calculo(X,Y):- Aux = 1/3, potencia(X,Aux,R), Y = (abs(X)+log(10))/R.
potencia(B,E,Y):- Aux = E * ln(B), Y = exp(Aux).
goal write("Ingresar X = "), readreal(X), funcion(X), readln(_).
domains r = real predicates regla(r) clauses regla(X):- X > 0, Y = (abs(X)+log(10))/exp(1/3*ln(X)), write("Y = ",Y),!. regla(_):- write("X TIENE QUE SER POSITIVO"),!. goal write("INGRESE X = "), readreal(X), regla(X), readln(_).
PROBLEMA 8
Hacer un programa que dado un X. Hallar
tan(X) + log5 (X) Y = -------------------- arctan(X)
SOLUCION
5 Ing.SalPrezVega PROGRAMACION LOGICA
sen(X)/cos(X) + Ln(X)/Ln(5) Y = -------------------------------- arctan(X)
Para los siguientes ngulos no estn permitidos 90, 270, 450 es decir los valores (2n-1) * 90 osea 1 * 90, 3 * 90, 5 * 90... Tampoco para los valores X = 0 en arctan(0). Tampoco para los X<0 en Ln(X)
Esto quiere decir que para los siguientes valores da como resultado. X = 90 NO EXISTE X = 270 NO EXISTE X = 450 NO EXISTE X = 0 NO EXISTE X = -5 NO EXISTE X = 90.01 -4705.5899287