Python: построение большей тригонометрической функции c на основе итерации меньшей функции - PullRequest
0 голосов
/ 24 апреля 2020

Привет

У меня есть функция y = sin (x * b (i) + a (i)). Я хочу создать новую функцию f, которая является продуктом n первой итерации этой y-функции с i в качестве итератора.

f = y (I = 1) * y (I = 2) * y (I = 3)

Как создать такой f в python?

Обратите внимание, что b (i) и a (i) не такие простые, как, например, b = I ^ 2 и a = 3i. в них есть операторы if, поэтому, насколько я понимаю, они должны быть вне моей функции y. Допустим, они:

b: if i%2 == 0:
      b = I^2+2
   else
      b = 3

a: if i/3 = int(I/3):
      b = 5i
   else
      b = 0

Цель в том, чтобы я мог просто изменить переменную I, а затем получить f-функцию с произведением y-функций с I итерациями. Затем я могу использовать f-функцию, чтобы найти новые значения для x.

(надеюсь, что мой непродвижущийся имеет смысл)

** РЕДАКТИРОВАТЬ: Этот код решает моя проблема: **

import math

def a(i):
    if i/3 == int(i/3):
        out = 5 * i
    else:
        out = 1 
    return out

def b(i):
    if i%2 == 0:
        out = (i^2)+2
    else:
        out = 3
    return out

def y(x, i):
    return x * b(i) + a(i)

def f(x, i):
    accum = 1
    for iterations in range(i):
        accum *= y(x, iterations + 1)
    return accum

print f(3,5)

1 Ответ

1 голос
/ 24 апреля 2020

Я бы посоветовал вам ознакомиться с синтаксисом Python, чтобы вы могли опубликовать пример того, что вы пробовали, который выполняет код или, по крайней мере, показывает ошибку, с которой вы столкнулись. Код, который вы опубликовали, не будет работать, так как он не является Python кодом.

Правописание / заглавные буквы / отступы все учитываются.

Я не совсем понял, что вы хотели, но это насколько я могу разобрать, и вы сможете настроить здесь.

def a(i):
    if i/3 = int(i/3):
      out = 5 * i
   else
      out = 0

def b(i):
   if i%2 == 0:
       out = I^2+2
   else:
       out = 3
    return out

def y(x, i):
    return x * b(i) + a(i)

def f(x, i):
    accum = 1
    for iterations in range(i):
        accum *= y(x, iterations + 1)
    return accum
...