27.07.2013 Views

Maple: Simplifikation af udtryk og løsning af ligninger

Maple: Simplifikation af udtryk og løsning af ligninger

Maple: Simplifikation af udtryk og løsning af ligninger

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Databehandling 2005<br />

Forelæsning 19, tirsdag 26. april 2005<br />

Oversigt<br />

• Sekvenser, lister <strong>og</strong> mængder<br />

• <strong>Simplifikation</strong> <strong>og</strong> manipulation <strong>af</strong> <strong>udtryk</strong><br />

• Løsning <strong>af</strong> <strong>ligninger</strong><br />

• Løsning <strong>af</strong> differential<strong>ligninger</strong><br />

• Et eksempel fra Matematisk Grundkursus<br />

Databehandling 2005 KVL Side 19-1<br />

Sekvenser<br />

N<strong>og</strong>le <strong>af</strong> <strong>Maple</strong>s funktioner giver svar i form <strong>af</strong> en sekvens <strong>af</strong> <strong>udtryk</strong>.<br />

En sekvens er simpelt hen en række <strong>udtryk</strong> adskilt <strong>af</strong> kommaer. Man kan selv indtaste sekvenser:<br />

> 10, x, sin(x);<br />

10, x, sin(x)<br />

Man kan binde en sekvens til et navn med en tildeling:<br />

> sekvens:=10, x, sin(x);<br />

sekvens := 10, x, sin(x)<br />

Man kan udtage enkelte elementer eller delsekvenser med indeksoperatoren [ ]:<br />

> sekvens[1]; sekvens[2..3];<br />

10<br />

x, sin(x)<br />

Databehandling 2005 KVL Side 19-2<br />

Lister<br />

Ofte har man brug for at give en liste <strong>af</strong> værdier eller <strong>udtryk</strong> til <strong>Maple</strong>s funktioner.<br />

Somme tider får man <strong>og</strong>så resultater i form <strong>af</strong> lister.<br />

En liste er en sekvens "pakket ind" i kantede parenteser:<br />

> liste1:=[a,b,c,d];<br />

liste1 := [a, b, c, d]<br />

Man kan konvertere en sekvens til en liste simpelt hen ved at komme kantede parenteser om:<br />

> liste2:=[sekvens];<br />

liste2 := [10, x, sin(x)]<br />

Man kan udtage enkelte elementer <strong>og</strong> dellister med indeksoperatoren:<br />

> liste1[2..3]; liste2[2];<br />

[b, c]<br />

x<br />

Databehandling 2005 KVL Side 19-3<br />

Mængder<br />

Man kan <strong>og</strong>så have brug for at give en mængde <strong>af</strong> værdier eller <strong>udtryk</strong> til <strong>Maple</strong>s funktioner eller man kan få<br />

resultater i form <strong>af</strong> mængder.<br />

Man skriver en mængde som en sekvens "pakket ind" i krøllede (mængde) parenteser <strong>og</strong> kan konvertere<br />

sekvenser til mængder på den forventede måde:<br />

> mængde1:={a,b,c,d}; mængde2:={sekvens};<br />

mængde1 := {a, b, c, d}<br />

mængde2 := {10, x, sin(x)}<br />

I modsætning til for lister <strong>og</strong> sekvenser bevares rækkefølgen <strong>af</strong> elementer ikke i en mængde, <strong>og</strong> eventuelle<br />

gentagelser fjernes.<br />

<strong>Maple</strong>s mængdebegreb svarer dermed til de mængder man kender fra matematik.<br />

Det er muligt at tage fællesmængde, foreningsmængde <strong>og</strong> mængdedifferens:<br />

> mængde1 union {d,e,f}; mængde1 intersect {d,e,f};<br />

> mængde1 minus {d,e,f};<br />

{a, b, f, c, e, d}<br />

{d}<br />

{a, b, c}<br />

Databehandling 2005 KVL Side 19-4


<strong>Simplifikation</strong> <strong>af</strong> <strong>udtryk</strong> med simplify<br />

Som nævnt ved sidste forelæsning konverterer <strong>Maple</strong> ikke automatisk indtastede <strong>udtryk</strong> til den simpleste form,<br />

men man kan bruge simplify til at forsimple med:<br />

> exp(a+ln(b*exp(c)));<br />

> simplify(%);<br />

> cos(x)^2+sin(x)^2;<br />

> simplify(%);<br />

> x*(x+4)+x^2+(x+1)*(x-3)+2;<br />

> simplify(%);<br />

e (a+ln(b ec ))<br />

b e (a+c)<br />

cos(x) 2 + sin(x) 2<br />

1<br />

x (x + 4) + x 2 + (x + 1) (x − 3) + 2<br />

3 x 2 + 2 x − 1<br />

Ved første øjekast kan simplify synes som den mest nyttige funktion i <strong>Maple</strong> overhovedet. Men den har sine<br />

begrænsninger.<br />

Det er nemlig ikke veldefineret hvad der er den "simpleste form" <strong>af</strong> ethvert matematisk <strong>udtryk</strong> – den bedste form<br />

<strong>af</strong>hænger <strong>af</strong> hvad man skal bruge <strong>udtryk</strong>ket til.<br />

Databehandling 2005 KVL Side 19-5<br />

Manipulation <strong>af</strong> <strong>udtryk</strong> med expand <strong>og</strong> factor<br />

Funktionen expand ændrer et <strong>udtryk</strong> ved at gange alle parenteser ud (distribuere produkter over summer) <strong>og</strong><br />

derefter samle led <strong>af</strong> samme potenser.<br />

> expand(x*(x+4)+x^2+(x+1)*(x-3)+2);<br />

3 x 2 + 2 x − 1<br />

Den modsatte <strong>af</strong> at ekspandere et <strong>udtryk</strong> er at forsøge at faktorisere det til et produkt <strong>af</strong> polynomier <strong>af</strong> mindst<br />

mulig grad.<br />

Dette gøres med funktionen factor:<br />

> factor(%);<br />

(x + 1)(3 x − 1)<br />

Denne form <strong>af</strong> polynomiet er nyttig for nu kan vi direkte se at rødderne er -1 <strong>og</strong> 1 3 .<br />

Det er muligt at bede expand om at lade visse under<strong>udtryk</strong> forblive uekspanderede:<br />

> expand((a+b)*(c+d)); expand((a+b)*(c+d),a+b);<br />

a c + a d + b c + b d<br />

(a + b) c + (a + b) d<br />

Databehandling 2005 KVL Side 19-6<br />

Mere om expand <strong>og</strong> factor, samt normal<br />

Funktionerne expand <strong>og</strong> factor virker <strong>og</strong>så på rationelle <strong>udtryk</strong>.<br />

> (x+1)*(x-2)/(x-5);<br />

(x + 1) (x − 2)<br />

x − 5<br />

> expand(%);<br />

x2 x<br />

−<br />

x − 5 x − 5<br />

1<br />

− 2<br />

x − 5<br />

Med funktionen normal kan man bringe et rationelt <strong>udtryk</strong> på faktoriseret normal form, d.v.s. som en brøk hvor<br />

tæller <strong>og</strong> nævner er polynomier der ikke går op i hinanden.<br />

> normal(%);<br />

x 2 − x − 2<br />

x − 5<br />

Endelig kan man bruge factor for at faktorisere tæller <strong>og</strong> nævner igen:<br />

> factor(%);<br />

(x + 1) (x − 2)<br />

x − 5<br />

Databehandling 2005 KVL Side 19-7<br />

Manipulation <strong>af</strong> <strong>udtryk</strong> med expand <strong>og</strong> combine<br />

Med expand kan man <strong>og</strong>så ekspandere en lang række <strong>udtryk</strong> der indeholder specielle funktioner.<br />

> expand(cos(x+y));<br />

