CTH/GU LABORATION 6 MVE45-5/6 Matematiska vetenskaper Inledning Symboliska beräkningar i Matlab Verktygslådan Symbolic Math Toolbox i Matlab kan utföra symbolisk matematik. Vi skall se på ett antal exempel på symboliska beräkningar. Inget kan ersätta att räkna med penna och papper, men ibland kanman vara hjälpt av att ha möjlighet att låta Matlab eller något liknande programsystem utföra en del kalkyler. Vi börjar med att göra en symbolisk formel för volymen av ett klot med radien r >> syms r >> volym=4/*pi*r^ volym = 4/*pi*r^ Vi kan beräkna volymen för t.ex. r = med subs enligt >> v=subs(volym,r,).97 Symboliska variabeln r i uttrycket volym substitueras med värdet och v räknas ut (numeriskt). Senare skall vi se hur vi kan göra om ett symboliskt uttryck till en function, som ett alternativt sätt att göra samma beräkning. Algebraiska uttryck och ekvationer Vi kan faktorisera, utveckla och förenkla ett uttryck med factor, expand och simplify enligt >> syms a b >> factor(a^+*a*b+b^) (a+b)^ >> expand((a+b)^4) a^4+4*a^*b+6*a^*b^+4*a*b^+b^4 >> expand(sin(a+b)) cos(a)*sin(b) + cos(b)*sin(a)
>> simplify((a^+b^-*a*b)/(a-b)) a - b >> simplify(exp(a+b)/exp(a-b)) exp(*b) Vi kan lösa t.ex. polynomekvationen x 4 x +x = med solve enligt >> s=solve( x^4-x^+*x- ) s = - 5^(/)/ - / 5^(/)/ - / / - (^(/)*sqrt(-))/ (^(/)*sqrt(-))/ + / dvs. vi har lösningarna (rötterna) x, = ± 5 och x,4 = ± i. Vi kan få Matlab att skriva ut lite snyggare (mer lättläst) med pretty(s). Pröva gärna! Numerisk funktion av symboliska formler I exemplet från inledningen gjorde vi en symbolisk formel för volymen av ett klot med radien r enligt >> syms r >> volym=4/*pi*r^ volym = 4/*pi*r^ Vi beräknade volymen för r = med >> v=subs(volym,r,).97 Alternativt kan vi göra en (numerisk) funktion av den symboliska formeln med matlabfunction enligt >> volymfun=matlabfunction(volym) % volymfun=matlabfunction(volym, vars,{ r }) volymfun = @(r)pi.*r.^.*(4../.) Nu kan vi beräkna volymen för t.ex. r = som en helt vanlig funktionsberäkning >> v=volymfun().97 Konstruktionen med matlabfunction gör det möjligt att rita upp symboliska funktioner. För att rita en graf måste man ju ha konkreta siffervärden. Detta kommer vi använda senare i denna laboration.
4 Gränsvärden, derivator och primitiv funktion Vi kan beräkna gränsvärden sin(ax) x x a >> it(sin(a*x)/x,x,) a >> it(tan(x),x,pi/, left ) Inf >> it(x*sin(/x),x,) x π/ tan(x) x x sin( x ) Vi kan derivera en funktion f(x) = tan(+cos(x )) >> f=tan(+cos(x^)); >> Df=diff(f,x) Df = -*(+tan(+cos(x^))^)*sin(x^)*x Vi kan bestämma primitiv funktion 5x 8x+9 dx >> f=5*x^-8*x+9 f = 5*x^-8*x+9 >> F=int(f) F = 5*x^-4*x^+9*x Integrationskonstanten får vi hålla reda på själva. Vi deriverar för att kontrollera svaret >> DF=diff(F) DF = 5*x^-8*x+9
5 Integraler Vi beräknar en bestämd integral >> q=int(x*sin(x),,) q = sin() - cos() xsin(x)dx Uppgift. Beräkna arean A av de områden som omsluts av graferna till funktionerna f(x) = x 8 5x 8 + x x g(x) = 4 5x + Ledning: Definiera funktionerna, både symboliskt och numeriskt (avsnitt ), och rita deras grafer med >> f=x^/8-5*x^/8+x/4- >> g=x^/-5*x/+/ >> fn=matlabfunction(f); >> gn=matlabfunction(g); >> xn=linspace(-,7); >> plot(xn,fn(xn),xn,gn(xn), r-- ) >> axis equal, axis([- 7-4]) 4 4 6 Bestäm sedan skärningspunkterna med solve (avsnitt ) enligt >> s=solve(f-g) s = - 5^(/) 5^(/) + för att sedan beräkna arean med int på lämpligt sätt. Integrationsgränserna plockar ni ur vektorn s, t.ex. s() ger skärningen längst till höger. (Svaret skall bli A = 5 6.) 4
6 Differentialekvationer Vi beräknar lösningar till differentialekvationen { y = y(t)+sin(t)+cos(t), t 4 y() = c >> syms t >> y=dsolve( Dy=-y+sin(t)+cos(t), y()=c ) sin(t) + c/exp(t) och ritar upp lösningarna för några olika värden på c med >> yfun=matlabfunction(y, vars,{ t, c }) yfun = @(t,c)sin(t)+c.*exp(-t) >> T=linspace(,4); >> for c=-:.5: plot(t,yfun(t,c)), hold on end Vi löser andra ordningens differentialekvation 4 y +y + sin(x) >> y=dsolve( Dy+*Dy+y=*sin(x), x ) x*cos(x) - x*(cos(x) - sin(x)) - cos(x) - x*sin(x) + C/exp(x) + (C*x)/exp(x) >> y=simplify(y) C/exp(x) - cos(x) + (C*x)/exp(x) och kontrollerar att lösningen verkligen uppfyller ekvationen med >> r=diff(y,)+*diff(y)+y-*sin(x) r = Uppgift. Rita graferna av lösningen till differentialekvationen y + (x )sin(x) över x+ intervallet x, för några olika värden på konstanten i lösningen. 5