Форум программистов, компьютерный форум CyberForum.ru

Квадратная формула Трапеций - Python

Восстановить пароль Регистрация
 
DanzokudRo
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 21
23.12.2016, 19:09     Квадратная формула Трапеций #1
Код я не прошу написать, но, пожалуйста, помогите найти ошибки(-у).

Работать должна по-идее для всех вариантов чисел, которые больше нуля, а на деле получается игра в Сапера.

Сам код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import matplotlib.pyplot as plt
import matplotlib.mlab as ml
import numpy as np
 
epsilon = np.e ** (-5)
hmin = epsilon
 
 
# Метод трапеций
def integrate_with_trapeze(func, min_lim, max_lim, step, n):
    integral = 0
    for x in ml.frange(min_lim, max_lim-step, step):
        integral+=step*(func(x) + func(x - step)) / 2
    return integral
 
print("Введите пределы интегрирования:")
min_lim = float(input())
max_lim = float(input())
 
if min_lim > max_lim:
    min_lim, max_lim = max_lim, min_lim
 
print("Введите мелкость разбиение N:")
n = int(input())
 
h = (max_lim - min_lim) / n
sn = 1
s2n = 0
 
while abs(sn-s2n) > epsilon:
    sn = integrate_with_trapeze(lambda x: np.log(x), min_lim, max_lim, h, n)
    s2n = integrate_with_trapeze(lambda x: np.log(x), min_lim, max_lim, h / 2, n)
    h = h / 2
    if h < hmin:
        break
    
if h <= hmin:
    print("-")
    print(sn)
    
else:
    print(sn)
    
 
# Для функции
x_for_f = np.linspace(min_lim, max_lim, 100)
y_for_f = np.array([np.log(x_for_f[i]) for i in range(len(x_for_f))],dtype = float)
plt.plot(x_for_f, y_for_f,'o', x_for_f, y_for_f)
xfff = np.linspace(min_lim, max_lim, n+1)
yfff = np.array([np.log(xfff[i]) for i in range(len(xfff))],dtype = float)
 
# Для трапеций
plt.bar(xfff, yfff, width = 0, color = 'red')
y_for_trapeze = np.array([np.log(x_for_f[i])-0.01 for i in range(len(x_for_f))],dtype = float)
plt.plot(x_for_f, y_for_trapeze, color = 'black')
 
plt.grid(True)
plt.title(r'$Trapeze Integration$')
plt.show()
Скинул фото ошибок.

Он как бы округляет числа до 0, наверно. Если кто - то может помочь с данной проблемой, то было бы замечательно.
Миниатюры
Квадратная формула Трапеций   Квадратная формула Трапеций   Квадратная формула Трапеций  

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2016, 19:09     Квадратная формула Трапеций
Посмотрите здесь:

Delphi Формула трапеций
. Формула полной вероятности. Формула Байеса
Метод Трапеций Delphi
MS Word Формула: дроби (числитель и знаменатель той же высоты, что и вся формула)
Формула полной вероятности. Формула Байеса
Формула полной вероятности и формула Байеса
Формула полной вероятности и формула Байеса
Формула полной вероятности и формула Байеса
Формула полной вероятности и формула Байеса
VBA Если пусто - одна формула, если есть значение - другая формула
MathCAD Метод трапеций
Формула для вывода текста по центру ячейки Python

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,967
24.12.2016, 02:31     Квадратная формула Трапеций #2
Ошибка тут:
Цитата Сообщение от DanzokudRo Посмотреть сообщение
Python
1
2
for x in ml.frange(min_lim, max_lim-step, step):
    integral+=step*(func(x) + func(x - step)) / 2
Допустим интегрируем с единицы и с шагом 1. Тогда на первом шаге получаем 1*(log(1) + log(1-1)) / 2.
При большем шаге аргумент и вовсе отрицательный получится.
Здесь шаг надо не вычитать, а прибавлять, ведь это верхний предел уменьшили на step.
Yandex
Объявления
24.12.2016, 02:31     Квадратная формула Трапеций
Ответ Создать тему
Опции темы

Текущее время: 08:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru