Моя функция не принимает float: - «TypeError (« только массивы размера 1 могут быть преобразованы в скаляры Python ») (я думаю, что это можно быстро исправить!) - PullRequest
0 голосов
/ 05 февраля 2019

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

import numpy as np
import math

def func(x):
    return x ** 2

def func1(x):
    return x ** (x +0.5)

def func2(x):
    return np.sin(x)

def func3(x):
    return np.sin(x ** 2)

def riemann(f,a,b,N):
    dx = (b-a)/N
    x_midpoint = np.linspace(dx/2,b - dx/2,N)
    riemann_sum = np.sum(f(x_midpoint) * dx)
    return riemann_sum

res = riemann(func,0,1,10000)
res1 = riemann(func1,0,1,10000)
res2 = riemann(func2,0,1,10000)
res3 = riemann(func3,0,1,10000)


print("Midpoint Riemann Sum:",res)
print("Midpoint Riemann Sum:",res1)
print("Midpoint Riemann Sum:",res2)
print("Midpoint Riemann Sum:",res3)

1 Ответ

0 голосов
/ 05 февраля 2019

Получен следующий вывод и ошибки не найдено:

Midpoint Riemann Sum: 0.3333333325
Midpoint Riemann Sum: 0.527737838955
Midpoint Riemann Sum: 0.459697694323
Midpoint Riemann Sum: 0.310268301273

Что мы можем сделать, чтобы воспроизвести ошибку?

РЕДАКТИРОВАТЬ:

, используя a и b в качестве десятичных дробей:

res = riemann(func,0.2,3.14,10000)
res1 = riemann(func1,0.2,3.14,10000)
res2 = riemann(func2,0.2,3.14,10000)
res3 = riemann(func3,0.2,3.14,10000)

ВЫХОД:

Midpoint Riemann Sum: 9.66243875102
Midpoint Riemann Sum: 27.9239376537
Midpoint Riemann Sum: 1.87259837142
Midpoint Riemann Sum: 0.724064617658

и по-прежнему нет ошибок: /

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