Я передаю набор из N значений в цикл, но не могу заставить его напечатать вывод - PullRequest
0 голосов
/ 28 сентября 2019

Я не могу получить вывод, когда передаю числа в функцию.Мне нужно получить вычисленное значение и вычесть его из точного.Есть что-то, что я не понимаю?

def f1(x):
  f1 = np.exp(x)
  return f1;
def trapezoid(f,a,b,n):
   '''Computes the integral of functions using the trapezoid rule
   f = function of x
   a = upper limit of the function
   b = lower limit of the function
   N = number of divisions'''
   h   = (b-a)/N
   xi  = np.linspace(a,b,N+1)
   fi  = f(xi)
   s   = 0.0
   for i in range(1,N):
       s = s + fi[i]
   s = np.array((h/2)*(fi[0] + fi[N]) + h*s)
   print(s)
   return s
exactValue = np.full((20),math.exp(1)-1)
a  = 0.0;b = 1.0  # integration interval [a,b]
computed = np.empty(20)
E=np.zeros(20)
exact=np.zeros(20)
N=20
def convergence_tests(f, a, b, N):
 n = np.zeros(N, 1);
 E = np.zeros(N, 1);
 Exact = math.exp(1)-1
 for i in range(N):
   n[i] = 2^i
   computed[i] = trapezoid(f, a, b, n[i])
   E = abs(Exact - computed)
 print(E, computed)
 return E, computed 

1 Ответ

1 голос
/ 28 сентября 2019

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

Я предлагаю использовать инкрементное программирование: напишите несколько строк;протестируйте их, прежде чем переходить к следующему мини-заданию в вашем коде.В этом посте вы написали около 30 строк активного кода, даже не осознавая, что фактически ни один не выполняет его на самом деле.Там может быть несколько других ошибок в этом;вам, скорее всего, будет трудно исправить их все, чтобы получить ожидаемый результат.

Начните с малого и постепенно увеличивайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...