cos(x) cos(y) − sin(x) sin(y)<br />

Her kan man ikke bruge factor for at gå den anden vej, men ofte kan man bruge funktionen combine:<br />

> combine(%);<br />

> expand(exp(a+b));<br />

> combine(%);<br />

> expand(Int(x+1,x));<br />

> combine(%);<br />

> expand(exp(sin(a+b)));<br />

> combine(%);<br />

<br />

cos(x + y)<br />

e a e b<br />

e (a+b)<br />

<br />

x dx + 1 dx<br />

<br />

x + 1 dx<br />

e (sin(a) cos(b)) e (cos(a) sin(b))<br />

e sin(a+b)<br />

Databehandling 2005 KVL Side 19-8


Manipulation <strong>af</strong> polynomier med collect<br />

I polynomier i flere variable kan man samle koefficienterne for bestemte variable med funktionen collect.<br />

> poly:=x^2+5*x+2*x*y+y+y*z+3*x*z;<br />

> collect(poly,x);<br />

> collect(poly,y);<br />

poly := x 2 + 5 x + 2 x y + y + y z + 3 x z<br />

x 2 + (5 + 2 y + 3 z) x + y z + y<br />

(2 x + 1 + z) y + x 2 + 5 x + 3 x z<br />

Vi kan <strong>og</strong>så bede om at få samlet koefficienterne først for x <strong>og</strong> dernæst for y:<br />

> collect(poly,[x,y]);<br />

x 2 + (5 + 2 y + 3 z) x + (z + 1) y<br />

Endelig kan vi bede om at få koefficienter samlet på produkter <strong>af</strong> visse variable frem for først for én variabel <strong>og</strong><br />

dernæst for den næste variabel:<br />

> collect(poly,[x,y],distributed);<br />

x 2 + 2 x y + (z + 1) y + (5 + 3 z) x<br />

Databehandling 2005 KVL Side 19-9<br />

Sortering <strong>af</strong> polynomier med sort<br />

<strong>Maple</strong> sorterer ikke nødvendigvis leddene i et polynomium efter faldende potenser <strong>af</strong> de variable som man<br />

sædvanligvis gør.<br />

Faktisk lader <strong>Maple</strong> et polynomium stå som man indtaster det:<br />

> poly:=2*x+x^3-2+6*x^2;<br />

poly := 2 x + x 3 − 2 + 6 x 2<br />

Med funktionen sort kan man få sorteret efter potenser:<br />

> sort(poly);<br />

x 3 + 6 x 2 + 2 x − 2<br />

Sortering er “destruktiv” <strong>og</strong> ændrer det oprindelige polynomium.<br />

> poly;<br />

x 3 + 6 x 2 + 2 x − 2<br />

Faktisk kan <strong>Maple</strong> huske hvilke polynomier der er set før så selv om man taster den oprindelige form ind igen får<br />

man den sorterede form:<br />

> 2*x+x^3-2+6*x^2;<br />

x 3 + 6 x 2 + 2 x − 2<br />

Der skal en restart kommando til for at få <strong>Maple</strong> til at glemme sorteringen <strong>af</strong> et polynomium.<br />

Databehandling 2005 KVL Side 19-10<br />

Mere om sort<br />

For polynomier i flere variable kan man angive hvilke variable der skal sorteres efter:<br />

> a*x+b*y^2+c*x^2*y+5+y;<br />

> sort(%,[x,y]);<br />

> sort(%,[y,x]);<br />

> sort(%,[x]);<br />

a x + b y 2 + c x 2 y + 5 + y<br />

c x 2 y + b y 2 + a x + y + 5<br />

c y x 2 + b y 2 + y + a x + 5<br />

c y x 2 + a x + b y 2 + y + 5<br />

Databehandling 2005 KVL Side 19-11<br />

Løsning <strong>af</strong> <strong>ligninger</strong><br />

En ligning er blot et <strong>udtryk</strong> der indeholder et lighedstegn.<br />

