Sunteți pe pagina 1din 7

Curs 3a.

Rezolvarea ecuat iilor

Specicarea ecuat iilor si a sistemelor de ecuat ii

O ecuat ie este o expresie relat ional a, av and ca operator principal operatorul de egalitate, si care pentru unele valori ale variabilelor (necunoscutelor) este adev arat a iar pentru altele este fals a. Forma general a a unei ecuat ii n Mathematica este: ms == md unde ms (membrul st ang) si md (membrul drept) sunt expresii n care intervine simbolul necunoscutei ( n cazul ecuat iilor algebrice) sau derivate ale funct iei necunoscute ( n cazul ecuat iilor diferent iale). Exemple: 1. In[]:=ec=x^2-3x+2==0 Out[]=x2 3x + 2 == 0 In[]:=ec/.x->1 Out[]=T rue In[]:=ec/.x >3 Out[]=F alse 2. In[]:= ecdif1=y[x]+y[x]==2 3. In[]:= ecdif2=D[y[x],{x,3}]-y[x]==1 (* specicare ecuat ie cu numele ec *) (* vericare dac a 1 este solut ie (* r aspuns armativ (* vericare dac a 3 este solut ie (* r aspuns negativ *) *) *) *)

(* ecuat ie diferent ial a de ordin 1 *) (* ecuat ie diferent ial a de ordin 3 *)

Un sistem de ecuat ii poate specicat n una dintre formele: ca list a de ecuat ii: {ec 1,..., ec n} ca egalitate a dou a liste cu acela si num ar de elemente: {ms 1,..., ms n}=={md 1,..., md n} ca expresie relat ional a compus a: ec 1 && ...&& ec n Exemple: 1. Sistemul de ecuat ii algebrice: ax + by = c dx + ey = f se poate descrie prin sistem={a x+b y==c,d x+e y==f} sau prin sistem=(a x+b y==c) && (d x+e y==f). 1

2. Sistemul de ecuat ii diferent iale: x (t) = ax(t) + by (t) y (t) = cx(t) + dy (t) se poate descrie prin sisdif={x[t]==a x[t]+b y[t], y[t]==c x[t]+d y[t]}. 3. Problema cu condit ie init ial a: y (x) + 4y (x) + 4y (x) = 0 y (0) = 0 y (0) = 1/2 se poate descrie prin: {y[x]+4y[x]+4y[x]==0, y[0]==0, y[0]==-1/2}. Observat ie. Sistemele liniare pot descrise si n modul urm ator: A.x==b, unde A este matricea sistemului, b este vectorul termenilor liberi, iar x este vectorul necunoscutelor.

Ecuat ii algebrice

Mathematica permite rezolvarea de ecuat iilor si sistemelor de ecuat ii polinomiale si transcendente, furniz and e solut ii exacte e solut ii aproximative. In rezolvarea ecuat iilor sunt folosite e metode exacte e metode aproximative.

2.1

Rezolvare prin metode exacte

Mathematica poate rezolva analitic orice ecuat ie polinomial a de grad mai mic dec at 5 precum si ecuat ii n care intervin funct ii inversabile. Pot obt inute valori exacte ale solut iilor (prin funct ia Solve) sau valori aproximative (prin funct ia NSolve). Rezolvarea simbolic a a unei ecuat ii n raport cu necunoscuta x se face prin: Solve[ecuatie,x] Rezultatul furnizat de Solve este o list a cu reguli de transformare pentru x corespunz atoare tuturor r ad acinilor. Pentru a obt ine lista r ad acinilor trebuie aplicate aceste reguli de transformare (de exemplu dac a obiectul returnat de Solve este ret inut n variabila solutie, atunci extragerea valorilor propriu-zise ale r ad acinilor se face prin: x/.solutie). Exemple: 1. In[]:= Solve[x^2-2x-7==0,x] Sqrt[2] Out[]= {{x > 2+42 }, {x > In[]:=N[x/.%] Out[]={1.82843, 3.82843} (* rezolvare exacta *)
24Sqrt[2] }} 2

(* lista valorilor aproximative *)

2. In[]:= ec=x^3-6x^2+11x-6==0; In[]:=sol=Solve[ec,x] Out[]={{x > 1}, {x > 2}, {x > 3}} In[]:=ec/.sol Out[]={T rue, T rue, T rue} 2

(* retinerea rezultatului in sol *) (* vericarea rezultatului *)

3. In[]:= Solve[Sin[x]]==a,x] Out[]={{x > ArcSin[a]}} 4. In[]:=Solve[f[x^2]==a,x] Out[]={{x > Sqrt[f 1 [a]]}, {x > Sqrt[f 1 [a]]}} Pentru rezolvarea sistemelor de ecuat ii se folose ste varianta: Solve[sistem,{x,y,...}] unde x,y, ... sunt simbolurile asociate necunoscutelor. Uneori Solve returneaz a rezultatele prin intermediul unui obiect special (numit Root). Pentru a obt ine aproxim ari numerice ale solut iilor trebuie aplicat a funct ia N. Pentru sistemele pentru care nu pot furnizate explicit toate solut iile exist a posibilitatea simplic arii lor prin eliminarea unor necunoscute sau obt inerea unui set de ecuat ii simplicate care includ toate solut iile posibile. Astfel de prelucr ari pot f acute cu ajutorul funct iilor Roots, Reduce si Eliminate. Funct ia Roots[ecuatie,x] rearanjeaz a ecuat ia ntr-o form a echivalent a n care sunt puse n evident a solut iile. Se bazeaz a pe factorizarea expresiei ce intervine n ecuat ie si rezultatul furnizat este o expresie logic a compus a din care pot extrase valorile solut iilor. Funct ia Reduce[ecuatie,x] furnizeaz a solut iile sub forma unor expresii logice analiz and si valorile critice ale parametrilor. Spre deosebire de Solve care returneaz a doar solut iile generale, ignor andu-le pe cele care sunt valide doar pentru valori particulare ale parametrilor, Reduce furnizeaz a setul complet de solut ii. Permite efectuarea de discut ii asupra r ad acinilor. Funct ia Eliminate[{ec1,...,ecn},x] permite eliminarea necunoscutei x din toate ecuat iile sistemului. Exemple: 1. In[]:=Solve[{x^2+y^2==1,x+3y==0},{x,y}] 1 3 3 Out[]={{x > Sqrt [10] , y > Sqrt[10] }, {x > Sqrt[10] , y > 2. In[]:=Roots[5 x^2 + 3x - 2 == 0, x] Out[]:= x == 2/5||x == 1 3. In[]:= Eliminate[{ax+y==0,2x+(1-a)y==1},y] Out[]:= (ax) + a2 x == 1 2x 4. In[]:=Reduce[{x==1,x==a},x] Out[]= a == 1&&x == 1 5. Rezolvarea unui sistem n care necunoscutele sunt variabile indexate. Ecuat iile sunt de forma: 2ai + ai1 = ai+1 cu i = 1, 5. In[]:=sistem = Table[2 a[i] + a[i - 1] == a[i + 1], {i, 1, 5}]; In[]:=ColumnForm[sistem] (* asare pe o singura coloana *) Out[]= a[0] + 2a[1] == a[2] a[1] + 2a[2] == a[3] a[2] + 2a[3] == a[4] a[3] + 2a[4] == a[5] a[4] + 2a[5] == a[6]
1 Sqrt[10] }}

(* expresia lui f nu e cunoscut a *)

