2016-04-06 8 views
-1

Tüm çözümleri bir eşitsizliğe ulaştıran bir denkleme ihtiyacım var. Örneğin: 5x+4y+3z+3a+3b>40. 5 bilinmeyenler x, y, z, a ve b4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5 ve 0.0 alınmalıdır. Örneğin x=4, , z=1, a=1, b=1 bir olasılıktır, ancak daha fazlası vardır. Bilgisayarımı hepsini nasıl bulabilirim?Bilgisayarımı bu hesaplamayı nasıl yapabilirim ve hangi programlama dilini kullanmam gerekir?

+0

Toplam 40'dan fazla not almak için yapmanız gereken en az iş miktarını size söyleyecek bir program yazmaya çalışıyorsunuz gibi geliyor. – Zymus

+0

2.00 gpa istediğimi söyleyebilirim, sonra notlarım xyzab ve kredilerim sırasıyla 5,4,3,3,3, sonra denklem böyle (5x + 4y + 3z + 3a + 3b)/18)> 2.00 sonra 5x + 4y + 3z + 3a + 3b> 36 nasıl Ben xyzab için her olasılıkları buluyorum ????? :( –

cevap

0

Asıl mesele, tüm olasılıkları nasıl aşacağınızı belirlemektir. Çoğu dilde, döngü için beş ile sıkışmış olacaksınız. Python Bunu başarmak için itertools.product kullanmanızı sağlar: bir.5 tarafından

#!/usr/local/bin/python3 

from itertools import product 

for g in product(range(9),repeat=5): 
    if 5*g[0]+4*g[1]+3*g[2]+3*g[3]+3*g[4] > 80: 
     print([x/2 for x in g]) 

yerine 0-4, ben bir tamsayı olmak üzere her şeyi ikiye katlandı. Bazı şeyleri yeniden düşünmek isteyebilirsiniz. ./gpa.py | wc bana 20k’dan fazla çözüm alabileceğini söylüyor. (Ve yalnızca çözüm sayısını bulmanız ve listelememeniz gerekiyorsa, işinizi kolaylaştırabilirsiniz.)

+0

Bunu python'a yazdığımda [0, 1, 3, 4, 4] bir çözümdür, ancak y = 1 ve z = 4 gibi bir a = 4 b = 4 ise, sonuç yanlıştır. > 80 :( –

+0

'[0,1,3,4,4]' 5 * 0 + 4 * 1 + 3 * 3 + 3 * 4 + 3 * 4 = 37 'değeri ile bir çözüm değildir. ve 'z = 3') ve' g = [0,2,6,8,8] 'ye karşılık gelir. – Teepeemm

0

Belirtildiği gibi, bu bir tam sayı programlama problemidir (özel bir doğrusal programlama durumu). Bir web araması çok fazla isabet almalıdır. Genellikle çözülmesi çok zor bir problemdir; tavsiyem GLPK gibi bir paket kullanmaktır. Tamsayı programlama çok yaygındır, bu nedenle bu sorun sınırlı olsa bile, çözülecek zamanı bulmak için zaman ayırmaya değerdir, böylece tamsayı programlama ile karşılaşabileceğiniz diğer problemlere başvurabilirsiniz.

İlgili konular