Форум сайта python.su
0
Здравствуйте
Помогите справиться с проблемой.
Вообщем, надо написать код для решения многочленного уровнения
import os
n = input("Vvedite stepen: ")
if (n != int(n))or(n<=0):
print "Error Vveli ne celoe 4islo."
os._exit(1)
print "vvedi argument"
a = []
for i in range(n+1):
a.append(input("x^" + str(n-i) + " kordaja: "))
if a[i] != int(a[i]):
print "vveli ne celoe 4islo."
os._exit(1)
if a[0] == 0:
print "argument ne mozet b6t 0."
os._exit(1)
print "Vvel mnogo4len" + str(a[0]) + "*x^" + str(n),
for i in range (1,len(a)):
print " + " + str(a[i]) + "*x^" + str(n-i)
#poisk x=0
from math import*
x=0.00
nullkohad=0.00
for i in range(a[n],abs(-a[n])):# Вот дальше я уже не умею
print "Vvedi zna4enie argumenta:"
x=input()
lahend=0
for i in range(0,len(a)):
lahend=lahend+(a[i])*(x**(n-i))
print "x="+str(x)+ " on " +str(lahend)
Офлайн
0
Не понятно, в чем ваш вопрос. Ведь все же правильно получилось. -3 и 2 - корни вашего уравнения
Офлайн
0
Возможно это:
import os
def mn():
i = int(raw_input("vvedite stepen' mnogochlena: "))
stepen = []
koef = []
if i != 0 and i > 0:
print 'Ok'
else:
print "Stepen' ne dolzhna but' ravna 0 ili <0"
os._exit(1)
for num in range(i+1):
stepen.append(num)
stepen.reverse()
for val in stepen:
koef.append(float(raw_input("x^"+str(val)+ " :")))
diapazon = float(raw_input("diapazon -d:d (polozhitel'noe chislo): "))
for h in range(-diapazon,diapazon):
k = 0
for j in range(i+1):
k += koef[j]*pow(h,stepen[j])
print h, k
Отредактировано (Ноя. 4, 2010 18:53:01)
Офлайн
0
EvgenyДОЛЖНО получится, но на данный момент программа выдаёт другие результаты, не соответсвующие нужным.
Не понятно, в чем ваш вопрос. Ведь все же правильно получилось. -3 и 2 - корни вашего уравнения
Офлайн
0
пробуйте мой вариант, я его уже подправил
Офлайн
0
RaZveDchiK
Нет, извините, но Питон на этот код никак не реагирует, вроде бы должен чего-то печатать, но ничего нет
А вообще, можно ли сделать так, что начальный код, тоесть
if (n != int(n))or(n<=0):
print "Error Vveli ne celoe 4islo."
os._exit(1)
print "vvedi argument"
a = []
for i in range(n+1):
a.append(input("x^" + str(n-i) + " kordaja: "))
if a[i] != int(a[i]):
print "vveli ne celoe 4islo."
os._exit(1)
if a[0] == 0:
print "argument ne mozet b6t 0."
os._exit(1)
print "Vvel mnogo4len" + str(a[0]) + "*x^" + str(n),
for i in range (1,len(a)):
print " + " + str(a[i]) + "*x^" + str(n-i)
Офлайн
0
>ДОЛЖНО получится, но на данный момент программа выдаёт другие результаты
Во-первых:
Вот чуть-чуть измененный вариант вашей программы:
n = 2
a = (1,1,-6)
for x in range(-6,7,1):
lahend=0
for i in range(0,len(a)):
lahend=lahend+(a[i])*(x**(n-i))
print "x="+str(x)+ " on " +str(lahend)
Офлайн
857
Murderdoll666
Если -6, то он ещё выдаёт с -6 до 6, а если для примера ввести 6, то ничего.
>>> k = 6
>>> r = range(-k, k + 1) if k > 0 else range(k, -k + 1)
>>> list(r)
[-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6]
>>> k = -6
>>> r = range(-k, k + 1) if k > 0 else range(k, -k + 1)
>>> list(r)
[-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6]
>>>
Офлайн
0
Мы на пару с моим однокурсником решили эту проблему, добавили след функцю
a.reverse()
from math import*
lahend=[]
kand=[]
for i in range(-abs(a[0]),abs(-a[0])+1):
kand.append(i)
for i in kand:
muutuja=0
for j in range(len(a)):
muutuja=muutuja+(a[j])*(i**j)
lahend.append(muutuja)
print "x="+str(i)+ " on " +str(muutuja)
a.reverse()
from math import*
lahend=[]
kand=[]
for i in range(-abs(a[0]),abs(-a[0])+1):
for j in a:
kand.append(float(i)/j)
blah=sorted(kand)
for i in blah:
muutuja=0
for j in range(len(a)):
muutuja=muutuja+(a[j])*(i**j)
lahend.append(muutuja)
print " x="+str(i)+ " on " +str(muutuja)
v=[]
print "0:"
for i in range(len(lahend)):
if lahend[i]==0:
print blah[i]
new0=0
if 0 in a:
for i in range(len(a)):
if a[i]==0:
new0=i+1
print new0
lahend=[]
kand=[]
for i in range(-abs(a[new0]),abs(-a[new0])+1):
for j in a[new0:]:
kand.append(float(i)/j)
blah=sorted(kand)
for i in blah:
muutuja=0
for j in range(new0,len(a)):
muutuja=muutuja+(a[j])*(i**j)
vastused.append(muutuja)
print "x="+str(i)+ " on " +str(muutuja)
Отредактировано (Ноя. 7, 2010 00:39:33)
Офлайн
857
Murderdoll666нужно добавлять кандидата в список найденных и в цикле, который выполняется n раз, искать кандидатов, которых нет среди добавленных
Как сделать так, чтоб вслучае 0, программа искала другие варианты возможных кандидатов?
Офлайн