전주중앙중학교 로고이미지

정보

RSS 페이스북 공유하기 트위터 공유하기 카카오톡 공유하기 카카오스토리 공유하기 네이버밴드 공유하기 프린트하기

EBS 온라인 클래스로 운영합니다.

 

https://ebsoc.co.kr/    

2. Two Linear Equations in Two Unkonwns. 1차 연립방정식
작성자 김인수 등록일 25.09.10 조회수 1
첨부파일

 

-------------------------------------------------------------------------------------

import numpy as np

import matplotlib.pyplot as plt

 

plt.rcParams['font.family'] = 'Malgun Gothic'

plt.rcParams['axes.unicode_minus'] = False # 마이너스 기호 깨짐 방지

 

def solve_and_plot(a1, b1, c1, a2, b2, c2):

    """

    a1*x + b1*y = c1

    a2*x + b2*y = c2

    """

    # 계수 행렬과 상수항

    A = np.array([[a1, b1], [a2, b2]])

    B = np.array([c1, c2])

 

    # 해 구하기 (교점)

    try:

        sol = np.linalg.solve(A, B)

        x_sol, y_sol = sol

        print(f"교점: (x, y) = ({x_sol:.2f}, {y_sol:.2f})")

    except np.linalg.LinAlgError:

        print("해가 없거나 무수히 많습니다 (평행하거나 일치).")

        return

 

    # 그래프 그리기

    x_vals = np.linspace(-10, 10, 400)

 

    # 직선1: a1*x + b1*y = c1 → y = (c1 - a1*x)/b1

    if b1 != 0:

        y1_vals = (c1 - a1*x_vals) / b1

        plt.plot(x_vals, y1_vals, label=f"{a1}x + {b1}y = {c1}")

    else:

        plt.axvline(x=c1/a1, color='blue', label=f"{a1}x = {c1}")

 

    # 직선2: a2*x + b2*y = c2 → y = (c2 - a2*x)/b2

    if b2 != 0:

        y2_vals = (c2 - a2*x_vals) / b2

        plt.plot(x_vals, y2_vals, label=f"{a2}x + {b2}y = {c2}")

    else:

        plt.axvline(x=c2/a2, color='red', label=f"{a2}x = {c2}")

 

    # 교점 표시

    plt.scatter(x_sol, y_sol, color='black', zorder=5)

    plt.text(x_sol+0.3, y_sol, f"({x_sol:.2f}, {y_sol:.2f})", fontsize=10)

 

    # 그래프 꾸미기

    plt.axhline(0, color='gray', linewidth=0.5)

    plt.axvline(0, color='gray', linewidth=0.5)

    plt.legend()

    plt.grid(True, linestyle='--', alpha=0.6)

    plt.title("두 직선의 그래프와 교점")

    plt.xlabel("x")

    plt.ylabel("y")

    plt.show()

 

# ============================

# 예시 실행

# 식: 2x + 3y = 13,  x - y = 1

solve_and_plot(2, 3, 13, 1, -1, 1)


--------------------------------------------------------------------------------------

 

 

이전글 전국학생통계포스터대회 준비 프로젝트
다음글 1. Exponents 지수법칙