Bài toán tìm PT đường thẳng qua 2 điểm cho trước

Em giải quyết bài toán theo cách giải hệ phương trình 2 ẩn nhưng khi tính hệ số a thì nó ra ngược @@

VD : x=3 y=2 x1=5 y1=-1 thì máy casio tính được a là âm nhưng thuật toán của em lại ra a dương
Ai có thể giải thích được không ??

1 Like

Dùng vector chỉ phương:
A(x1,y1), B(x2,y2)
uAB=(x2-x1,y2-y1)=(a,b)
=> vector pháp tuyến (b,-a)
Pt đường thẳng b(x-x1) -a(y-y1)=0
thay vào: (y2-y1)(x-x1) -(x2-x1)(y-y1)=0 khi a2+b2 !=0

Như bài toán giải hệ pt 2 ẩn thôi mà :smiley:

thì em giải theo hệ 2 ẩn đấy anh :smiley: mà nó ra a bị ngược dấu

em giải hệ 2 pt để tìm ra a,b luôn anh :smiley: code để giải hệ pt 2 ẩn thì e code được và test ok rồi nhưng không hiểu sao khi áp dụng vào đây thì hệ số a lại bị trái dấu

Cái này là hệ 3 ẩn a,b,c: ax+by+c=0 trong DK đặc biệt a!=0 hoăc b!=0 thì mới quy về 2 ẳn và giải. Trong khi code chưa xét TH đó? Giải = pp hình học nhanh hơn chứ?

phương trình đường thẳng có dạng tổng quát là y=ax+b anh ơi :smiley:

đề bảo qua 2 điểm có hoành độ, tung độ cho trước rồi thì mình thế vào giải hệ dùng phương pháp crame là ra mà anh :smiley:

thật ra khi học Đại học sẽ là ax + by + c nhé :v:

vâng nhưng đề hắn cho trước dạng là y=ax+b thôi anh ^^ nên em bỏ qua không xét nhiều TH

bạn Golden Jet nên quan tâm đến trường hợp tổng quát là ax+by+c=0;
giả sử phương trình đường thẳng có dạng y=c (nằm ngang) hoặc x=c (thẳng đứng) thì phương pháp giải hệ phương trình y=ax+b sẽ không áp dụng được !

GỌI phương trình tổng quát là ax+by+c=0;
Đi qua 2 điểm A(xa,ya) và B(xb,yb);

TH1: (xa = xb) và ( ya khác yb)
Suy ra ( a=1 , b=0, c= -xa) ta được pt: x=xa.

TH2: (xa khác xb) và (ya=yb)
Suy ra (a=0, b=1, c=-ya) ta được pt: y=ya.

TH3: (xa khác xb) và (ya khác yb)
Suy ra T=(ya-yb)/(xa-xb) , H=ya-a*xa ta được y=Tx+H
(a = -T, .b= 1, c= -H);

TH4 :(xa=xb) và (ya=yb) -> không thể lập pt chỉ với 1 điểm !

           boolean tim_pt(DIEM diem_a,DIEM diem_b){
  if((diem_a.X == diem_b.X)&&(diem_a.Y != diem_b.Y)){
    A=1;
    B=0;
    C=-diem_a.X;
    return true;
  }
  if((diem_a.Y == diem_b.Y)&&(diem_a.X != diem_b.X)){
    A=0;
    B=1;
    C=-diem_a.Y;
    return true;
  }
  
  if((diem_a.Y != diem_b.Y)&&(diem_a.X != diem_b.X)){
    // y= T*x+H; <=> -T*x +1*y -H=0
    float T=( diem_a.Y-diem_b.Y)/(diem_a.X-diem_b.X);
    float H=diem_a.Y-T*diem_a.X;
    A=(-1)*T;
    B=1;
    C=-(1)*(H);
    
    return true;
    
  }
    
    return false;// trường hợp còn lại

}

cần gì chia trường hợp ghê vậy, đã ax + by = c rồi thì chỉ cần ktra A, B ko trùng nhau là được mà

pt đường thẳng ax+by=c qua 2 điểm hồi học phổ thông có mà, hình như là
(yB - yA)x + (xA - xB)y = xAyB - xByA

thế A(xA, yA) và B(xB, yB) vô pt trên ra 0 hết => pt đường thẳng qua A, B. Tính 3 hệ số a, b, c dễ dàng. Ai cho 2 điểm trùng nhau thì a=b=c=0.

1 Like

hehe , cho pà con hễ nắm bắt ý mà. tnt
Bạn có cách nào tốt hơn thì chia sẻ nhé .

toán 10 là có rồi bác à

Da=y-y1 bạn ạ!..

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?