In[]:=Solve[sistem, Table[a[i], {i, 5}]] ; In[]:=%/.{a[0]->b,a[6]->c} (* inlocuirea parametrilor cu b si c *) Out[]={{a[1] > 1/70(29b + c), a[2] > 1/35(6b + c), . . .}} C and tot i coecient ii ecuat iei sunt valori numerice se poate solicita obt inerea unor valori aproximative ale r ad acinilor ecuat iei utiliz and funct ia NSolve: NSolve[ecuatie,x] sau NSolve[sistem,{x,y,...}] NSolve permite determinarea tuturor solut iilor si pentru ecuat iile care nu pot rezolvate cu Solve (caz n care solut iile sunt exprimate prin obiectul Root). Exemple: 1. In[]:=NSolve[x^5+x+1==0,x] Out={{x > 0.754878}, {x > 0.5 0.866025I }, {x > 0.5 + 0.866025I } , {x > 0.877439 0.744862I }, {x > 0.877439 + 0.744862I }}. 2. In[]:=ec = x^8 + 3x^4 - 4x^3 + 1 == 0; In[]:=Solve[ec,x] Out={{x > Root[14#13 +3#14 +#18 &, 1]}, {x > Root[14#13 +3#14 +#18 &, 2]}, . . .}} In[]:=NSolve[ec,x] Out={{x > 1.15507 0.968699I }, {x > 1.15507 + 0.968699I }, . . .}

2.2

Rezolvare prin metode aproximative

Pentru ecuat iile sau sistemele de ecuat ii care nu pot rezolvate analitic se folosesc metode numerice iterative pentru determinarea c ate unei solut ii (de exemplu metoda lui Newton sau metoda secantei). In acest caz utilizatorul trebuie s a furnizeze si o valoare pentru aproximat ia init ial a. Funct ia utilizat a n acest caz este FindRoot. Ea poate apelat a n unul dintre modurile: FindRoot[ecuatie,{x,x0}] pentru rezolvarea ecuat iei pornind de la aproximat ia init iala, x0, respectiv FindRoot[sistem,{x,x0},{y,y0},...] pentru rezolvarea sistemului pornind de la aproximat ia nit ial a (x0, y 0, . . .). Observat ie. Mathematica folose ste implicit metoda lui Newton pentru rezolvarea ecuat iilor neliniare. Dac a se dore ste utilizarea metodei secantei (de exemplu, atunci c and nu poate calculat a simbolic derivata funct iei ce intervine n ecuat ie), atunci trebuie specicate dou a valori ca aproximat ii init iale. Num arul maxim de iterat ii poate controlat prin opt iunea MaxIterations->val, valoarea implicit a ind 15. Exemple. 1. In[]:=sol1=FindRoot[3 Cos[x]==Log[x],{x,1}] Out[]={x > 1.44726} In[]:=3 Cos[x]-Log[x]/.sol1 Out[]=4.15834 1013 2. In[]:=sol2=FindRoot[3 Cos[x]==Log[x],{x,1,2}] Out[]={x > 1.44726} In[]:=3 Cos[x]-Log[x]/.sol2 Out[]=4.01623 108 4

(* vericarea solutiei *) (* varianta cu metoda secantei *) (* vericarea solutiei *)

3. Rezolvarea numeric a a unui sistem neliniar: In[]:=sistem = {Sin[x] + y^2 + Log[z] == 7, 3 x + 2^y - z^3 == -1, x + y + z == 5}; In[]:=FindRoot[sistem, {x, 0}, {y, 1}, {z, 1}] Out[]={x > 0.599054, y > 2.39593, z > 2.00501}

3
3.1

Ecuat ii diferent iale


Rezolvare simbolic a

Mathematica permite rezolvarea analitic a a ecuat iilor si sistemelor de ecuat ii diferent iale ordinare liniare sau neliniare prin intermediul funct iei DSolve. Pentru rezolvarea ecuat iilor (pentru care nu se specic a condit ia init ial a) se apeleaz a DSolve n unul dintre urm atoarele moduri: DSolve[ecdif,y[x],x] sau DSolve[ecdif,y,x] In prima variant a DSolve returneaz a reguli de transformare pentru y [x] membrul drept ind sub forma unei expresii. In a doua variant a de apel se returneaz a reguli de transformare pentru y , membrul drept ind sub forma unei funct ii pure. In cazul sistemelor de ecuat ii sau a ecuat iilor pentru care se specic a condit ii init iale (probleme Cauchy) se folose ste DSolve ntr-una dintre variantele: DSolve[sistem,{y1[x],...,yn[x]},x] sau DSolve[sistem,{y1,...,yn},x] diferent ele dintre ele ind acelea si ca n cazul ecuat iilor. Pentru ecuat ii cu derivate part iale se poate apela tot DSolve ntr-una dintre variantele DSolve[ecdifpar,y[x1,...,xn],{x1,...,xn}] sau DSolve[ecdifpar,y,{x1,...,xn}] observat iile specicate mai sus r am an and valabile. Exemple: 1. Rezolvarea unei ecuat ii cu obt inerea solut iei sub forma unei expresii: In[]:=DSolve[y[x]==a*y[x],y[x],x] Out[]={{y [x] > E ax C [1]}} 2. Obt inerea solut iei sub forma unei funct ii pure: In[]:= DSolve[y[x]==a*y[x],y,x] Out[]={{y > E a#1 C [1]&}} 3. Variantele cu rezultatul furnizat ca expresie (y[x]) sau ca funct ie pur a (y) difer a ntre ele prin modul n care poate folosit rezultatul. In[]:=sol1=DSolve[{y[x]==a*y[x],y[0]==1},y[x],x] (* problem a Cauchy *) ax Out[]={{y [x] > E }} In[]:=y[x]/.sol1[[1]]/.x->0 (* valoarea solutiei in 0*) In[]:=sol2=DSolve[{y[x]==a*y[x],y[0]==1},y,x] (*varianta cu functie pura*) Out[]={{y > (E a#1 )&)}} In[]:=y[0]/.sol2[[1]] (* valoarea solutiei in 0*) 4. Permite rezolvarea ecuat iilor liniare cu derivate part iale: In[]:= ecdifpar=D[u[x,t],t]==D[u[x,t],x]; In[]:= DSolve[ecdifpar,u,{x,t}] Out[]= {{u > (C [1][#2 + #1]&)}}

(* denirea ecuatiei *) (* rezolvarea ecuatiei *)

In acest caz solut ia general a este exprimat a prin intermediul unor funct ii notate tot cu C[1], C[2] etc. Observat ii. 1. DSolve poate rezolva orice ecuat ie diferent ial a liniar a cu coecient i constant i precum si ecuat ii cu coecient i variabili de ordin mai mic sau egal cu 2. 2. DSolve poate rezolva orice sistem de ecuat ii diferent iale liniare de ordinul 1 care nu cont ine mai mult de 4 ecuat ii. 3. Constantele ce apar n forma general a a solut iei sunt variabile indexate de forma C[i]. Numele lor poate schimbat prin opt iunea DSolveConstants->simbol. 4. Dac a ecdif este ecuat ia diferent ial a iar sol reprezint a funct ia solut ie (obt inut a ca funct ie f ar a argument) atunci pentru a verica solut ia este sucient s a se scrie ecdif/.sol. In[]:=ecdif=y[t]-y[t]-3y[t]+3 y[t]==0; In[]:=sol=DSolve[ecdif,y,t]; In[]:=ecdif/.sol//Simplify (* aplicare postxata a lui Simplify *) Out[]= {T rue} (* solutia este corecta *) Varianta n care se specic a doar numele funct iei necunoscute nu si argumentul acesteia (ca n exemplul de mai sus) este mai exibil a.

3.2

Rezolvare numeric a

Sisteme de ecuat ii diferent iale ordinare (av and coecient i numerici) care sunt completate cu condit ii init iale pot rezolvate numeric cu funct ia NDSolve. In cazul ecuat iilor NDSolve se apeleaz a astfel NDSolve[pbCauchy,y,{x,xmin,xmax}] iar pentru sisteme de ecuat ii prin: NDSolve[pbCauchy,{y1,y2,...},{x,xmin,xmax}] Observat ie. Metodele numerice folosite de c atre sistem depind de natura problemei ind selectate dintre metodele Adams, Runge-Kutta, Gear. Rezultatul este returnat sub forma unui funct ii sistem numit a InterpolatingFunction care are ca argumente valorile obt inute prin procedura de integrare numeric a si care prin interpolare poate furniza valori ale solut iei. Principalele modalit a ti de utilizare a rezultatelor returnate de NDSolve sunt: Calculul valorii funct iei solut ie pentru un argument dat: y[argument]/.solutie unde y reprezint a funct ia necunoscut a, argument reprezint a valoarea pentru care trebuie calculat a funct ia iar solutie reprezint a solut ia furnizat a de NDSolve. Reprezentarea grac a a solut iei: Plot[Evaluate[y[x]/.solutie]],{x,xmin,xmax}]. Domeniul reprezent arii grace trebuie s a e inclus n domeniul de reprezentare. Exemple: 1. In[]:=solutie=NDSolve[{y[x]==y[x],y[0]==1},y,{x,0,2}] Out[]={{y > InterpolatingF unction[{0., 2.}, <>]}} In[]:=y[1.5]/.solutie (* determinarea valorii solut iei n 0.5 *) Out[]={4.48171} 6

2. NDSolve permite rezolvarea unor ecuat ii cu derivate part iale folosind metoda liniilor (se realizeaz a o discretizare n raport cu unele dintre necunoscute si se ajunge la un sistem de ecuat ii diferent iale ordinare. Consider am un caz particular (unidimensional) al ecuat iei c aldurii completat cu condit ii la limit a si o condit ie init ial a:
2 u(x,t) u(x,t) = x 2 t

u(x, 0) = 6x4 + x2 + 6x u(0, t) = 0 u(1, t) = 1

In[]:= sol=NDSolve[{D[u[x,t],t]==D[u[x,t],x,{x,2}], u[x,0]==-6x^4+x^2+6x, u[0,t]==0,u[1,t]==1},u,{x,0,1},{t,0,0.5}]; In[]:=Plot3D[u[x,t]/.sol[[1]],{x,0,1},{t,0,0.5}] (* reprezentarea suprafetei solutie *)

S-ar putea să vă placă și