26、寫一程式能計算二元一次聯立方程式之根,即:輸入資料為A1,A2,A3,B1
,B2,B3六數,輸出資料為X及Y,使
A1*X+A2*Y=A3
B1*X+B2*Y=B3
如無法算出X及Y則輸出"NO SOLUTION",如有多組解;則請輸出使|X|+|Y|為
最小值之任一組解。 (|X|為X之絕對值)
|
範例一
|
範例二
|
範例三
|
輸入
|
1,-1,0
1,2,3
|
1,1,2
2,2,5
|
1,2,-3
2,4,-6
|
輸出
|
X=1, Y=1
|
NO SOLUTION
|
多組解,X=0,Y=-1.5
|
#coding=utf8
print("26、寫一程式能計算二元一次聯立方程式之根,")
print(" 即:輸入資料為A1,A2,A3,B1,B2,B3六數 ")
print(" ,輸出資料為X及Y,使 A1*X+A2*Y=A3 ")
print(" B1*X+B2*Y=B3 ")
print("如無法算出X及Y則輸出 NO SOLUTION, ")
print("如有多組解;則請輸出使|X|+|Y|為最小值之任一組解。")
print("(|X|為X之絕對值)")
print("=================================================")
print("請依序輸入二元一次聯立方程式的係數a1,b1,c1,a2,b2,c2")
a=[0,0,0,0,0,0]
for x in range(0,6): #0 - 5
while True:
a1=int(input("請輸入聯立方程式的係數 < 100:"))
try:
a1 = int(a1)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( a1 < 100):
break
a[x]=a1 #存入List中
print("二元一次聯立方程式")
print(a[0],"X+",a[1],"Y=",a[2])
print(a[3],"X+",a[4],"Y=",a[5])
a1=a[0]
b1=a[1]
c1=a[2]
a2=a[3]
b2=a[4]
c2=a[5]
delta_x1 = c1*b2 - b1*c2
delta_x2 = a1*c2 - c1*a2
delta= a1*b2 - a2*b1
if (delta !=0):
x1= float(delta_x1/delta)
x2= float(delta_x2/delta)
print("X1=","{0:.5f}".format(x1))
print("X2=","{0:.5f}".format(x2))
elif (delta_x1==0 and delta_x2==0):
print("有無窮多組解...")
else:
print("本題無解....")
結果:
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-26.py =================
26、寫一程式能計算二元一次聯立方程式之根,
即:輸入資料為A1,A2,A3,B1,B2,B3六數
,輸出資料為X及Y,使 A1*X+A2*Y=A3
B1*X+B2*Y=B3
如無法算出X及Y則輸出 NO SOLUTION,
如有多組解;則請輸出使|X|+|Y|為最小值之任一組解。
(|X|為X之絕對值)
=================================================
請依序輸入二元一次聯立方程式的係數a1,b1,c1,a2,b2,c2
請輸入聯立方程式的係數 < 100:1
請輸入聯立方程式的係數 < 100:-1
請輸入聯立方程式的係數 < 100:0
請輸入聯立方程式的係數 < 100:1
請輸入聯立方程式的係數 < 100:2
請輸入聯立方程式的係數 < 100:3
二元一次聯立方程式
1 X+ -1 Y= 0
1 X+ 2 Y= 3
X1= 1.00000
X2= 1.00000
>>>
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-26.py =================
26、寫一程式能計算二元一次聯立方程式之根,
即:輸入資料為A1,A2,A3,B1,B2,B3六數
,輸出資料為X及Y,使 A1*X+A2*Y=A3
B1*X+B2*Y=B3
如無法算出X及Y則輸出 NO SOLUTION,
如有多組解;則請輸出使|X|+|Y|為最小值之任一組解。
(|X|為X之絕對值)
=================================================
請依序輸入二元一次聯立方程式的係數a1,b1,c1,a2,b2,c2
請輸入聯立方程式的係數 < 100:1
請輸入聯立方程式的係數 < 100:1
請輸入聯立方程式的係數 < 100:2
請輸入聯立方程式的係數 < 100:2
請輸入聯立方程式的係數 < 100:2
請輸入聯立方程式的係數 < 100:5
二元一次聯立方程式
1 X+ 1 Y= 2
2 X+ 2 Y= 5
本題無解....
>>>
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-26.py =================
26、寫一程式能計算二元一次聯立方程式之根,
即:輸入資料為A1,A2,A3,B1,B2,B3六數
,輸出資料為X及Y,使 A1*X+A2*Y=A3
B1*X+B2*Y=B3
如無法算出X及Y則輸出 NO SOLUTION,
如有多組解;則請輸出使|X|+|Y|為最小值之任一組解。
(|X|為X之絕對值)
=================================================
請依序輸入二元一次聯立方程式的係數a1,b1,c1,a2,b2,c2
請輸入聯立方程式的係數 < 100:1
請輸入聯立方程式的係數 < 100:2
請輸入聯立方程式的係數 < 100:-3
請輸入聯立方程式的係數 < 100:2
請輸入聯立方程式的係數 < 100:4
請輸入聯立方程式的係數 < 100:-6
二元一次聯立方程式
1 X+ 2 Y= -3
2 X+ 4 Y= -6
有無窮多組解...
>>>
沒有留言:
張貼留言