2016年9月8日 星期四

python 程式設計50題測試範例-26


26、寫一程式能計算二元一次聯立方程式之根,即:輸入資料為A1,A2,A3,B1
   ,B2,B3六數,輸出資料為XY,使
        A1*X+A2*Y=A3
        B1*X+B2*Y=B3
    如無法算出XY則輸出"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
有無窮多組解...
>>> 

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...