Bine ai venit guest
 
User:
Pass:

[Creare cont]
[Am uitat parola]
iBac = materialul ULTRACOMPLET de pregătire pentru bac la mate. Dacă vrei poţi.
Forum pro-didactica.ro  [Căutare în forum]

[Subiect nou]   [Răspunde]
[1]
Autor Mesaj
BEL11
Grup: membru
Mesaje: 4
04 Jul 2012, 01:20

[Trimite mesaj privat]

Calcul Numeric    [Editează]  [Citează] 

Buna ziua, sunt student la UBBCluj, si am careva dificultati, astazi e ultima zi si deja nu mai stiu cui sa ma adresez. Am cautat cine ma poate ajuta si nu am gasit pe nimeni, nici profa de la laborator nu o poate face.



Am stat de 3 continuu pe toate cartile posibile si totul ce am putut gasi pe net, insa oricum sunt confuz, am si mesaje de la prof care mi-a dat indicii.




FROM:

Radu Trimbitas

TO:

Sergiu Chiriac

Message flagged
Wednesday, June 12, 2012 4:16 PM
Prima problema este o problema teoretica. Ai de gasit o formula de cuadratura gaussiana. Trebuie sa determini nodurile, coeficientii si restul.
Atentie, ponderea nu este una clasica (a nu se confunda cu Gauss-Hermite).

Polinoamele ortogonale se pot calcula cu relatie de recurenta sau cu metoda coeficientilor nedeterminati.

Problema 2 este o problema de interpolare Lagrange. Nodurile au forma x_k=cos(k\pi/n), k=0..n.
Pentru viteza mai buna poti folosi metoda baricentrica la calculul polinomului de interpolare.
Codul tau are urmatoarele greseli - nu folosesti noduri Cebisev, functia pe care o folosesti este modul, nu functia din enunt.

Succes!





FROM:

Radu Trimbitas

TO:

Sergiu Chiriac

Message flagged
Friday, June 15, 2012 12:47 AM
Atentie, nu este nici Laguerre, nici Hermite.
Trebuie sa gasesti polinomul de grad 2 ortogonal in raport cu pnderea respectiva.
Radacinile iti dau nodurile. Coeficientii din grad de exactitate, sau integrand polinoamele fundamentale.




Rog foarte mult, cine are posibilitatea si dorinta sa ma ajute macar la 1 din aceste parti, as fi foarte recunoscator, daca este cineva din cluj, va scot la bere! Ms mult anticipat



---
Student UBBCluj, Ing Info anul I
gauss
Grup: Administrator
Mesaje: 6933
16 Jun 2012, 05:44

[Trimite mesaj privat]


Din pacate, lucrurile nu stau foarte universal cu formulele de cuadratura si cu cele de aproximare prin polinoame Lagrange.

O sa incerc pe rand.
LaTeX-ul este bine venit ca postare mai ales in acest caz.
Problema a fost scrisa in LaTeX de exemplu.
Este un apel la toate facultatile din tara sa lase liber codul LaTeX pentru aceste probleme! Altfel comunicam in cativa ani prin picz.ro .

Va rog sa incercati sa tipariti in LaTeX enunturile pe viitor, ne ajuta.

O sa reformulez prima problema asa cum stiu eu ca stau lucrurile cu formulele de cuadratura.


In momentul de fata avem o problema de matematica scrisa in limbaj universal.
O sa incerc sa o rezolv. Voi folosi computerul, cod sage, soft liber pe care il recomand special in astfel de cazuri,
www.sagemath.org

In primul rand calculez cele patru integrale ce corespund bazei
1, X, XX, XXX
pentru polinoamele de X de grad cel mult trei. Avem:


var('t')
for i in [0..3]:
print "X la puterea %d -> %s" % ( i, integral( t^i * exp(-t^2), (t,0,oo) ) )

Obtinem:
X la puterea 0 -> 1/2*sqrt(pi)
X la puterea 1 -> 1/2
X la puterea 2 -> 1/4*sqrt(pi)
X la puterea 3 -> 1/2


Cautam asadar numerele $a<b;A,B$ pentru care avem:

Desigur ca pun mana din nou pe computer:

var('t,a,b,A,B')
eq = [ None, None, None, None ]
for i in [0..3]:
eq[ i ] = ( A*a^i + B*b^i == integral( t^i * exp(-t^2), (t,0,oo) ) )
print eq[ i ]

Solutii = solve( [ eq[0], eq[1], eq[2], eq[3] ], a,b,A,B, solution_dict=True )

