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

И снова она - математика! - C++

Восстановить пароль Регистрация
 
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.02.2011, 18:07     И снова она - математика! #1
День добрый)
Сижу пишу контрольные, что-то совсем запарился. Не могу понять как нужно написать прогу. С кодом помогать не нужно, вопрос именно в алгоритме действий, под конец сесси совсем гоню...
Вычислить определенный интеграл:
И снова она - математика!
И снова она - математика!
И снова она - математика!
Пишу вообще на другом языке, но от примеров на сях не откажусь) Все не нужно, только самую суть ))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2011, 18:07     И снова она - математика!
Посмотрите здесь:

C++ С++ и математика
Математика и С++ C++
C++ Снова списки.
и снова строки C++
C++ и снова С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
09.02.2011, 18:16     И снова она - математика! #2
Цитата Сообщение от Kastaneda Посмотреть сообщение
вопрос именно в алгоритме действий
так на третьем рисунке уже дана формула вычисления определенного интеграла. Чем не алгоритм?

Цитата Сообщение от Kastaneda Посмотреть сообщение
Пишу вообще на другом языке, но от примеров на сях не откажусь)
если не секрет, что за язык?
dxdy
 Аватар для dxdy
97 / 97 / 5
Регистрация: 14.06.2010
Сообщений: 283
09.02.2011, 18:16     И снова она - математика! #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
сохранилась моя лабораторная работа за 1 курс. В качестве примера:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;
const float p = 3.141592653;
 
float ingdv(float a, float b, float e, float (*f)(float,float,int));
float f1(float a, float b, int n);
float f2(float a, float b, int n);
float f3(float a, float b, int n);
 
int main()
{
    setlocale(LC_CTYPE,"Russian");
    float a,b,rez,e;
    printf("Введите A, B и точность вычисления\n");
    scanf("%f%f%f", &a,&b,&e);
    printf("\nРешение интеграла 3-мя методами:\n\n");
    rez = ingdv(a,p/b,e,f1);
    printf("Метод Трацеция %f\n",rez);
    rez = ingdv(a,p/b,e,f2);
    printf("Метод Прямоугольник %f\n",rez);
    rez = ingdv(a,p/b,e,f3);
    printf("Метод Симпсона %f\n\n",rez);
    return 0;
}
/*-----------------Метод трапеции-------------------*/
float f1(float a, float b, int n)
{
    float h,sum,x;
    int i;
    sum = 0;
    h=(b-a)/n;
    sum += sqrt(tan(a));
    for(i = 1; i < n; i++)
    {
        x = a + i*h;
        sum += 2*sqrt(tan(x));
    }
    x = a + n*h;
    sum += sqrt(tan(x));
    return(0.5*h*sum);
}
/*---------------Метод прямоугольника------------------*/
float f2(float a, float b, int n)
{
    float h,sum,x;
    int i;
    sum = 0;
    h=(b-a)/n;
    for(i = 1; i <= n; i++)
    {
        x = a + (i-0.5)*h;
        sum += sqrt(tan(x));
    }
    return h*sum;
}
/*----------------Метод Симпсона--------------------*/
float f3(float a, float b, int n)
{
    float h, sum,x;
    int i, k;
    sum = 0;
    h=(b-a)/n;
    sum += sqrt(tan(a));
    for(i = 1; i < n; i++)
    {
        x = a + i*h;
        if(i%2 == 0) {k = 2;}
        else {k = 4;}
        sum += k*sqrt(tan(x));
    }
    x = a + n*h;
    sum += sqrt(tan(x));
    return 0.333*h*sum;
}
/*-----------Общая функция-----------*/
float ingdv(float a, float b, float e, float (*f)(float,float,int))
{
    int n = 10;
    float p,k;
    k = f(a,b,n);
    do{
        p = k;
        k = f(a,b,2*n);
        n = n*2;
 
    }while(abs(p-k)<e);
    return k;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.02.2011, 18:23  [ТС]     И снова она - математика! #4
Цитата Сообщение от Nameless One Посмотреть сообщение
так на третьем рисунке уже дана формула вычисления определенного интеграла. Чем не алгоритм?
У меня мозг перешел в энергосберегающий режим О_о
если не секрет, что за язык?
FORTRAN, но фортрановская ветка что-то вообще глухая, вот решил здесь написать (да простят меня админы))
dxdy, я так понимаю - "метод трапеций" это то, что мне нужно?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
09.02.2011, 18:28     И снова она - математика! #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
У меня мозг перешел в энергосберегающий режим
не понял смысл этой фразы.
Цитата Сообщение от Kastaneda Посмотреть сообщение
dxdy, я так понимаю - "метод трапеций" это то, что мне нужно?
осмелюсь ответить вместо него - да, это именно то, что тебе нужно.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.02.2011, 18:32  [ТС]     И снова она - математика! #6
Да, я уже вникаю сижу. Спасибо)

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
не понял смысл этой фразы.
Учусь заочно, сессия 3 недели без выходных, каждый день с 8:30 и в среднем часов до 4-5. Почти каждый день экзамен или зачет. Три дня учиться осталось, мозги уже не соображают)))

easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.02.2011, 19:05     И снова она - математика! #7
Могу, конечно, ошибаться, но вроде бы

http://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{a}^{b}(1-{x}^{2})dx = x - \frac{{x}^{3}}{3}\mid \begin{matrix} b\\  a \end{matrix}

не?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.02.2011, 19:20  [ТС]     И снова она - математика! #8
easybudda, так оно и есть)))
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
09.02.2011, 19:27     И снова она - математика! #9
Цитата Сообщение от easybudda Посмотреть сообщение
Могу, конечно, ошибаться, но вроде бы ...
Только http://www.cyberforum.ru/cgi-bin/latex.cgi?\left ( x \, - \, \frac{x^3}3 \right ) надо бы забрать в скобки
Kastaneda
09.02.2011, 20:01  [ТС]
  #10

Не по теме:

Nameless One, я несколько дней назад матан сдал, еще помню

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2011, 03:47     И снова она - математика!
Еще ссылки по теме:

С++ и математика C++
с++ и математика C++
C++ Как сделать чтобы таймер дойдя до 0 стартовал снова и снова?

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.02.2011, 03:47     И снова она - математика! #11
только позавчера сдал, порядок задается от 1 до 9
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
//NewtonCotes.h
#pragma once
 
#include <cmath>
 
namespace NewtonCotes {
    const double  r[9] = { 0.5, 1./3, 3./8, 2./45, 5./288, 1./140, 7./17280, 8./28350, 9./89600 };
    const int P[9][10] = { {    1,     1,    0,     0,     0,     0,     0,    0,    0,     0 },
                   {    1,     4,    1,     0,     0,     0,     0,    0,    0,     0 },
                   {    1,     3,    3,     1,     0,     0,     0,    0,    0,     0 },
                   {    7,    32,   12,    32,     7,     0,     0,    0,    0,     0 },
                   {   19,    75,   50,    50,    75,    19,     0,    0,    0,     0 },
                   {   41,   216,   27,   272,    27,   216,    41,    0,    0,     0 },
                   {  751,  3577, 1323,  2989,  2989,  1323,  3577,  751,    0,     0 }, 
                   {  989,  5888, -928, 10496, -4540, 10496,  -928, 5888,   989,    0 },
                   { 2857, 15741, 1080, 19344,  5778,  5778, 19344, 1080, 15741, 2857 }};
class Formula {
protected:
    int n; //порядок метода от 1 до 9 
    int L; //количество подинтервалов на которые разбиваем [x1,x2]
    double x1;
    double x2;
private:
    double H() const { return std::fabs(x2 - x1) / L; } //длинна подинтервалов на которые разбиваем[x1,x2]
    double h() const { return H() / n; } //растояние между узлами интерполяции на каждом подинтервале
    double Ym( double (*f)(double), double x, int m ) const { return f( x + h() * m ); }
    double Sum( double (*f)(double), double x ) const;
public:
    Formula( int _n = 1, int _L = 1, double X1 = 0, double X2 = 0 ) : n(_n), L(_L), x1(X1), x2(X2) { if(x1 > x2) { x1 = X2; x2 = X1; }}
    double IntegralSum( double (*f)(double) ) const; //передаем ф-ю которую будем интегрировать
    void SetNInterpolation( int N ) { n = N; }
    void SetNumberOfIntervals( int _L ) { L = _L; }
    void SetX1( double X1 ) { x1 = X1; }
    void SetX2( double X2 ) { x2 = X2; }
};
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//NewtonCotes.cpp
#include "NewtonCotes.h"
 
double NewtonCotes::Formula::Sum( double (*f)(double), double x ) const
{
    double s(0);
    for( int i = 0; i <= this->n; i++ )
    s += NewtonCotes::P[n-1][i] * NewtonCotes::Formula::Ym( f, x, i );
    return s;
}
 
double NewtonCotes::Formula::IntegralSum( double (*f)(double) ) const
{
    double I(0);
    for( int i = 0; i < this->L; i++ )
    I += NewtonCotes::r[n-1] * h() * Sum( f, this->x1 + i * H() );
    return I;
}
Добавлено через 12 минут
Yandex
Объявления
10.02.2011, 03:47     И снова она - математика!
Ответ Создать тему
Опции темы

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