연립일차방정식은 ax+by+c=0, a'x+b'y+c'=0 의 형태이다, 이때 연립일차방정식의 해를 자동으로 구해주는 프로그램을 만들어라.
from math import lcm
from fractions import Fraction as frac #해를 float형이 아닌 분수 꼴로 나타내기 위해서
e1=list(map(int, input().split())) #첫 번째 방정식
e2=list(map(int, input().split())) #두 번째 방정식
A,B,C=e1
a,b,c=e2 #계수들을 따로 뽑음
if (A*b==a*B): #해가 하나가 아닌 경우
if (A*c==a*C): #해가 무수히 많은 경우
print('해가 무수히 많습니다.')
else: #해가 없는 경우
print('해가 없습니다.')
else:
l=lcm(B, b)
f1=int(l/B)
f2=int(l/b)
for i in range(3): #y의 계수를 맞추는 과정(가감법)
e1[i]*=f1
e2[i]*=f2
e3=[]
for j in range(3): #y를 소거하고 x만 남기는 과정
e3.append(e1[j]-e2[j])
x=frac(e3[2], e3[0]) #x의 값
y=(-A*x - C)/B #구한 x의 값을 첫 번째 방정식에 대입하여 y을 구하는 과정
print('x =',x,'y =',y)
2022年02月11日 06:03
import re
s = input() #입력
s = re.sub('x+|y+|=0| ]',',',s) # x+ y+ 또는 =0 문자를 쉼표로 대체
eqs = []
eqs = s.split(',')#쉼표로 끊어서 eqs 리스트에 저장
while '' in eqs:
eqs.remove('') #eqs의 모든 필요없는 값('') 삭제
a = int(eqs[0])
b = int(eqs[1])
c = int(eqs[2])
d = int(eqs[3])
e = int(eqs[4])
f = int(eqs[5])#각각을 문자로 저장
if(a/d==b/e and b/e==c/f): #부정(해가 무수히 많음) 조건
print("부정")
elif(a/d==b/e and b/e != c/f): #불능(해가 없음) 조건
print("불능")
else:#아니다(해가 하나다)
print("x=" + str((d*f-c*e)/(a*e-b*d)))#x값 계산 및 문자로 변환하여 출력
print("y=" + str((a*f-c*d)/(b*d-d*e)))#y값 계산 및 문자로 변환하여 출력
"""
x값 공식 유도
ax + by + c = 0
dx + ey + f = 0 에서
아래 식 양변에 a/d 를 곱해서 변형:
ax + by + c = 0
ax + (ae/d)y+ af/d = 0,
가감법 시행:
(b - ae/d)y = af/d - c, (bd - ae)y = af - cd
-->> y = af-cd/bd-ae
y값 공식도 같은 방법으로 유도 가능
"""
2022年04月02日 10:16
eq_1 = input("첫번째 방정식의 계수를 입력해주세요(ex.x+3y+1=0이면 1,3,1):") #방정식1입력
eq_2 = input("두번째 방정식의 계수를 입력해주세요(ex.x+3y+1=0이면 1,3,1):") #방정식2입력
eq_1_list = eq_1.split(',')
eq_2_list = eq_2.split(',')
x_1 = int(eq_1_list[0]);y_1 = int(eq_1_list[1]);c_1 = int(eq_1_list[2])
x_2 = int(eq_2_list[0]);y_2 = int(eq_2_list[1]);c_2 = int(eq_2_list[2]) #각 방정식의 계수들만 따로 뽑아오기
#해가 특수한 경우
if x_1/x_2 == y_1/y_2 == c_1/c_2:
print("x는 모든실수, y는 모든 실수")
elif x_1/x_2 == y_1/y_2 != c_1/c_2:
print("해가 없다")
#일반적인 경우
else:
p = x_1/x_2 #가감법 사용을 위해 곱해주는 값을 p로 정의
eq_list = [] #가감법 계산 후 계수들을 x,y,상수 위치대로 정리하기 위한 리스트
for i in range(3):
eq_list.append(int(eq_1_list[i])-int(eq_2_list[i])) #가감법 계산 eq_list[0]==0
y = -(int(eq_list[2]))/int(eq_list[1]) #ty+u = 0 의 일차방정식 해 계산
x = (int(c_1)-int(y_1)*y)/int(x_1) #위에서 구한 y값을 대입하여 x계산
print(x,y)
# ax + by + c = 0
# dx + ey + f = 0
from fractions import Fraction as frac
eq1 = list(map(int, input("첫번째 연립방정식의 계수>> ").split()))
eq2 = list(map(int, input("두번째 연립방정식의 계수>> ").split()))
a = eq1[0]
b = eq1[1]
c = eq1[2]
d = eq2[0]
e = eq2[1]
f = eq2[2]
if a/d == b/e and b/e != c/f:
print("해가 없음")
elif a/d == b/e == c/f:
print("x, y는 모든 실수")
else:
g_eq1 = list(map(lambda k: k*d, eq1))
g_eq2 = list(map(lambda k: k*a, eq2))
pm = []
for i in range(0,3):
pm.append(g_eq1[i] - g_eq2[i])
y = frac(-(pm[2]), pm[1])
x = frac(-(b*y)-c, a)
print("x = {0}, y = {1}".format(x, y))
초보라 간단한 문제도 오래 걸리네요 열심히 해보겠습니당
2022年07月09日 19:25
# Codingdojang 273
import numpy as np
equ_1_a,equ_1_b,equ_1_c=input("일차방정식_1을 입력 하시오.(ax+by+c=0):").split()
equ_2_a,equ_2_b,equ_2_c=input("일차방정식_2을 입력 하시오.(a'x+b'y+c'=0):").split()
list_1=[equ_1_a,equ_1_b,equ_1_c]
list_2=[equ_2_a,equ_2_b,equ_2_c]
list_1_int=np.array([int(i) for i in list_1]) # list는 나눗셈 연산이 안돼서 numpy array를 적용 하였습니다.
list_2_int=np.array([int(j) for j in list_2])
list_1_int=list_1_int/list_1_int[0]
list_2_int=list_2_int/list_2_int[0]
new_eq=list_1_int-list_2_int
ans_y=-1*new_eq[2]/new_eq[1]
ans_x=-1*(list_1_int[1]*ans_y+list_1_int[2])
print("X 값:%d,Y 값:%d"%(ans_x,ans_y))
2022年09月06日 14:50
p1 = input("첫번째 연립방정식의 계수를 입력하시오 (ex.x+2y+3 = 0 이면 1,2,3):")
p2 = input("두번째 연립방정식의 계수를 입력하시오 (ex.x+2y+3 = 0 이면 1,2,3):")
p1_list = p1.split(',')
p2_list = p2.split(',')
print(p1_list)
print(p2_list)
if int(p1_list[0]) /int(p2_list[0]) == int(p1_list[1]) / int(p2_list[1]) == int(p1_list[2]) / int(p2_list[2]) :
print('해가 무수히 많습니다')
elif int(p1_list[0]) /int(p2_list[0]) == int(p1_list[1]) / int(p2_list[1]) != int(p1_list[2]) / int(p2_list[2]) :
print('해가 없습니다')
else :
m = int(p2_list[0]) / int(p1_list[0])
y = -(m*int(p1_list[2])-int(p2_list[2])) / (m*int(p1_list[1])-int(p2_list[1]))
x = -(int(p1_list[1])*y+int(p1_list[2]))/ int(p1_list[0])
print(f'X값 : {x:.4f} Y값 : {y:.4f}')
feq = list(map(int,input("Input a,b,c (ax+by+c=0):".split(',')))
seq = list(map(int,input("Input a',b',c' (a'x+b'y+c'=0):".split(',')))
lists_1 = []
x = 0
y = 0
div_1 = feq[0]
div_2 = seq[0]
for i in range(3):
feq[i] = feq[i]/div_1
seq[i] = seq[i]/div_2
for j,k in zip(feq,seq):
lists_1.append(round(float(j-k),2))
if lists_1[2] == 0:
y = 0
else:
y = lists_1[2]*(-1)/lists_1[1]
feq[1] = feq[1] * y
x = (feq[1]*(-1)+feq[2]*(-1))/feq[0]
print("X=",x," ","Y=",y)
import numpy as np
num1 = input("첫번째 연립 방정식의 계수를 입력하세요(예: x + 2y = 3 => 1,2,3): ")
num1_arry = num1.split(",")
num2 = input("두번째 연립 방정식의 계수를 입력하세요(예: x + 2y = 3 => 1,2,3): ")
num2_arry = num2.split(",")
a1 = int(num1_arry[0])
b1 = int(num1_arry[1])
c1 = int(num1_arry[2])
a2 = int(num2_arry[0])
b2 = int(num2_arry[1])
c2 = int(num2_arry[2])
a = np.array([[a1, b1],
[a2, b2]])
b = np.array([c1, c2])
if a1/a2 == b1/b2 and b1/b2 == c1/c2:
print("해가 무수히 많다")
elif a1/a2 == b1/b2 and b1/b2 != c1/c2:
print("해가 없다")
else:
s = np.linalg.solve(a, b)
print("x = " + str(s[0]) + ", y = " + str(s[1]))
풀이 작성