> lign:=a*x+b=0;<br />

lign := a x + b = 0<br />

<strong>Maple</strong> kan løse <strong>ligninger</strong> algebraisk med funktionen solve. Man angiver en ligning <strong>og</strong> den ukendte man ønsker<br />

at finde.<br />

> solve(lign,x);<br />

Ved at angive den ukendte "pakket ind" i en mængde får man <strong>løsning</strong>en på en alternativ form:<br />

> solve(lign,{x});<br />

− b<br />

a<br />

{x = − b<br />

a }<br />

Denne form for <strong>løsning</strong> er praktisk fordi man kan anvende den direkte i eval til at kontrollere <strong>løsning</strong>en:<br />

> eval(lign,%);<br />

0 = 0<br />

Databehandling 2005 KVL Side 19-12


Løsning <strong>af</strong> <strong>ligninger</strong> fortsat<br />

Hvis en ligning er et polynomuim <strong>og</strong> har flere <strong>løsning</strong>er giver solve resultatet som en sekvens <strong>af</strong> <strong>løsning</strong>er:<br />

> lign:=x^2-13*x+40=0;<br />

> løs:=solve(lign,{x});<br />

lign := x 2 − 13 x + 40 = 0<br />

løs := {x = 5}, {x = 8}<br />

Man må så indeksere sig frem til den enkelte <strong>løsning</strong> hvis man for eksempel ønsker at kontrollere dem med<br />

eval:<br />

> eval(lign,løs[1]), eval(lign,løs[2]);<br />

0 = 0, 0 = 0<br />

Databehandling 2005 KVL Side 19-13<br />

Løsning <strong>af</strong> ligningssystemer<br />

Med solve kan man <strong>og</strong>så løse ligningssystemer.<br />

Man angiver systemet som en mængde <strong>af</strong> <strong>ligninger</strong>:<br />

> lign:={x+y=5,x-y=1};<br />

lign := {x + y = 5, x − y = 1}<br />

> løs:=solve(lign,{x,y});<br />

løs := {y = 2, x = 3}<br />

Man kan igen anvede eval for at kontrollere sin <strong>løsning</strong>:<br />

> eval(lign,løs);<br />

{1 = 1, 5 = 5}<br />

Man kan <strong>og</strong>så nemt anvende eval for at få den enkelte ukendte:<br />

> eval(x,løs);<br />

3<br />

Man kan medtage uligheder i den mængde <strong>af</strong> <strong>ligninger</strong> der skal løses:<br />

> solve({x^2=4,x>0},{x});<br />

{x = 2}<br />

Man kan <strong>og</strong>så løse systemer bestående alene <strong>af</strong> uligheder (se noterne).<br />

Databehandling 2005 KVL Side 19-14<br />

Løsninger med RootOf<br />

N<strong>og</strong>le gange giver solve en del <strong>af</strong> <strong>løsning</strong>smængden som funktionen RootOf anvendt på et <strong>udtryk</strong><br />

indeholdende et automatisk genereret variabelnavn.<br />

RootOf betyder at <strong>løsning</strong>erne til det oprindelige problem er rødder i det angivne <strong>udtryk</strong> (som <strong>Maple</strong> ikke kan<br />

finde rødderne til algebraisk).<br />

Faktisk foretrækker <strong>Maple</strong> <strong>og</strong>så at give <strong>løsning</strong>er til fjerdegrads<strong>ligninger</strong> der ikke har heltals<strong>løsning</strong>er i form <strong>af</strong> en<br />

RootOf-<strong>løsning</strong>.<br />

Dette er fordi <strong>løsning</strong>erne generelt er så komplicerede at de er meget vanskelige at læse.<br />

Tag for eksempel denne fjerdegradsligning:<br />

> lign:=x^4-3*x+5;<br />

> løs:=solve(lign,{x});<br />

lign := x 4 − 3 x + 5<br />

