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

По заданным действительным числам вычислить интегралы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Cin и cout заменить на scanf и printf http://www.cyberforum.ru/cpp-beginners/thread1147259.html
Препод придрался к коду и требует, чтобы я cin и cout заменил на scanf и printf. Поможете? или хотя бы пример для преобразования покажите? Сам постараюсь выполнить. Заранее спасибо#include "stdafx.h" #include "conio.h" #include "iostream" using namespace std; int main() { cout << endl; unsigned int lenthOfArray=0; //переменная длины массива
C++ Удалить из матрицы все строки, содержащие элементы, сумма компонент которых меньше заданного числа Удалить из матрицы все строки, содержащие элементы, сумма компонент которых меньше заданного числа. Элементы матриц имеют вид пар (a,b), компоненты a и b которых инициализируются случайными числами. Используя объявления массивов через указатели на тип, шаблоны функций и структур, решить задачу для двух матриц с элементами типа структура, элементы первой матрицы имеют тип (int,int), а второй -... http://www.cyberforum.ru/cpp-beginners/thread1147256.html
C++ Удалить из массива тех абонентов, телефон которых начинается с цифры 3
Сформировать массив записей, описывающих следующую таблицу: --------------------------------------------------------------- Фамилия ! Адрес ! N телефона -------------------------------------------------------------- Удалить из массива тех абонентов, телефон которых начинается с цифры 3. Скорректированный массив вывести в прежней форме. Массив записей сформировал, но...
Найти элемент матрицы с наименьшей разностью компонент C++
Найти элемент матрицы с наименьшей разностью компонент. Элементы матриц имеют вид пар (a,b), компоненты a и b которых инициализируются случайными числами. Используя объявления массивов через указатели на тип, шаблоны функций и структур, решить задачу для двух матриц с элементами типа структура, элементы первой матрицы имеют тип (int,int), а второй - (double,double).
C++ Определить количество строк, не содержащих ни одного элемента с нулевыми компонентами http://www.cyberforum.ru/cpp-beginners/thread1147237.html
Определить количество строк, не содержащих ни одного элемента с нулевыми компонентами. Элементы матриц имеют вид пар (a,b), компоненты a и b которых инициализируются случайными числами. Используя объявления массивов через указатели на тип, шаблоны функций и структур, решить задачу для двух матриц с элементами типа структура, элементы первой матрицы имеют тип (int,int), а второй -...
C++ Одномерный массив, сортировка Вот задание. Надеюсь на помощь. Вот что у самого получилось... Что делать дальше? //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <vcl.h> #include <cstdlib> #include <ctime> #include <iostream> подробнее

Показать сообщение отдельно
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
13.04.2014, 19:25     По заданным действительным числам вычислить интегралы
C++
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <iomanip>
#include <fstream>
# include <cmath>
# include <time.h>
# define M_PI 3.14159265358979323846264338327950
# define N 2000 // максимально возможное число точек в которых проводим вычисления 
# define r 7 // количество узлов в формуле гаусса
using namespace std;
 
ofstream ff("res.txt");
 
int n=20; // число точек в которых проводим вычисления 
double usl_x[N];
double X[N][r];// хранит значения узлов разбиения по х
double x[N];
double koef_gauss[r]={0.129484966, 0.279705391, 0.381830051, 0.417959184, 0.381830051, 0.279705391, 0.129484966};
double korni_mhogoch_legandra[r]={-0.949107912, -0.741531185, -0.405845151, 0, 0.405845151, 0.741531185, 0.949107912};
 
 
double f(double x0, int v)// v- номер интегралла
{
if(v==1) return pow(atan(x0),2.);
    else return sin(exp(10*x0));
}
 
double integr(int v, double a ,double b)
{
    double h;
    int n1=300;
    h=abs((b-a))/n1;
    x[0]=a;
    for(int i=1;i<=n1;i++) x[i]=x[i-1]+h;
    
    for(int i=0;i<n1;i++)
        for(int j=0;j<r;j++) X[i][j]=(x[i+1]+x[i])/2.+((x[i+1]-x[i])/2.)*korni_mhogoch_legandra[j];
 
    double sum=0,sum1=0;
    for(int i=0;i<n1;i++)
    {
        sum1=0;
        for(int j=0;j<r;j++)
        {
            sum1+=koef_gauss[j]*f(X[i][j],v);
        }
        sum+=(h/2.)*sum1;
    }
    
    return sum;
}
 
void setka(double a, double b)
{
    double h;
h=(double)(b-a)/n;
for (int i=0;i<=n;i++)    usl_x[i]=a+i*h;
}
 
void main()
{
    
    setlocale(LC_ALL, "Russian");// подключение русской раскладки для вывода всех сообщений на русском языке
    cout<<"Введите а, b,n\n";
    double a,b,n;
    double res;
    cin>>a>>b>>n;
    setka(a,b);
    res=integr(1,a,b);
    setka(0,n);
    res+=integr(2,0,n);
    cout<<"Результат\n"<<res<<endl;
    system("pause");
}
интеграллы считаются разбиением интегралла на 300 интегралов(промежуток интегрирования делим на 30 промежутков и интегрируем на каждом), и каждый из полученных интеграллво вычисляется квадратурной формулой гаусса с 7 узлами

П.С. касательно 2-го интегралла может там предел от 0 до пи
 
Текущее время: 10:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru