a410: 解二元一次方程式
'''
二元一次方程组的练习题铺天盖地地涌向同学们,同学们正苦恼于一次次地四则运算、移项、合并同类项等等。
他们知道你很聪明,想请你帮他们编一个解二元一次方程组的程序。
我们假定二元一次方程组的一般格式如下:(a,b,c,d,e,f为常数,x,y为未知数)
ax+by=c
dx+ey=f
程序读入a,b,c,d,e,f后,输出解。
当然,方程组也有可能存在无解或有无穷解的情况:如果(x,y)没有相对应的实数对满足方程组则无解;相反,如果(x,y)有多组对应的实数对满足方程组则有无数解。
如果无解,就输出“No answer”;如果有无穷解,就输出“Too many”。
ax+by=c
dx+ey=f
Δ = |a b| = a*e - b*d
|d e|
Δx = |c b| = c*e - b*f
|f e|
Δy = |a c| = a*f - c*d
|d f|
1.
Δ不為0
x = Δx/Δ
y = Δy/Δ ---> 此方程式有一組解
2.
若Δ=0且Δx,Δy也為0,則此二元一次方程式有無限多組解
3.
若Δ=0但Δx,Δy不為0,則此二元一次方程式無解
'''
print ('a410: 解2元1次方程式 ax+by=c , dx+ey=f')
while True:
try:
a, b, c, d, e, f = map(int, input('請輸入6個整数,a,b,c,d,e,f --> ').split(' ')) # 將輸入的六個數字分配給 a、b、c、d、e、f 變數
delta= a*e-d*b
delta_x = (c*e-f*b)
delta_y = a*f-d*c
print( delta , delta_x , delta_y)
if (delta != 0): # 如果分母不為 0
x =str( round (delta_x / delta ,2 ) )# 根據公式算出 x
y =str( round (delta_y / delta ,2 ) )# 根據公式算出 y
print('此方程式有一組解')
print('x=', x)
print('y=', y)
else: # 如果分母為 0
if (delta_x == 0 ) and (delta_y == 0) :
print('Too many') # 如果分子為 0,則有無窮解 ( x 和 y 可以是任意數 )
else:
print('No answer') # 分子不為零則無解
except:
break
>>> %Run a410.py
a410: 解2元1次方程式 ax+by=c , dx+ey=f
請輸入6個整数,a,b,c,d,e,f --> 1 1 2 1 -1 0
-2 -2 -2
此方程式有一組解
x= 1.0
y= 1.0
請輸入6個整数,a,b,c,d,e,f --> 1 1 2 2 0 0
-2 0 -4
此方程式有一組解
x= -0.0
y= 2.0
請輸入6個整数,a,b,c,d,e,f -->
>>>
沒有留言:
張貼留言