løs := {x = RootOf(_Z 4 − 3 _Z + 5, index = 1)}, {x = RootOf(_Z 4 − 3 _Z + 5, index = 2)},<br />

{x = RootOf(_Z 4 − 3 _Z + 5, index = 3)}, {x = RootOf(_Z 4 − 3 _Z + 5, index = 4)}<br />

Databehandling 2005 KVL Side 19-15<br />

“Udpakning” <strong>af</strong> en RootOf <strong>løsning</strong><br />

Hvis man tager allvalues til en RootOf <strong>løsning</strong> får man den algebraiske løsing, hvis den findes, ellers får<br />

man bare samme RootOf <strong>løsning</strong> igen.<br />

For fjerdegradsligningen fra før er <strong>udtryk</strong>kene så indviklede at der ikke er plads til bare en enkelt <strong>løsning</strong> på denne<br />

transparent.<br />

Man kan med fordel gå direkte til numeriske <strong>løsning</strong>er ved at anvende evalf:<br />

> evalf(løs);<br />

{x = 1.081909857 − .6908765240 I }, {x = 1.081909857 + .6908765240 I },<br />

{x = −1.081909857 + 1.365191381 I }, {x = −1.081909857 − 1.365191381 I }<br />

For visse RootOf <strong>udtryk</strong> (med periodiske funktioner) kan <strong>Maple</strong> gå i en uendelig løkke hvis man beder om en<br />

allvalues <strong>løsning</strong>.<br />

Man kan d<strong>og</strong> altid bruge “stop” knappen til at <strong>af</strong>bryde beregningen.<br />

Databehandling 2005 KVL Side 19-16


solve’s begrænsninger<br />

Når solve ikke kan finde en <strong>løsning</strong> giver den et tomt svar:<br />

> solve({x^2=4,x>10},{x});<br />

N<strong>og</strong>le gange finder solve desværre heller ikke alle <strong>løsning</strong>er, specielt ikke hvis trigonometriske funktioner er<br />

involveret.<br />

Nedenstående ligning har for eksempel seks <strong>løsning</strong>er hvor<strong>af</strong> solve kun finder en enkelt RootOf <strong>løsning</strong>:<br />

> solve(sin(x)+x^2/100=0,{x});<br />

> evalf(%);<br />

{x = RootOf(100 sin(_Z) + _Z 2 , label = _L1046)}<br />

{x = 0.}<br />

Databehandling 2005 KVL Side 19-17<br />

Numerisk <strong>løsning</strong> <strong>af</strong> <strong>ligninger</strong><br />

Når man ikke kan finde <strong>løsning</strong>er algebraisk kan man forsøge sig numerisk.<br />

Funktionen fsolve forsøger numerisk at finde en enkelt <strong>løsning</strong> til en ligning (d<strong>og</strong> alle <strong>løsning</strong>er hvis der er tale<br />

om et polynomium).<br />

> fsolve(sin(x)+x^2/100=0,{x});<br />

{x = 0.}<br />

Som standard leder fsolve kun efter reelle <strong>løsning</strong>er. Hvis man vil have komplekse <strong>løsning</strong>er må man eksplicit<br />

bede om det:<br />

> lign:=2*x^6-9*x^5+4*x^4-18*x^3-8*x+36=0;<br />

lign := 2 x 6 − 9 x 5 + 4 x 4 − 18 x 3 − 8 x + 36 = 0<br />

> fsolve(lign,{x});<br />

{x = 1.080814100}, {x = 4.500000000}<br />

> løs:=fsolve(lign,{x},complex);<br />

løs := {x = −.8052581887 − .8818333295 I }, {x = −.8052581887 + .8818333295 I },<br />

{x = .2648511385 − 1.589036316 I }, {x = .2648511385 + 1.589036316 I },<br />

{x = 1.080814100}, {x = 4.500000000}<br />

Databehandling 2005 KVL Side 19-18<br />

Mere om fsolve<br />

Det er ikke alle numeriske <strong>løsning</strong>er der er lige præcise:<br />