print "Solutii:"
for sol in Solutii:
if sol[ a ] >= sol[ b ]: continue
print sol
print "A =", sol[ A ].n(), ", a =", sol[ a ].n(), "; B =", sol[ B ].n(), ", b =", sol[ b ].n(),
print


Dam de
{A: 1/4*((pi - 4)*sqrt(-11*pi + 2*pi^2 + 16) + (11*pi - 2*pi^2 - 16)*sqrt(pi))/(11*pi - 2*pi^2 - 16), b: ((pi - 4)*sqrt(-11*pi + 2*pi^2 + 16) - (11*pi - 2*pi^2 - 16)*sqrt(pi) + sqrt(-688*pi + 2*pi^6 - 27*pi^5 + 152*pi^4 - 456*pi^3 + 768*pi^2 + 256))/(16*pi + 2*pi^3 + (pi - 4)*sqrt(-11*pi + 2*pi^2 + 16)*sqrt(pi) - 11*pi^2), a: 1/2*(pi - sqrt(-11*pi + 2*pi^2 + 16)*sqrt(pi))/(pi^(3/2) - 2*sqrt(pi)), B: 1/4*(832*pi + 7*pi^6 - 72*pi^5 + 244*pi^4 - 184*pi^3 - 544*pi^2 + sqrt(-11*pi + 2*pi^2 + 16)*(pi^(11/2) - 52*pi^(7/2) + 200*pi^(5/2) - 192*pi^(3/2) - 64*sqrt(pi)))/(6*pi^(11/2) - 65*pi^(9/2) + 256*pi^(7/2) - 400*pi^(5/2) - sqrt(-11*pi + 2*pi^2 + 16)*(144*pi - pi^5 + 3*pi^4 + 24*pi^3 - 120*pi^2) + 80*pi^(3/2) + 256*sqrt(pi))}

A = 0.640529179684378 , a = 0.300193931060839 ; B = 0.245697745768326 , b = 1.25242104533355


De aici, tot cu computerul vedem cat de buna este aproximarea pentru functia radical...


print "Integrala exacta:"
integralaExacta = integral( sqrt(t) * exp(-t^2), (t,0,oo) )
integralaExacta
integralaExacta.n()

integralaPrinCuadratura = sol[ A ] * sqrt( sol[ a ] ) + sol[ B ] * sqrt( sol[ b ] )
integralaPrinCuadratura.n()


sage: print "Integrala exacta:"
Integrala exacta:
sage: integralaExacta = integral( sqrt(t) * exp(-t^2), (t,0,oo) )
sage: integralaExacta
1/2*gamma(3/4)
sage: integralaExacta.n()
0.612708351232589
sage:
sage: integralaPrinCuadratura = sol[ A ] * sqrt( sol[ a ] ) + sol[ B ] * sqrt( sol[ b ] )
sage: integralaPrinCuadratura.n()
0.625909982577996


In fine, macar prima zecimala e aceeasi.


---
df (gauss)
gauss
Grup: Administrator
Mesaje: 6933
16 Jun 2012, 05:50

[Trimite mesaj privat]


Rog a se scrie a doua problema in LaTeX si a se preciza apoi (in scris normal) ce nu este clar la ea. Avem nodurile, trebuie sa interpolam Lagrange cu un polinom de grad mare. Ce pot sa fac pentru a veni in intampinarea solutiei?


---
df (gauss)
BEL11
Grup: membru
Mesaje: 4
22 Jun 2012, 18:43

[Trimite mesaj privat]


y = exp(x)*(sin(8*x)^exp(x));


Deci am cautat pe net, si dupa cum a zis proful, ca e posibila rezolvarea prin baricentrica, deci am gasit acest cod matlab si nu stiu daca e corect:


function nodchebyshevspII(n)

