Symbolske beregninger i Matlab
Innføring i Matlab |
---|
Introduksjon |
Matlab ble opprinnelig laget som et program for numeriske beregninger, men har i ettertid fått støtte får symbolske beregninger. Vi skal se på noen anvendelser.
Ligninger
La oss si du skal løse ligningen
<math>3x + 6 = 2x + 9</math>
Vi forteller først Matlab at x er en variabel, med kommandoen syms x. Dette kan tenkes på som en forkortelse for Symbolske verdier: x. Vi løser denne videre med kommandoen solve som tar to parametere: det algebraiske uttrykket vi vil løse og hvilken variabel vi løser det med hensyn på. Her blir det uttrykket angitt over og x. Det algebraiske uttrykket må skrives innenfor apostrofer. Husk at du må skrive 3*x og 2*x, siden det blir feilmelding når man ikke skriver *.
>> syms x >> solve('3*x + 6 = 2*x + 9', x) ans = 3
Denne kommandoen kan brukes til å løse ligninger som er en del vanskeligere også.
<math>\sqrt{x + 3} + \sqrt{x + 5} = 8</math>
>> syms x >> solve('sqrt(x + 3) + sqrt(x + 5) = 8', x) ans = 769/64
Ligninger med flere ukjente
Kommandoen solve brukes flere ganger om man har flere ligninger med flere ukjente. Merk: det finnes en mye enklere måte å gjøre dette på ved å skrive ligningssystemet som en matrise. Mer om dette senere. La oss ta et lignignssystem som eksempel.
<math>3x + 4y = 17</math>
<math>2x + 5y = 16</math>
Husk å fortelle Matlab at både x og y er symbolske verdier. Merk at vi løser den første ligningen med hensyn på x, som angitt, og den andre på hensyn av y, som vi også må angi i kommandoen solve.
>> syms x y >> solve('3*x + 4*y = 17', x) ans = -4/3*y+17/3 >> solve('2*(-4/3*y+17/3) + 5*y = 16',y) ans = 2 >> -4/3*(2)+17/3 ans = 3.0000
Vi fikk y = 2 og x = 3 som vi ser oppfyller ligningen over.
Derivering
Kommandoen for derivering er diff (fra engelske differentiate). Derivering fungerer nesten som solve: man må angi hvilken variabel som deriveres selv om det bare er en variabel i uttrykket, men man trenger ikke apostrofene rundt utrykket.
>> diff(x^3, x) ans = 3*x^2
Matlab takler kjerneregelen og alle de andre derivasjonsreglene.
>> diff(cos(exp(3*x)), x) ans = -3*sin(exp(3*x))*exp(3*x)
<math>(\cos(\text{e}^{3x}))^\prime = -3\sin(\text{e}^{3x})\text{e}^{3x}</math>
Partielle deriverte
Her bruker man kommandoen diff flere ganger, men bare varierer hvilken variabel vi deriverer med hensyn på.
Vi tar som eksempel funksjonen:
<math>f(x,y) = 3x^2 + 2xy + y^2</math>
>> syms x y >> diff(3*x^2 + 2*x*y + y^2, x) ans = 6*x+2*y >> diff(3*x^2 + 2*x*y + y^2, y) ans = 2*x+2*y
<math>\frac{\partial f}{\partial x} = 6x+2y\;</math> og <math>\;\frac{\partial f}{\partial y} = 2x+2y</math>
Integral
Det ubestemte integralet kan også regnes ut i Matlab, og med den innlysende kommandoen int. Som i solve og diff må vi også her spesifisere hvilken variabel vi vil integrere med hensyn på. Matlab ikke skriver ut konstanten C.
<math>\int 2x^3\,dx \;=\; \frac{1}{2}x^4 + C</math>
>> syms x >> int(2*x^3, x) ans = 1/2*x^4