> eval(lign,løs[1]); eval(lign,løs[3]);<br />

0 = 0<br />

.4 10 −7 − .2 10 −7 I = 0<br />

Det samme gør sig gældende med <strong>løsning</strong>er fundet med evalf-ekspansion <strong>af</strong> en RootOf-<strong>løsning</strong>.<br />

Selv om fsolve kun giver en enkelt <strong>løsning</strong> for ikke-polynomier er der flere muligheder for sucessivt at finde<br />

flere <strong>løsning</strong>er; det er beskrevet i noterne.<br />

Databehandling 2005 KVL Side 19-19<br />

Løsning <strong>af</strong> differential<strong>ligninger</strong><br />

En ordinær differentialligning løses med funktionen dsolve.<br />

Hvis man bare giver en ligning uden begyndelsesbetingelser får man den fuldstændige <strong>løsning</strong>:<br />

> lign:={diff(y(t),t,t)+4*y(t)=0};<br />

> dsolve(lign,{y(t)});<br />

<strong>Maple</strong> generere automatisk de nødvendige konstanter.<br />

lign := {( d2<br />

dt 2 y(t)) + 4 y(t) = 0}<br />

y(t) = _C1 sin(2 t) + _C2 cos(2 t)<br />

For at få en partikulær <strong>løsning</strong> kan vi tilføje begyndelsesbetingelser:<br />

> bb:={y(0)=3,D(y)(Pi/2)=10};<br />

bb := {y(0) = 3, D(y)( 1<br />

π) = 10}<br />

2<br />

> løs:=dsolve(lign union bb,{y(t)});<br />

løs := y(t) = −5 sin(2 t) + 3 cos(2 t)<br />

Databehandling 2005 KVL Side 19-20


Kontrol <strong>af</strong> <strong>løsning</strong>en til differentialligningen<br />

Vi kan verificere at den fundne <strong>løsning</strong> opfylder ligningen direkte ved at bruge eval:<br />

> eval(lign,løs);<br />

{0 = 0}<br />

For at kontrollere at begyndelsesbetingelserne er overholdt er vi d<strong>og</strong> nødt til at lave <strong>løsning</strong>en om til en funktion:<br />

> eval(y(t),løs);<br />

> y1:=unapply(%,t);<br />

> eval(bb,y=y1);<br />

Vi kan <strong>og</strong>så kontrollere at y1 opfylder ligningen:<br />

> eval(lign,y=y1);<br />

−5 sin(2 t) + 3 cos(2 t)<br />

y1 := t → −5 sin(2 t) + 3 cos(2 t)<br />

{10 = 10, 3 = 3}<br />

{0 = 0}<br />

Databehandling 2005 KVL Side 19-21<br />

Eksempel<br />

Opgave 5 fra eksamen i Matematisk Grundkursus December 1998:<br />

Givet den lineære 1. ordens differentialligning<br />

dy<br />

dx + (2a − 6)y = 18eax . (L)<br />

hvor a ∈ R er en konstant.<br />

(1) Sæt a = 1 <strong>og</strong> bestem derefter den <strong>løsning</strong> y = ϕ(x) til (L) der er fastlagt ved begyndelsesbetingelsen<br />

ϕ(0) = 7.<br />

(2) Find den værdi <strong>af</strong> a for hvilken (L) tilfredsstilles <strong>af</strong> funktionen y = 2e 5x . Løs derefter, med den fundne værdi<br />

<strong>af</strong> a indsat, ligningen (L) fuldstændigt.<br />

(3) [Vanskeligt spørgsmål.] Løs (L) fuldstændigt for vilkårlig a ∈ R. Løsningen skal angives i form <strong>af</strong> en ligning for<br />

y <strong>udtryk</strong>t ved x <strong>og</strong> a samt en arbitrær konstant c. Det bemærkes, at <strong>løsning</strong>en kan <strong>af</strong>prøves for de værdier <strong>af</strong> a,<br />

