2016-10-08 1 views
-4

я проблема упрощается в следующем:переборе нескольких уравнений

Xn + 1 = Xn + Yn

Yn + 1 = Yn + Zn

Zn + 1 = Zn + Xn

Я знаю, что значения X0, Y0, Z0 равны 1. Я хочу сказать python, чтобы найти значения X1, Y1, Z1, а затем X2, Y2, Z2, ... и т. Д. Может ли кто-нибудь помочь мне в этом? Я думаю, что мне нужно использовать вложенный цикл, но я точно не знаю, как это сделать. Благодаря!

+3

Похоже, что вы хотите нам написать код для вас. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод, трассировка и т. Д.). Чем больше деталей вы предоставляете, тем больше ответов вы получите. Проверьте [FAQ] (http://stackoverflow.com/tour) и [Как спросить] (http://stackoverflow.com/questions/how-to-ask). – TigerhawkT3

+0

http://stackoverflow.com/help/mcve – ospahiu

+0

Пожалуйста, покажите, что вы пробовали до сих пор. С какими проблемами вы сталкиваетесь? Пожалуйста, будьте конкретны. – Ivan

ответ

3

мы говорим о чем-то же просто, как:

x, y, z = 1, 1, 1 

for i in range(10): 
    print("X{i} = {x}, Y{i} = {y}, Z{i} = {z}".format(**locals())) 

    x, y, z = x + y, y + z, z + x 

, который не кажется правильным, как выход настолько неинтересны:

X0 = 1, Y0 = 1, Z0 = 1 
X1 = 2, Y1 = 2, Z1 = 2 
X2 = 4, Y2 = 4, Z2 = 4 
X3 = 8, Y3 = 8, Z3 = 8 
X4 = 16, Y4 = 16, Z4 = 16 
X5 = 32, Y5 = 32, Z5 = 32 
X6 = 64, Y6 = 64, Z6 = 64 
X7 = 128, Y7 = 128, Z7 = 128 
X8 = 256, Y8 = 256, Z8 = 256 
X9 = 512, Y9 = 512, Z9 = 512 
1

Ниже приводится пример функции для ее достижения:

def solve_equation(n): 
    X = {0: 1} 
    Y = {0: 1} 
    Z = {0: 1} 
    for i in range(n): 
     print 'For n: ', i+1 
     X[i+1] = X[i] + Y[i] 
     Y[i+1] = Y[i] + Z[i] 
     Z[i+1] = Z[i] + X[i] 
     print 'X = ', X[i+1], ' Y = ', Y[i+1], ' Z = ', Z[i+1] 

Пример запуска:

>>> solve_equation(3) 
For n: 1 
X = 2 Y = 2 Z = 2 
For n: 2 
X = 4 Y = 4 Z = 4 
For n: 3 
X = 8 Y = 8 Z = 8 
1

Вы можете использовать рекурсивные функции. Для более быстрого и лучшего кода вы можете рассмотреть возможность использование выхода

def Cvalue(c,xyz , n): 
    if n == 0 : 
      res = c 
    else : 
      if xyz == 1: res = Cvalue(c,1, n-1) + Cvalue(c,2, n-1) 
      elif xyz == 2: res = Cvalue(c,2, n-1) + Cvalue(c,3, n-1) 
      elif xyz == 3: res = Cvalue(c,3, n-1) + Cvalue(c,1, n-1) 
      else: print("Error\n") 
    return res 

def XYZvalues(x0, y0, z0, n): 
    x = Cvalue(x0,1, n) 
    y = Cvalue(y0,2, n) 
    z = Cvalue(z0,3, n) 
    return (x, y , z) 

print(XYZvalues(1,1,1, 3)) 

 Смежные вопросы

  • Нет связанных вопросов^_^