Jump to content



Photo

Problem With Cas(solve)


  • Please log in to reply
6 replies to this topic

#1 Sxeballo

Sxeballo

    Newbie

  • Members
  • Pip
  • 3 posts

  • Calculators:
    CP300+

Posted 07 August 2010 - 06:09 AM

Hi, I wonder why that CPLua when I solve this Eq:
returns is 0?
require "cas"
q = input("Caudal:");
b = input("base:")
z = input("talud:")
e = input("Energia:")
Z = input("Z:")
cas("solve({e=x/3*(x*(z+Z)+3*b)/(x*(z+Z)+2*b)*(b*x+z*x^2/2+Z*x^2/2)+q^2/(9.81*(b*x+z*x^2/2+Z*x^2/2))},{x})=>aux")
h=cas("getRight(aux)")
print("la altura normal es:")
print( h )
returns is 0?

Thanks

Español:
por que cuando trato de resolver esta ecuacion en cplua, me tira un resultado h=0, con cualquier valor que le de a las demas variables?

de ante mano gracias.

#2 diiego06

diiego06

    Newbie

  • Members
  • Pip
  • 17 posts
  • Gender:Male
  • Location:Cbba-Bolivia

  • Calculators:
    ClassPad 300

Posted 09 August 2010 - 03:09 AM

Porque q,b,z,Z,e son variables definidas en CPLua, en tu caso son variables tipo "number".
Mientras que al usar el comando cas("") todo lo que se encuentre en paréntesis es lo estuvieses escribiendo en la aplicación main; es decir que tus tus variables q,b,Z,z,e no estan definidas; para ilustrarte mejor:

require "cas"

a=3
print(cas("3*a")) ----->3xa

print(cas("3*"..a))   ------->9

Espero haya aclarado tus dudas

PD: En tu caso sería mejor definir una variable X=cas("x") y posteriormente utilizar el comando cas.getRight(cas.solve(Expr))
Notar que Expr no debe estar encerrada en comillas

#3 Sxeballo

Sxeballo

    Newbie

  • Members
  • Pip
  • 3 posts

  • Calculators:
    CP300+

Posted 10 August 2010 - 03:10 AM

Tengo un nuevo problema al momento de utilizar cas.solve(Expr) sin usar comillas----> me manda un error de sintaxis no me deja escribir una ecuación matemática como por ejemplo: x^2 + 3*x = 5. solo me lo acepta si la escribo con comillas
a que se debe esto?

Edited by Sxeballo, 10 August 2010 - 03:10 AM.


#4 diiego06

diiego06

    Newbie

  • Members
  • Pip
  • 17 posts
  • Gender:Male
  • Location:Cbba-Bolivia

  • Calculators:
    ClassPad 300

Posted 10 August 2010 - 04:19 PM

Primero puede deberse a que no definiste como te dije una variable x=cas("x"); en caso de que lo hayas hecho:
No estoy muy seguro de la razón pero creo que al utilizar cas.solve(Expr); Expr no puede tener el simbolo = (sólo estoy suponiendo), pero para resolver tu problema puedes igualar tu ecuacion a 0:

require ("cas")x=cas("x")print(cas.solve(x^2+3*x-5))

Algo más, tienes que verificar que no exista una varible x definida en tu capeta actual (en el administrador de variables).

Para más información sobre como utilizar cas en CPLua leete el archivo functions.txt que viene en la carpeta de CPLua.
Una última recomendación: Personalmente no utilizo la libreria cas por dos motivos:

1. Al tener cálculos realmente grandes o complejos, el tiempo de cálculo se extiende bastante y entonces no abría motivo para trabajar con Lua simplemente utiliza la aplicacion CPBasic de tu calculadora
2. Existen algunos problemas con la sintaxix (como te abras dado cuenta) hay algunos temas en el foro que hablan de ello.

Lo aconsejable es utilizar métodos numéricos para resolver estos problemas y la mejor opción, creo yo, es utilizar la libreria LNA 1.6 que la puedes encontrar en los foros, además viene con un manual bastante detallado (en inglés). Lo puedes encontrar en el foro.

Edited by diiego06, 10 August 2010 - 04:26 PM.


#5 Sxeballo

Sxeballo

    Newbie

  • Members
  • Pip
  • 3 posts

  • Calculators:
    CP300+

Posted 10 August 2010 - 05:21 PM

Tengo un programa que me resuelve lo mismo en lenguaje CPBasic y queria ver si en CPlua era mas rapida la solucion pero segun lo que tu me dices no es asi -_-, además de mejorar la interfas.
Como puedo resolver el primer porblema que puse usando la libreria de metodos numericos que mencionas ?

#6 diiego06

diiego06

    Newbie

  • Members
  • Pip
  • 17 posts
  • Gender:Male
  • Location:Cbba-Bolivia

  • Calculators:
    ClassPad 300

Posted 11 August 2010 - 03:47 AM

El archivo ya no está disponible en la sección File sharing del foro, podria enviarlo a tu correo.

Para resolver tu problema podrias usar uno de lo metodos que incluye la libreria: Newton Raphson, bisección, metodo de brent,etc.

Luego de copiar los archivos en tu calculadora o en el emulador, el que corresponda, el procedimiento sería el siguiente (usando el metodo de la biseccion):

[codebox]require ("LNA/Bisect")

q = input("Caudal:");
b = input("base:")
z = input("talud:")
e = input("Energia:")
Z = input("Z:")

function f(x) return x/3*(x*(z+Z)+3*b )/(x*(z+Z)+2*b )*(b*x+z*x^2/2+Z*x^2/2)+q^2/(9.81*(b*x+z*x^2/2+Z*x^2/2))-e
end
xl=0
xr=100
x=Bisect(f,xl,xr)
print("la altura normal es:")
print( x )
[/codebox]

Este ejemplo sólo funcionará si el valor de x está entre xl=0 y xr=100, además para q el resultado sea correcto debería existir una sola solucion en ese intervalo.

PD: Gracias a PAP por LNA.
thanks to PAP for the LNA. :bow:

Edited by diiego06, 11 August 2010 - 03:51 AM.


#7 LxG

LxG

    Newbie

  • Members
  • Pip
  • 1 posts

  • Calculators:
    Classpas 330 v 3.05

Posted 05 December 2010 - 07:24 PM

Me gustaria usar LUA en mi classpad. En especial el LNA.
Pero no se como comenzar. intenté bajarlo pero parece no estar disponible en el foro de descargas.

Alguien puede mandarmelo, y de paso un link para saber como instalarlo. o algo similar =D.

Gracias por la atención... =D


2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users