der optrædte i (1) <strong>og</strong> (2), men denne <strong>af</strong>prøvning ønskes ikke anført i besvarelsen.<br />

Databehandling 2005 KVL Side 19-22<br />

Løsning <strong>af</strong> (1) i <strong>Maple</strong><br />

> restart;<br />

> lign:=diff(y(x),x)+(2*a-6)*y(x)=18*exp(a*x);<br />

lign := ( d<br />

dx y(x)) + (2 a − 6) y(x) = 18 e(a<br />

x)<br />

> dsolve({eval(lign,a=1),y(0)=7},{y(x)});<br />

Kontrol <strong>af</strong> <strong>løsning</strong>en:<br />

> eval(lign,{a=1,%});<br />

y(x) = −6 ex + 13 e (4 x)<br />

18 e x = 18 e x<br />

Databehandling 2005 KVL Side 19-23<br />

Løsning <strong>af</strong> (2) i <strong>Maple</strong><br />

For at finde den ønskede værdi <strong>af</strong> a er vi nødt til at løse en ligning der skal gælde for alle x. Dette gøres med<br />

solve sammen med den specielle funktion identity (se <strong>Maple</strong> noterne):<br />

> solve(identity(eval(lign,y(x)=2*exp(5*x)),x),a);<br />

Herfra er resten stort set en gentagelse <strong>af</strong> (1) bare uden begyndelsesbetingelse:<br />

> dsolve(eval(lign,a=5),y(x));<br />

Kontrol <strong>af</strong> <strong>løsning</strong>en:<br />

> eval(lign,{a=5,%});<br />

> simplify(%);<br />

5<br />

y(x) = (2 e (9 x) + _C1) e (−4 x)<br />

18 e (−4 x) e (9 x) = 18 e (5 x)<br />

18 e (5 x) = 18 e (5 x)<br />

Databehandling 2005 KVL Side 19-24


Løsning <strong>af</strong> (3) i <strong>Maple</strong><br />

> dsolve(lign,y(x));<br />

Denne <strong>løsning</strong> må kunne skrives pænere:<br />

> expand(%);<br />

> combine(%);<br />

e(−2<br />

(a−3) x+(3 a−6) x)<br />

y(x) = 18 + e<br />

3 a − 6<br />

(−2 (a−3) x) _C1<br />

y(x) =<br />

y(x) =<br />

18 e(a x)<br />

3 a − 6 + (ex ) 6 _C1<br />

(e (a x) ) 2<br />

18 e(a<br />

x)<br />

+ _C1 e(−2<br />

a x+6 x)<br />

3 a − 6<br />

Den fundne <strong>løsning</strong> gælder for alle a ∈ R undtagen a = 2, så vi er nødt til at løse specielt for denne værdi <strong>af</strong> a:<br />

> dsolve(eval(lign,a=2),y(x));<br />

> combine(expand(%));<br />

y(x) = (18 x + _C1) e (2 x)<br />

y(x) = 18 e (2 x) x + e (2 x) _C1<br />

Databehandling 2005 KVL Side 19-25<br />

Sammenfatning<br />

• Man kan forsimple <strong>udtryk</strong> med simplify men kan <strong>og</strong>så med fordel eksperimentere med expand,<br />

factor, combine <strong>og</strong> normal.<br />

• Man kan omforme polynomier med collect <strong>og</strong> sort.<br />

• Man kan løse <strong>ligninger</strong>, ligningssystemer <strong>og</strong> uligheder algebraisk med solve.<br />

• Man kan løse <strong>ligninger</strong> (<strong>og</strong> ligningssystemer) numerisk med fsolve.<br />

• Man kan løse ordinære differential<strong>ligninger</strong> med dsolve.<br />

Læs: <strong>Maple</strong> noter <strong>af</strong>snit 12–16 (denne forelæsning) <strong>og</strong> <strong>af</strong>snit 17–18 (næste forelæsning).<br />

Databehandling 2005 KVL Side 19-26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!