Python 3.7.0. Прикрепил текстовый файл с кодом.
import math
def fpod (x): #значение подынтегральной функции
F = 1 / x * math.log(x)
return F
def fperv (x): #значение первообразной подынтегральной функции
F = math.log(math.log(x))
return F
def metodtrap(N, a, b): # метод трапеций
delx = (b - a) / N
ind = a + delx
sumfpod = 0
sumfperv = 0
while (ind < b):
sumfpod += 2 * fpod(ind)
sumfperv += 2 * fperv(ind)
ind += delx
sumfpod = ( sumfpod + fpod(a) + fpod(b) ) * delx / 2
sumfperv = ( sumfperv + fperv(a) + fperv(b) ) * delx / 2
print("Методом трапеции от подынтегральной функции: " + str(sumfpod))
print("Методом трапеции от первообразной подынтегральной функции: " + str(sumfperv))
return (sumfperv, sumfpod)
def metodlevpr(N, a, b): #метод левых прямоугольников
delx = (b - a) / N
ind = a
sumprperv = 0
sumprpod = 0
while (ind < b):
sumprperv += fperv(ind)
sumprpod += fpod(ind)
ind += delx
sumprperv = delx * sumprperv
sumprpod = delx * sumprpod
print("Методом левых прямоугольников от подынтегральной функции: " + str(sumprpod))
print("Методов левых прямоугольников от первообразной подынтегральной функции: " + str(sumprperv))
return (sumprperv, sumprpod)
N = int(input("N: "))
a = int(input("a: "))
b = int(input("b: "))
trap = metodtrap(N, a, b) # кортеж (результат перв. подынт. функции, результат подынт. функции)
pr = metodlevpr(N, a, b) # кортеж (результат перв. подынт. функции, результат подынт. функции)
if (trap[0] < trap[1]): # нахождение абсолютной погрешности
abs_pog_trap = trap[1] - trap[0]
print("Абсолютная погрешность (метод трапеции): " + str(abs_pog_trap))
else:
abs_pog_trap = trap[0] - trap[1]
print("Абсолютная погрешность (метод трапеции): " + str(abs_pog_trap))
if (pr[0] < pr[1]):
abs_pog_pr = pr[1] - pr[0]
print("Абсолютная погрешность (метод л.прямоугольников): " + str(abs_pog_pr))
else:
abs_pog_pr = pr[0] - pr[1]
print("Абсолютная погрешность (метод л.прямоугольников): " + str(abs_pog_pr))
print("Относительная погрешность (метод трапеции): " + str(int(round(abs_pog_trap / trap[0], 2) * 100)) + "%")
print("Относительная погрешность (метод л.прямоугольников): " + str(int(round(abs_pog_pr / pr[0], 2) * 100)) + "%")
Скачать вложение Текст (TXT)