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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
#1

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

09.02.2011, 18:07. Просмотров 960. Ответов 10
Метки нет (Все метки)

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

Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? - C++
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59; TimerMin = 6; for(int i = TimerSec;...

Математика и С++ - C++
Всем здрасте,сразу скажу что не знал куда написать. Изучяю сейчас С++, и собираюсь (в будущем) занятся написанием игр, от самый простых...

С++ и математика - C++
Необходимо составить программу вычисления значения функций при различных значениях аргументов, заданных интервалом изменения и величиной...

Математика - C++
ПОмогите пожалуйста понять Square - квадрат, который характеризуется координатами левого верхнего угла и длиной стороны Rectangle -...

с++ и математика - C++
Здравствуйте. Как написать на си это?

С++ и математика - C++
Задание вот это Чтобы открыть сейф, нужно ввести код – число, состоящее из семи двоек и троек. Сейф откроется, если двоек больше, чем...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
09.02.2011, 18:16 #2
Цитата Сообщение от Kastaneda Посмотреть сообщение
вопрос именно в алгоритме действий
так на третьем рисунке уже дана формула вычисления определенного интеграла. Чем не алгоритм?

Цитата Сообщение от Kastaneda Посмотреть сообщение
Пишу вообще на другом языке, но от примеров на сях не откажусь)
если не секрет, что за язык?
0
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;
}
6
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
09.02.2011, 18:23  [ТС] #4
Цитата Сообщение от Nameless One Посмотреть сообщение
так на третьем рисунке уже дана формула вычисления определенного интеграла. Чем не алгоритм?
У меня мозг перешел в энергосберегающий режим О_о
если не секрет, что за язык?
FORTRAN, но фортрановская ветка что-то вообще глухая, вот решил здесь написать (да простят меня админы))
dxdy, я так понимаю - "метод трапеций" это то, что мне нужно?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
09.02.2011, 18:28 #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
У меня мозг перешел в энергосберегающий режим
не понял смысл этой фразы.
Цитата Сообщение от Kastaneda Посмотреть сообщение
dxdy, я так понимаю - "метод трапеций" это то, что мне нужно?
осмелюсь ответить вместо него - да, это именно то, что тебе нужно.
1
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
09.02.2011, 18:32  [ТС] #6
Да, я уже вникаю сижу. Спасибо)

Не по теме:

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

0
easybudda
Модератор
Эксперт CЭксперт С++
9624 / 5572 / 946
Регистрация: 25.07.2009
Сообщений: 10,700
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}

не?
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
09.02.2011, 19:20  [ТС] #8
easybudda, так оно и есть)))
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
09.02.2011, 19:27 #9
Цитата Сообщение от easybudda Посмотреть сообщение
Могу, конечно, ошибаться, но вроде бы ...
Только http://www.cyberforum.ru/cgi-bin/latex.cgi?\left ( x \, - \, \frac{x^3}3 \right ) надо бы забрать в скобки
1
Kastaneda
09.02.2011, 20:01  [ТС]
  #10

Не по теме:

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

0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 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 минут
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2011, 03:47
Привет! Вот еще темы с ответами:

и снова С++ - C++
помогите записать програмку которая сможет написать минимальное количество простых присваиваний, содержащих по одному умножению (без...

дискретная математика - C++
Применение дискретной математики в системах автоматизаций???

Вычислительная математика - C++
Здраствуйте,добрые,люди.Тут такое задание по вычислительной математике,кому не тяжело,будьте добры помогите.Спасибо большое заранее. ...

Дискретная математика - C++
Есть три программы по дискретной математике. Выложу сюда. Может кому-то пригодиться. До конца семестра думаю будет еще 1-2 по...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.02.2011, 03:47
Ответ Создать тему
Опции темы

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