Другие языки программирования и технологии
Помогите пожалуйста? cрочно
Написать программу по подсчету интеграла методом трапеций в любом языке программирования
Вот компактный калькулятор вычисления определённых интегралов по методу трапеций на Пайтоне. Вводятся подынтегральная функция, пределы интегрирования и количество равномерных интервалов. Разнообразных функций можно интегрировать сколько угодно!
Для справки:
∫(0;π)sin(x)dx = 2
∫(0;1)exp(x)dx = e-1
∫(0;1)x²dx = ⅓ = 0,(3)
Точность метода ~(b-a)²/n².
А теперь смотрите как на C++ можно приближённо вычислить
∫(-∞;+∞)(sin(x)/x)dx = π:
from math import*
while True:
try:
fun, a, b, n = input('f(x) a b n: ').split()
f, a, b, n = lambda x: eval(fun), float(a), float(b), int(n)
h, s = (b - a) / n, (f(a) + f(b)) * 0.5
for i in range(1, n): s += f(a+i*h)
print(s * h)
except: continue

∫(0;π)sin(x)dx = 2
∫(0;1)exp(x)dx = e-1
∫(0;1)x²dx = ⅓ = 0,(3)
Точность метода ~(b-a)²/n².
А теперь смотрите как на C++ можно приближённо вычислить
∫(-∞;+∞)(sin(x)/x)dx = π:
#include
#include
using namespace std;
double f(double x)
{ return x == 0 ? 1. : sin(x) / x; }
int main()
{
double a, b, i, h, n, s = 0;
cout.precision(16);
cout > a >> b >> n;
h = (b - a) / n;
s = (f(a) + f(b)) * 0.5;
for (i = 1; i < n; i += 1.) s += f(a + i * h);
cout > b >> n;
h = (b - a) / n;
s = (f(a) + f(b)) * 0.5;
for (i = 1; i < n; i += 1.) s += f(a + i * h);
cout
паскаль
program integral; {****** trapeciya *******}
uses crt;
const n0=60;
var
ntek:integer;
a,b,j1,j2,e,y:real;
function fun(x:real):real; // функция fun
begin fun:=exp(x)*sqr(cos(x));end; // тело функции
function trap(n:integer;a,b:real):real; // функция trap
var i:integer;
h,s:real;
begin
h:=(b-a)/n; // шаг разбиения промежутка
s:=(fun(a)+fun(b))/2; // вычисление начальных ординат
for i:=1 to n-1 do s:=s+fun(a+i*h); // вычисление суммы ординат
trap:=h*s; // вычисление площади
end;{trap}
BEGIN clrscr; //
y:=exp(pi)/2*(1 + (2*sin(2*pi)+cos(2*pi))/5) -0.6; //
writeln('tochnoe znachenie int= ',y:7:4);
a:=0; // левый конец промежутка
b:=pi; // правый
e:=0.001; // точность вычисления
j1:=0; // значение интеграла нулевое приближение
ntek:=n0; // число разбиений промежутка
repeat
j2:=j1; //
j1:=trap(ntek,a,b); // очередное значение интеграла
writeln('j2=',j2:8:4,' j1=',j1:8:4); {promejutochnaya pechat}
ntek:=2*ntek; // увеличение числа разбиений в 2
until abs(j1-j2)<=e; // условие выхода из цикла
writeln('int metodom trapecij = ',j1:8:4);
writeln('konec zadschi');
readkey;
END.
program integral; {****** trapeciya *******}
uses crt;
const n0=60;
var
ntek:integer;
a,b,j1,j2,e,y:real;
function fun(x:real):real; // функция fun
begin fun:=exp(x)*sqr(cos(x));end; // тело функции
function trap(n:integer;a,b:real):real; // функция trap
var i:integer;
h,s:real;
begin
h:=(b-a)/n; // шаг разбиения промежутка
s:=(fun(a)+fun(b))/2; // вычисление начальных ординат
for i:=1 to n-1 do s:=s+fun(a+i*h); // вычисление суммы ординат
trap:=h*s; // вычисление площади
end;{trap}
BEGIN clrscr; //
y:=exp(pi)/2*(1 + (2*sin(2*pi)+cos(2*pi))/5) -0.6; //
writeln('tochnoe znachenie int= ',y:7:4);
a:=0; // левый конец промежутка
b:=pi; // правый
e:=0.001; // точность вычисления
j1:=0; // значение интеграла нулевое приближение
ntek:=n0; // число разбиений промежутка
repeat
j2:=j1; //
j1:=trap(ntek,a,b); // очередное значение интеграла
writeln('j2=',j2:8:4,' j1=',j1:8:4); {promejutochnaya pechat}
ntek:=2*ntek; // увеличение числа разбиений в 2
until abs(j1-j2)<=e; // условие выхода из цикла
writeln('int metodom trapecij = ',j1:8:4);
writeln('konec zadschi');
readkey;
END.
Конечно! Вот пример программы на языке Python для вычисления интеграла методом трапеций:
```python
def f(x):
# Задайте вашу функцию здесь
return x**2
def trapezoidal_integration(a, b, n):
h = (b - a) / n
integral = (f(a) + f(b)) / 2.0
for i in range(1, n):
x = a + i * h
integral += f(x)
integral *= h
return integral
# Входные данные
a = 0 # Нижний предел интегрирования
b = 1 # Верхний предел интегрирования
n = 100 # Количество разбиений
result = trapezoidal_integration(a, b, n)
print("Результат интегрирования:", result)
```
В этом примере функция `f(x)` представляет интегрируемую функцию, и она может быть изменена на любую другую функцию, которую вы хотите интегрировать. Параметры `a` и `b` представляют нижний и верхний пределы интегрирования соответственно. Параметр `n` определяет количество разбиений (чем больше `n`, тем более точный результат).
Программа вычисляет интеграл методом трапеций, используя заданное количество разбиений, и выводит результат на экран.
Если вам нужно использовать другой язык программирования, дайте мне знать, и я предоставлю вам пример реализации на выбранном вами языке.
```python
def f(x):
# Задайте вашу функцию здесь
return x**2
def trapezoidal_integration(a, b, n):
h = (b - a) / n
integral = (f(a) + f(b)) / 2.0
for i in range(1, n):
x = a + i * h
integral += f(x)
integral *= h
return integral
# Входные данные
a = 0 # Нижний предел интегрирования
b = 1 # Верхний предел интегрирования
n = 100 # Количество разбиений
result = trapezoidal_integration(a, b, n)
print("Результат интегрирования:", result)
```
В этом примере функция `f(x)` представляет интегрируемую функцию, и она может быть изменена на любую другую функцию, которую вы хотите интегрировать. Параметры `a` и `b` представляют нижний и верхний пределы интегрирования соответственно. Параметр `n` определяет количество разбиений (чем больше `n`, тем более точный результат).
Программа вычисляет интеграл методом трапеций, используя заданное количество разбиений, и выводит результат на экран.
Если вам нужно использовать другой язык программирования, дайте мне знать, и я предоставлю вам пример реализации на выбранном вами языке.
Java
package Labs.Lab3;
import static java.lang.Math.*;
public class Lab31 {
static double doubleScan() {
float x;
for (;;) {
try {
x = java.lang.Float.parseFloat(new java.util.Scanner( System.in ).nextLine());
break;
}
catch (Exception e) {
System.out.println("Неправильный ввод. Попробуйте ещё раз.");
}
}
return x;
}
static double Func(double x) {
// return 13 / pow(13 * pow(x, 2) + 5, 0.5);
return sin(x);
}
static double Func2(double x) {
// return 6591 * pow(x, 2) / pow(13 * pow(x, 2) + 5, 2.5) - 169 / pow(13 * pow(x, 2) + 5, 1.5);
return -sin(x);
}
package Labs.Lab3;
import static java.lang.Math.*;
public class Lab31 {
static double doubleScan() {
float x;
for (;;) {
try {
x = java.lang.Float.parseFloat(new java.util.Scanner( System.in ).nextLine());
break;
}
catch (Exception e) {
System.out.println("Неправильный ввод. Попробуйте ещё раз.");
}
}
return x;
}
static double Func(double x) {
// return 13 / pow(13 * pow(x, 2) + 5, 0.5);
return sin(x);
}
static double Func2(double x) {
// return 6591 * pow(x, 2) / pow(13 * pow(x, 2) + 5, 2.5) - 169 / pow(13 * pow(x, 2) + 5, 1.5);
return -sin(x);
}
Похожие вопросы
- Помогите пожалуйста разобраться с вопросами по информатике и программированию
- Помогите Пожалуйста....не могу настроить сеть между 2-я компютерами... очень прошу кто шарит загляньте...
- Помогите пожалуйста!!!
- Помогите пожалуйста избавиться от "синего экрана смерти"! кто поможет, тому +10 баллов гарантирую!
- добрый вечер!помогите пожалуйста решить задание
- Вопрос по delphi, помогите пожалуйста.
- Помогите пожалуйста найти ошибку, с++
- народ помогите пожалуйста) надо сделать прогу на pascal)
- Помогите пожалуйста разобрать задачу по програмированию на C++.
- экран стал как на фото (внутри) что с моим ноутом? помогите пожалуйста!!!
System.out.println("1. Вычислить интегралы по обобщенной формуле трапеций, " +
"разбив отрезок интегрирования на частей. Оценить погрешность.\n");
final var a = 0.;
final var b = PI / 2;
final var n = 8;
// n = java.lang.Integer.parseInt(new java.util.Scanner(System.in).nextLine());
// break;
// }
// catch (Exception e) {
// System.out.println("Неправильный ввод. Попробуйте ещё раз.");
// }
var h = (b - a) / n;
var t = 0.;
var res = (Func(a) + Func(b) + 2 * t) * h / 2;
System.out.println("Интеграл по обобщённой формуле трапеций: " + res);
var max = Func2(a);
for (var i = 1; i <= n;) {
t = abs(Func2(a + h * i++));
if (t > max)
max = t;
} var d = - pow(b - a, 3) / (12 * pow(n, 2)) * max;
System.out.println("Погрешность: " + d);
}
}