Symbolske beregninger i Matlab

Fra Matematikk.net
Hopp til: navigasjon, søk
Innføring i Matlab

Introduksjon
Matlab som kalkulator
Symbolske beregninger
Variabler i Matlab
Vektorregning
Matriser
Plotting av grafer
3d Plotting
Programmering

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