[ Principal | Material | Comb. convexa ]

MAC315 - 2000

Combinação convexa de 3 pontos

# [03/04/2000] Exemplo de comb. convexa
#
# Ojetivo: dados x1, x2, x3 e x, x no casco convexo dos 3 
#          prim. pontos, encontrar os pesos a1, a2 e a3 tq
#          x = a1*x1 + a2*x2 + a3*x3
#          a1+a2+a3=1
#
# Como: tres etapas (completem, so' a primeira esta' feita)
#
# 1. encontrar xl, interseccao da semi-reta de x3 ate' x
#    com o segmento [x1,x2]
# 2. encontrar o lambda tq lambda*x1 + (1-lambda)*x2 = xl
# 3. encontrar os pesos a1, a2 e a3
#
#  ^
#3 +                 x1:=(1,1)
#  |
#2 +           o     x2:=(2,0)  h2:=x1-x2  r2(x):=x2+x h2
#  |
#1 +   o   o         x3:=(3,2)  h3:=x3-x   r3(y):=x3+y h3
#  |
#  +---+---o---+---+---> x :=(2,1)  
#  0   1   2   3
#
# Encontrar a e b: r2(b)=r3(a)
# x3+x*h3 = x2+y*h2 => x3-x2 = y*h2 - x*h3: 

with(linalg):
x1:=vector( [1,1]): x2:=vector( [2,0]): x3:=vector( [3,2]):
x :=vector( [2,1]):
h2:=evalm(x1-x2):   h3:=evalm(x3-x):

A := matrix( [[h2[1], -h3[1]],[h2[2],-h3[2]]] );
b := vector( [x3[1]-x2[1],x3[2]-x2[2]]): 
a:=linsolve(A, b); # esta e' a resposta: a[1]=y, a[2]=x
# xl := x2 + a[1]*h2
evalm(x2 + a[1]*h2);
                                [-1    -1]
                           A := [        ]
                                [ 1    -1]


                           a := [1/2, -3/2]


                              [3/2, 1/2]





Leonidas de Oliveira Brandao
2000-03-21