n = 10
k = 0:n-1;
x = cos(pi*k/n);
y = exp(x)*(sin(8*x)^exp(x));
for i = 1:n
pp = poly(x( (1:n) ~= i));
pvals(i, = pp ./ polyval(pp, x(i));
end
Pn = y*pvals;
xi = [-1:0.01:1];
yi = polyval(Pn,xi);
zi = exp(xi);
hi = abs(zi-yi);
subplot(1,2,1); plot(xi,yi,'g',xi,zi,'r--',x,y,'o');
grid;
legend('P_n(x)','f(x)','Chebyshev nodes','Location', 'NorthWest');
subplot(1,2,2); plot(xi,hi,'r');
legend('Interpolation error');

end



---
Student UBBCluj, Ing Info anul I
gauss
Grup: Administrator
Mesaje: 6933
24 Jun 2012, 04:32

[Trimite mesaj privat]


Ma citez din pacate...

[Citat]
Rog a se scrie a doua problema in LaTeX si a se preciza apoi (in scris normal) ce nu este clar la ea. Avem nodurile, trebuie sa interpolam Lagrange cu un polinom de grad mare. Ce pot sa fac pentru a veni in intampinarea solutiei?


In plus, noua functie

y = exp(x)*(sin(8*x)^exp(x));

este o cu totul alta, secanta hiperbolica si modulul au disparut.
care este de exemplu valoarea funcitei de mai sus in -Pi/16, un numar din [ -1, 1 ] ? Cumva:

? f(x) = exp(x)*(sin(8*x)^exp(x))
? f(-Pi/16)
%1 = -0.6961811788161920736188209571 + 0.4365359926946166644043624954*I
? (-1)^( exp(Pi/16) )
%2 = -0.7765811190549728623631445529 - 0.6300172739912184860662195962*I


(mai sus am cod GP/PARI.)

Codul matlab de mai sus nu il inteleg si nu vreau sa il inteleg, deoarece matlab costa bani si nu se afla pe disc.


---
df (gauss)
BEL11
Grup: membru
Mesaje: 4
28 Jun 2012, 18:26

[Trimite mesaj privat]


f(x)=e^{x}*\left | sech*sin(8*x) \right |^{e*{x}}


deci chestia e ca astazi mam intalnit cu proful si iam dat careva intrebari, mia zis ca pot folosi baricentrica pentru a calcula, daca e posibil sa imi trimiti vreo sursa buna cu ceva rezolvari care ar putea sa ma ajute in rezolvarea acestei probleme, ms mult


---
Student UBBCluj, Ing Info anul I
gauss
Grup: Administrator
Mesaje: 6933
29 Jun 2012, 02:10

[Trimite mesaj privat]


[Citat]
f(x)=e^{x}*\left | sech*sin(8*x) \right |^{e*{x}}


deci chestia e ca astazi mam intalnit cu proful si iam dat careva intrebari, mia zis ca pot folosi baricentrica pentru a calcula, daca e posibil sa imi trimiti vreo sursa buna cu ceva rezolvari care ar putea sa ma ajute in rezolvarea acestei probleme, ms mult


No, atunci stiu si io care e miza pe chestie, fenta e ca ciuciu nasparia pe vreun sens al problemei puse, da proful o sai gaseasca unul, daca nu se poate cu Lagrange, se poate poate da cu baricentrica la poleit. Nasol e ca codul nu sempaca ca lumea cu latechuitul, formula latehi ar fi poate (scrisa uman)

\[
f:[-1,1]\to\mathbb{R}\ ,\qquad
f(x) = e^x\; |\; \textrm{sech}(\sin(8x))\; |^{e^x}
\]


sau ca sa dam de chiar aceeasi scriere (cu o paranteza in plus):

\[
f:[-1,1]\to\mathbb{R}\ ,\qquad
f(x) = \exp(x)\; |\; \textrm{sech}(\sin(8x))\; |^{\exp(x)}
\]




Secanta hiperbolica este probabil acea functie sech pomenita in formula.
Aici e un plot al functiei
http://mathworld.wolfram.com/HyperbolicSecant.html
pentru a vedea ca nu mai e nevoie de modul. Cel ce a propus problema a vrut sa fie sigur sau sa introduca jaloane mai bune de paginare folosind stalpi de control.

Ca sa terminam repede cu integrala numerica, de ce nu io cerem direct acestui matlab? Io ias cereo imediat, de ce ne mai incurcam cu cod matlab pentru a inventa alta roata?

Io folosesc alternativ ceva altceva decat matlab (da, nu este injuratura, pentru cei ce nau platit pana acum ceva pe asa ceva) ia iau PARI/GP, cam cativa MB liberi, GP/PARI pentru toata lumea deci, dar pacat ca e pe gratis, pentru a da repede de raspuns:



Rezultatul al doilea a fost rupt ca sa intre pe pagina, unde intre timp intra doua pagini una langa alta.


Celui ce a propus problema ii sugerez data viitoare sa ia punctele in care se afla zilnic la ora 13:30 melcul ce pleaca azi din -1 si parcurge uniform ziua 0.004544 unitati de lungime, noaptea 0.00089721341 unitati de lungime. Nu vad motivul pentru care sa innamolim numele lui Cebasev in aproximare, daca punctele de masa de pranz ale melcului fac un serviciu analog. (In fine, probabil ca sensul innamolirii este unul didactic, in acest mod, studentii trebuie sa stie ca exista si puncte Cebasev de alta spetza.)
Si lucrul acesta cu melcul nul spun la misto.
Atat profesorii cat si mai ales elevii si studentii trebuie sasi puna intrebarea legata de sensul lucrurilor, luarea unui examen nu este destul de motiv in afacere, deoarece dupa o facultate de astfel de motive omul nu ramane decat cu hartiile legate de motive. Iar profesorii de anul I trebuie sa invete oamenii sa programeze, nu sai puna sa caute cioturi de text pe net. Care trebuie apoi rulate in ceva cumparat sau cumparat romaneste. De ce si cu ce sens toate acestea?

Legat de "baricentrica", regret, acest cuvant cheie numi spune nimic. Nici google nu ma ajuta sa gasesc metoda baricentrica de aproximat numeric integrale de functii. Asadar nu pot ajuta mai departe.


In legatura cu numerica si programarea recomand liniile de cod libere din multele programe libere de calculat una sau alta. Calduros recomand sagemath,
de exemplu pe
http://www.sagemath.org/doc/reference/sage/rings/polynomial/polynomial_ring.html
se vede ca polinoamele de interpolare Lagrange sunt "deja acolo".
Codul fiind liber se poate analiza si invata ceva cum trebuie de la profesionisti.

Sper sa fiu inteles cum trebuie, nu vreau sa fac bascalie, dar la un moment dat in viata lucrurile trebuie luate in propriile maini. Ele trebuie intelese si sistematizate. Si la vremea mea profesorii aveau doleante greu de inteles, dar intre timp lucrurile s-au schimbat, profesorii nu mai sunt membrii de partid in prima speta, ei sunt salariati ai statului pusi sa explice, nu sa dicteze.
Daca totusi cei de la catedra trebuie sa se aranjeze cu nivelul general de lasamasatelas, cei ce sunt undeva in masa de lasamasatelas pot cu de la sine putere sa decida daca vor sa mai ramana in masa sau nu. Daca nu, atunci ei scriu cod pe propriile puteri incepand cu nimicul.

Codul este doar o parte a lucrurilor. Ingineria se va schimba dramatic in urmatorii ani. (Acolo unde e vorba de o meserie cu care sa se poata intretine o familie.) Ajunge sa ne uitam la senzorii din micile aparate de copiat la teze. Ei bine, acesti senzori livreaza date de intrare pentru un soft cu cap si coada. Cei ce pot scrie astfel de cod (sau altfel de cod) sunt cei ce au viata asigurata. (Nu este vorba de viata la film si la o bere, dupa programul de telefonat liber, ci o viata grea de munca cu colegi pe care se poate pune baza. Ajunge sa ne uitam in jur...)

Ma termin aici fara a fi rezolvat vreo problema.


---
df (gauss)
enescu
Grup: moderator
Mesaje: 3403
29 Jun 2012, 02:46

[Trimite mesaj privat]



BEL11
Grup: membru
Mesaje: 4
03 Jul 2012, 06:15

[Trimite mesaj privat]




Ce zici? pare a fi corect. Ms mult.


---
Student UBBCluj, Ing Info anul I
gauss
Grup: Administrator
Mesaje: 6933
04 Jul 2012, 01:20

[Trimite mesaj privat]


Cred ca functia nu este cea buna.
Ea are cateva "oscilatii", altfel o alta aproximare ar fi (in sensul ochiului numeric) de preferat.

Functia din enuntul original din poza are ceva de-a face cu
sech
Functia sech este foarte probabil "secanta hiperbolica".
Formula pentru sech este deci

sech( x )
= 1 / cosh( x )
= 2 / ( exp(x) + exp(-x) )

Formula pentru toata functia este:

f(x)
= exp(x) * (cosh(sin(8*x))) ^ ( exp(x) ) .

Codul matlab este (probabil):
(plasat intr-un file cu numele f.m poate...)

function z=f(x)
z = exp(x) * (cosh(sin(8.*x))) ^ ( -exp(x) )


sau


function z=f(x)
z = exp(x) * sech(sin(8.*x)) ^ exp(x)




A se vedea poate si:
http://www.mathworks.de/help/techdoc/ref/cosh.html
http://www.mathworks.de/help/techdoc/ref/sech.html




---
df (gauss)
[1]


Legendă:  Access general  Conţine mesaje necitite  47559 membri, 58582 mesaje.
© 2007, 2008, 2009, 2010 Pro-Didactica.ρ