Ein Simplex

Aufgabe:

Man bestimme die Ungleichungen, die diesen Simplex erzeugen.

(0,10) -> (5,8)
(5,8) -> (9,5)
(9,5) -> (11,0)
Code:


powerdisp:true;
kgv(x,y):=abs(x*y)/gcd(x,y);
g(x,y):=y=k*x+d;
g1:g(0,10);
g2:g(5,8);
g3:g(9,5);
g4:g(11,0);
l1:solve([g1,g2],[k,d]);
l2:solve([g2,g3],[k,d]);
l3:solve([g3,g4],[k,d]);
u1:[-k*kgv(denom(k),denom(d)),kgv(denom(k),denom(d)),d*kgv(denom(k),denom(d))],l1;
u2:[-k*kgv(denom(k),denom(d)),kgv(denom(k),denom(d)),d*kgv(denom(k),denom(d))],l2;
u3:[-k*kgv(denom(k),denom(d)),kgv(denom(k),denom(d)),d*kgv(denom(k),denom(d))],l3;
transpose([u1,u2,u3]);

Verallgemeinerung:
(die letzte Zeile funktioniert in Maxima Online nicht)

kill(all);
powerdisp:true;
kgv(x,y):=abs(x*y)/gcd(x,y);
polygon:[[0,10],[5,8],[9,5],[11,0]];
n:length(polygon);
g(x):=x[2]=k*x[1]+d;
G:map(g,polygon);
System:makelist([G[i],G[i+1]],i,1,n-1);
l(x):=solve(x,[k,d]);
L:map(l,System);
u(x):=ev([-k*kgv(denom(k),denom(d)),kgv(denom(k),denom(d)),d*kgv(denom(k),denom(d))],x);
transpose(map(u,L));

Advertisements