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

Python: научные вычисления

Войти
Регистрация
Восстановить пароль
 
DanzokudRo
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 34
#1

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

23.12.2016, 19:09. Просмотров 256. Ответов 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, наверно. Если кто - то может помочь с данной проблемой, то было бы замечательно.
0
Миниатюры
Квадратная формула Трапеций   Квадратная формула Трапеций   Квадратная формула Трапеций  

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2016, 19:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Квадратная формула Трапеций (Python):

Квадратная матрица. Операции - Python
В файле записана квадратная матрица размром mxm .Найти суммы элементов столбцов матрицы и отсортировать столбцыматрици по возрастанию...

Формула Тейлора - Python
def y(x, n): return (pow(-1, n)*pow(x, n + 1)) / (n + 1)# Член ряда x = -1 res = 0 tmp = 0 E =...

Математическая формула - Python
Здравствуйте! Помогите пожалуйста решить эту задачу: Входные данные: 2 неотъемлемых действительных числа a и b - аргументы командной...

Формула трапеций - Delphi
Помогите пжл. составить программу для вычисления опр. интеграла по формуле: http://s019.***********/i641/1211/80/0680efe0d735.jpg

Приближенное вычисление кратных интегралов (формула трапеций) - Maple
Приближенное вычисление кратных интегралов: Аналог формулы прямоугольников в Maple Есть некоторые задумки, но как и что писать в Maple по...

Формула: дроби (числитель и знаменатель той же высоты, что и вся формула) - MS Word
Всем доброго времени суток! Многие сталкивались с тем, что, при создании формул, числитель и знаменатель дроби уменьшаются. Собственно...

1
grizlik78
Эксперт С++
1956 / 1449 / 115
Регистрация: 29.05.2011
Сообщений: 3,007
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.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2016, 02:31
Привет! Вот еще темы с ответами:

Формула полной вероятности и формула Байеса - Теория вероятностей
Помогите, пожалуйста. Два филателиста А и В, имеющие соответственно a и b марок, играют в некоторую игру, состоящую из отдельных партий....

Формула полной вероятности и формула Байеса - Теория вероятностей
Каждому из 3 первоклассников - Пете, Коле и Мише - предложили одинаковое количество загадок. Петя отгадывает в среднем 3 загадки из 4. Коля...

Формула полной вероятности и формула Байеса - Теория вероятностей
Здравствуйте! Решала задачу по теории вероятности, но ответ не сошелся. Подскажите, пожалуйста, что неправильно:) Произведено 3...

Формула полной вероятности. Формула Байеса - Теория вероятностей
Из урны, где было 4 белых и 6 черных шаров, потерян один шар неизвестного цвета. После этого из урны извлечены (без возвращения) два...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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