Salut

Tocmai ţi-ai creat cont? Dorești să intri cu dreptul în comunitatea noastră? După ce ai citit regulile, treci pe aici şi spune-ne cine eşti, de unde, cu ce te ocupi, ce te intereseaza şi cum ai dat de noi. În schimb, vei avea parte de o primire călduroasă !

Salut

Postby hanielamaria » 07 May 2010, 12:56

Buna!

Ma numesc Haniela Maria si sunt studenta la Facultatea de Informatica din Cluj... Postez acest mesaj pe acest forum in speranta sa gasesc o persoana care ar fi dornica sa ma ajute cu cateva idei... deoarece am de realizat un proiect cu numele : "Proiectarea si dezvoltarea unui prototip de evaluare a functiilor de o singura variabila reala" in limbajul de programare Java. Am facut cate ceva din el... dar fiind incepatoare nu prea ma descurc singura... Cine considera ca poate sa ma ajute cu cateva idei...si pentru mai multe detalii ma gasiti la id_sters@yahoo.com sau id de mess id_sters...

Va multumesc! O zi faina.
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby emi » 07 May 2010, 13:07

Bine ai venit Haniela Maria !

(edit: proiectul tau nu cumva e legat de matematica mai mult ? (din aia high level))
0,0p / 0 votes
User avatar
emi
Byte
 
Joined: 10 Apr 2010
Status: 18

Re: Salut

Postby hanielamaria » 07 May 2010, 13:16

Merci!...
Scopul este de a construi o aplicatie care sa trateze functiile de o singura variabila reala.
De exemplu f(x)= 3x + sin(x).
Diversi operatori aritmetici si functii pot fi folositi în definirea acestor functii : +,*, sin, ln, exp,etc.
Forma interna utilizata pentru a codifica functiile ce urmeaza sa fie manipulate va fi o forma arborescenta, identificabila prin radacina sa.
Rolul acestei aplicatii este de :
* a evalua o functie pentru o anumita valoare ;
* a deriva la nivel simbolic o functie ;
* a calcula derivata functiei pentru o anumita valoare data ;
De exemplu :
Fie functia f(x)=sin(x)+2x si x=2.
Aplicatia va trebui :
sa afiseze f(2)=4+sin(2) ;
sa afiseze derivata simbolica, adica f’(x)=cos(x)+2 .
sa calculeze valoarea derivatei pentru x=2 , adica f’(2)=cos(2)+2.

Sper ca am explicat cat de cat ce vreau de la acest proiect.


L.E. (-- 07 May 2010, 13:16 --)

De exemplu pentru Clasa Plus am construit urmatorul corp:
  1. public class Plus extends Operator {
  2.  
  3.  
  4.     public double calcul(double aux1, double aux2)
  5.     {
  6.         return aux1 + aux2;
  7.     }
  8.    
  9.     public static double Calcul(double aux1, double aux2)
  10.     {
  11.         return aux1 + aux2;
  12.     }
  13.    
  14.     public  double calculDerivata()
  15.     {
  16.         if (fStang==null || fDrept==null)
  17.             System.exit(1);
  18.  
  19.         return calcul(fStang.calculDerivata(), fDrept.calculDerivata());
  20.     }
  21.    
  22.     public  String derivare()
  23.     {
  24.          if (fStang==null || fDrept==null)
  25.             System.exit(1);
  26.  
  27.         return concatTermeni(fStang.derivare(), fDrept.derivare());  
  28.     }
  29.    
  30.     public String concatTermeni(String aux1, String aux2)
  31.     {
  32.         String aux;
  33.         if (aux1.compareTo("0") == 0 || aux2.compareTo("0") == 0)
  34.         //if (!strcmp(aux1, "0") && !strcmp(aux2, "0"))
  35.             aux = aux1;
  36.         else if (aux1.compareTo("0") == 0) aux = aux2;
  37.         else if (aux2.compareTo("0") == 0 ) aux = aux1;
  38.         else
  39.             aux = aux1 + "+" + aux2;
  40.         return aux;
  41.     }
  42.    
  43.     public static String concatTermens(String aux1, String aux2)
  44.     {
  45.         String aux;
  46.         if (aux1.compareTo("0") == 0 || aux2.compareTo("0") == 0)
  47.         //if (!strcmp(aux1, "0") && !strcmp(aux2, "0"))
  48.             aux = aux1;
  49.         else if (aux1.compareTo("0") == 0) aux = aux2;
  50.         else if (aux2.compareTo("0") == 0 ) aux = aux1;
  51.         else
  52.             aux =  aux1 + "+" + aux2;
  53.         return aux;
  54.     }
  55.    
  56. }

Imi mai trebuie Clasa Operator.Cam pe aicea ma cam blochez.:D
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby emi » 07 May 2010, 15:25

Ce iti propui nu e deloc simplu.
citez :"* a deriva la nivel simbolic o functie ;"
Doar asta e un proiect care necesita foarte multe resurse din partea celui care vrea sa il implementeze.

Eu zic sa intrebi profesorul, eventual, meditatii.
Eu, personal, spun sincer ca nu ma pricep.

L.E.: Iti propun ca incepi cu ceva mult mai simplu, indiferent de limbaj.
0,0p / 0 votes
User avatar
emi
Byte
 
Joined: 10 Apr 2010
Status: 18

Re: Salut

Postby andreiandreiq » 07 May 2010, 16:10

Bine ai venit;)
0,0p / 0 votes
Image
User avatar
andreiandreiq
Word
 
Joined: 30 Dec 2009
Status: 33.33

Re: Salut

Postby hanielamaria » 07 May 2010, 18:39

emi wrote:Ce iti propui nu e deloc simplu.
citez :"* a deriva la nivel simbolic o functie ;"
Doar asta e un proiect care necesita foarte multe resurse din partea celui care vrea sa il implementeze.

Eu zic sa intrebi profesorul, eventual, meditatii.
Eu, personal, spun sincer ca nu ma pricep.

L.E.: Iti propun ca incepi cu ceva mult mai simplu, indiferent de limbaj.



As incerca ceva mai simplu dar nu am ce sa fac ...pt ca asta e proiectul meu:(...din aceasta cer ajutorul...pt ca asa as citi...m-as documenta...dar nu mai am timp...:(
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby Dexter » 07 May 2010, 18:55

Cât timp mai ai?

PS: "Bine ai venit!"
0,0p / 0 votes
User avatar
Dexter
Word
 
Joined: 04 Jan 2010
Location: Secret Lab
Status: 44.5

Re: Salut

Postby hanielamaria » 07 May 2010, 19:55

Dexter wrote:Cât timp mai ai?

PS: "Bine ai venit!"

Merci!...
AM timp pana saptamana viitoare...luni...
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby just me » 07 May 2010, 20:16

Bine ai venit.

Totusi ce ai facut pana acum de nu ai realizat proiectul?....Am senzatia ca stiai ce ai de facut de la inceputul semestrului. [-X
0,0p / 0 votes
" Being happy doesn't mean that everything is perfect. It means that you've decided to look beyond the imperfections "
User avatar
just me
Bit
 
Joined: 30 Dec 2009
Location: Cluj
Status: 3

Re: Salut

Postby hanielamaria » 07 May 2010, 20:24

acum o saptamana am aflat de el...si m-am ocupat de corpul functiilor sin,cos,...plus,minus...in prezent im trebuie o interfata grafica care sa calculeze functii.De exemplu f(x)=sinx+x.
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby morpheus » 07 May 2010, 20:27

Cum ai implementat prioritatea operatorilor ?
0,0p / 0 votes
Curiosity killed the cat
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: Salut

Postby hanielamaria » 07 May 2010, 20:32

morpheus wrote:Cum ai implementat prioritatea operatorilor ?

Te referi la asta?
public abstract class Operator extends Nod{

public abstract double calcul();

public abstract double calcul(double aux1,double aux2);

public abstract String concatTermeni(String aux1,String aux2);

public String concatTermeni() {
// TODO Auto-generated method stub
return null;
}
}
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby morpheus » 07 May 2010, 20:36

Ma refer la urmatorul lucru:
f(x) = x + 2 + 3 * 4

Ar trebui parsat ca si:
f(x) = x + 2 + (3 * 4)
si nu ca:
f(x) = x + (2 + 3) * 4

Mai precis ... cum arata gramatica ta ?
0,0p / 0 votes
Curiosity killed the cat
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: Salut

Postby hanielamaria » 07 May 2010, 20:45

morpheus wrote:Ma refer la urmatorul lucru:
f(x) = x + 2 + 3 * 4

Ar trebui parsat ca si:
f(x) = x + 2 + (3 * 4)
si nu ca:
f(x) = x + (2 + 3) * 4

Mai precis ... cum arata gramatica ta ?

Dar pentru ce trebuie chestia asta...eu nu vreau decat un exemplu de interfata grafica...cat mai simpla...api poate o sa o mai dezvolt eu...
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby morpheus » 07 May 2010, 21:11

Nu e clar ce vrei sa faci ... pana acum aveam impresia ca vrei sa scrii un cod pentru a parsa expresii.
Dar se pare ca vrei sa afli cum se deseneaza graficul unei functii in Java.
In cazul in care folosesti SWING, poti utiliza Graphics2D pentru a "desena" pe o componenta. Vezi aici o discutie:
http://www.coderanch.com/t/407529//java ... n-equation

Un tutorial despre grafica 2D in SWING gasesti aici:
http://zetcode.com/tutorials/java2dtutorial/
0,0p / 0 votes
Curiosity killed the cat
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: Salut

Postby hanielamaria » 07 May 2010, 21:47

morpheus wrote:Nu e clar ce vrei sa faci ... pana acum aveam impresia ca vrei sa scrii un cod pentru a parsa expresii.
Dar se pare ca vrei sa afli cum se deseneaza graficul unei functii in Java.
In cazul in care folosesti SWING, poti utiliza Graphics2D pentru a "desena" pe o componenta. Vezi aici o discutie:
http://www.coderanch.com/t/407529//java ... n-equation

Un tutorial despre grafica 2D in SWING gasesti aici:
http://zetcode.com/tutorials/java2dtutorial/


Iti multumesc pentru link-urile postate...ai dreptate eu vreau sa aflu cum se deseneaza graficul unei functii...dar interfata grafica sa si calculeze functii...
daca mi-ai mai da link-uri cu exemple de acest gen...mi-ar fii de mare folos...Multumesc!
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby morpheus » 07 May 2010, 22:58

Sa o luam pas cu pas.
Sa luam, de exemplu, o functie:
f(x) = sin(x) + 3 + 2 * cos(x)
Vrem sa afisam graficul acestei functii.

Bineinteles, dorim ca programul nostru sa mearga si pentru alte functii.

Pentru a putea face asta, trebuie sa spargem cerinta in mai multe bucati.

A. Pentru a afisa graficul unei functii, trebuie intai sa putem calcula valoarea functiei pentru un anumit x.
Pentru aceasta, trebuie sa parsam expresia sin(x) + 3 + 2 * cos(x)
Inainte sa facem chestia asta, hai sa luam in considerare o problema mai simpla. Sa parsam o expresie precum:
2 + 3 * 4 + 6 / 2
In primul rand, trebuie sa luam in calcul prioritatea operatorilor, cum spuneam inainte.
O modalitate clasica prin care se poate face evaluarea expresiei este folosind Reverse Polish Notation (RPN).
Vezi aici mai multe:
http://www.arstdesign.com/articles/expr ... ation.html
Despre Operator precedence parsing (folosind o tehnica shift-reduce simpla), vezi aici:
http://epaperpress.com/oper/index.html

Poti folosi si arbori (expression trees). In esenta, parcurgerea unui astfel de arbore in postordine duce la obtinerea expresiei in forma postfixata. De asemenea, avand arborele putem sa evaluam foarte usor expresia.
Pentru a vedea cum se transforma din forma infix in forma postfixata vezi aici:
http://userweb.cs.utexas.edu/users/lave ... ure-24.pdf
Ca sa vezi cum se obtine un arbore pentru parsarea de expresii si cum se foloseste acel arbore pentru evaluarea expresiei, vezi tot acolo.

Bun, dupa ce ai reusit sa evaluezi expresii simple, trecem la situatia in care un termen al expresiei este un apel de functie. In esenta, pe exemplul anterior, tu trebuie sa fii capabila sa recunosti faptul ca string-ul sin(x) se refera la functia sin din pachetul Math. Poti folosi o structura asociativa (ex HashMap) care sa mapeze string-ul respectiv la un obiect care face efectiv calculul. Bineinteles, trebuie sa modifici codul ca sa recunoasca termeni care sunt apeluri de functii (ex. sin(x)) sau sunt variabile (ex. x)

B. Dupa ce ai rezolvat punctul A, te apuci si implementezi o interfata care sa afiseze graficul functiei, deoarece esti capabila sa evaluezi expresia pentru un anumit x.
0,0p / 0 votes
Curiosity killed the cat
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: Salut

Postby emi » 07 May 2010, 23:47

Cred ca vrei ceva de genul asta: link

O sa ai de munca la recunoasterea expresiilor, calculul derivatelor, ...
Deocamdata eu zic sa faci un program care e in stare sa mearga doar pentru f(x) = sin(x); si sa afiseze graficul functiei.
0,0p / 0 votes
User avatar
emi
Byte
 
Joined: 10 Apr 2010
Status: 18

Re: Salut

Postby hanielamaria » 07 May 2010, 23:54

emi wrote:Cred ca vrei ceva de genul asta: link

O sa ai de munca la recunoasterea expresiilor, calculul derivatelor, ...
Deocamdata eu zic sa faci un program care e in stare sa mearga doar pentru f(x) = sin(x); si sa afiseze graficul functiei.


Da am gasit si eu sit-ul asta...faza nasoala e ca nu stiu sa fac interfata grafica...tot caut pe google interfete grafice cu astfel de functii dar nu gasesc...:(
0,0p / 0 votes
User avatar
hanielamaria
Bit
 
Joined: 07 May 2010
Status: 0

Re: Salut

Postby DarkByte » 08 May 2010, 01:06

Interfata grafica necesita niste lucruri de baza, dupa modelul urmator:

  • Parsarea expresiei, dupa cum ti-a explicat morpheus
  • Calculezi valoarea expresiei pentru un anumit x ... sa zicem, -2. Pentru -2, f(x) va avea o anumita valoare, sa zicem 3. Punctul (-2, 3) va fi primul punct din grafic. Calculezi apoi, sa zicem f(-1.9) si acesta va fi al doilea punct al graficului. Trasezi o linie din primul punct pana in al doilea. Pe acelasi principiu, calculezi al treilea punct ... tragi o linie din punctul al doilea pana in punctul al treilea ... and so on ...

O "reprezentare" a ceea ce ti-am explicat mai sus ar fi in felul urmator (desenul e facut cam de mana, deci nu ma astept sa fie perfect :P):

Image
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 136

Next

Return to Bine ai venit !

Who is online

Users browsing this forum: No registered users and 0 guests