> restart: # Einblick in weitere Maple-Pakete: # Lineare Algebra (linalg), Zeichenhilfsmittel (plots), Simplexverfahren(simplex) > with(linalg); # 1) Rechnen mit Matrizen und Vektoren # Beschaffung einer ersten Matrix, die Zeilen bedeuten 5 gehandelte Artikel, # die Spalten die 12 Monate eines Jahres > P:=randmatrix(5,12,entries=rand(20..90)); > P[2,3]; # Preis des Artikels 2 im Monat 3 # Beschaffung einer zweiten Matrix, die Zeilen bedeuten 7 Kunden, # die Spalten die 5 gehandelten Artikel > M:=randmatrix(7,5,entries=rand(30..800)); > M[4,5]; # Vom Kunden 4 monatlich abgenommene Menge des Artikels 5 # Produkt beider Matrizen: > U:=evalm(M&*P); > U[4,3]; # Umsatz mit dem Kunden 4 im Monat 3 # Summation der sieben Zeilen der Matrix U > e_links:=vector(7,1); > umonat:=evalm(e_links&*U); > umonat[12]; # Umsatz mit allen Kunden im Monat 12 # Summation der 12 Spalten der Matrix U > e_rechts:=vector(12,1); > ukunde:=evalm(U&*e_rechts); > ukunde[7]; # Jahresumsatz mit dem Kunden 7 # Summe aller Elemente der Matrix U > evalm(e_links&*ukunde); # Jahresumsatz > evalm(e_rechts&*umonat); # Kontrolle # # 2) Loesen grosser linearer Gleichungssysteme > restart: > with(linalg): > A0:=randmatrix(8,8); > A:=map(evalf,A0); > b0:=randvector(8); > b:=map(evalf,b0); # # Zu loesen ist das Gleichungssystem A x = b > x:=linsolve(A,b); > evalm(A&*x-b); # Einsetzprobe # Dasselbe mit solve > u:=vector(8); > evalm(u); > g:=evalm(A&*u-b); # =0 liefert 8 lineare Gleichungen > loes:=solve({seq(g[i]=0,i=1..8)}); > assign(loes); > evalm(x-u); # Vergleich der Ergebnisse beider Vorgehensweisen # # 3) Graphische Untersuchung der Loesbarkeit zweier linearer Gleichungen > restart: > with(plots); # einlesen des Grapkik-Pakets plots > gl1:={26*x-30*y=260,39*x-25*y=650}; > implicitplot(gl1,x=0..30,y=0..20); > loes:=solve(gl1); # genau eine Loesung (siehe Graphik) > gl2:={26*x-26*y=260,39*x-39*y=650}; > implicitplot(gl2,x=0..30,y=0..20); > loes:=solve(gl2); # gar keine Loesung (siehe Graphik) > gl3:={26*x-26*y=260,39*x-39*y=390}; > implicitplot(gl3,x=0..30,y=0..20); > loes:=solve(gl3); # unendlich viele Loesungen (siehe Graphik) # # 4) Operations Research, lineare Programmierung, Simplexverfahren # Problem: Ein Bauer hat 100 ha Ackerland, 1100 Euro Kapital und # 160 Arbeitstage zur Verfuegung. Der Anbau von Roggen erfordert # 20 Euro und 4 Arbeitstage je Hektar, der Anbau von Kartoffeln # 10 Euro und einen Arbeitstag je Hektar. Dafuer kann er fuer # den Ertrag eines Hektars Roggen einen Reingewinn von 120 Euro # erwarten, bei Kartoffeln aber nur 40 Euro. # Wie sollte er seine Flaechen bebauen, um groesstmoeglichen Gewinn zu erzielen? # Es bedeuten r(>=0) und k(>=0) die mit Roggen bzw. Kartoffeln # zu bebauende Hektarzahl. > restart: > with(plots): > with(simplex); # einlesen des Pakets simplex > bedingungen:={r>=0,k>=0,r+k<=100,20*r+10*k<=1100,4*r+k<=160}; > p1:=inequal(bedingungen,r=-5..50,k=-5..150,axes=boxed,color=white): > p1; # Das farbige Gebiet erfuellt alle Bedingungen > zielf:=120*r+40*k; # zu optimierende Zielfunktion > optimum:=maximize(zielf,bedingungen); # optimale Hektarzahlen > gewinn:=subs(optimum,zielf); # maximierter Gewinn > p2:=implicitplot({zielf=gewinn},r=-5..50,k=-5..150,color=green): # Man sieht im folgenden Bild: In der Ecke, wo die zum maximal moeglichen Gewinn gehoerige # Zielfunktion (gruen) das zulaessige Gebiet beruehrt, liegt der optimale Punkt (r,k) = (25,60). > plots[display]([p1,p2]);