Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 12
1

Символьное дифференцирование

23.12.2012, 15:04. Показов 4904. Ответов 1
Метки нет (Все метки)

Требуется реализовать класс Expression с чисто виртуальными методами Expression *diff(); и void print(); и отнаследовать классы Number, Variable, Add, Sub, Mul, Div. Если можете, помогите, пожалуйста.

Добавлено через 5 часов 6 минут
Есть классы Number и Variable, а как быть с остальными, я не совсем понял.
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
class Expression
{
    public:
        virtual Expression * diff() = 0;
        virtual void print() = 0;
};
 
class Number: public Expression
{
    double x;
public:
    Number (double value)
    {
        x = value;
    };
    Expression * diff()
    {
        return new Number (0);
    }
    void print()
    {
    std::cout << x;
    };
};
 
class Variable: public Expression
{
    public:
        Variable(){};
        Expression * diff()
        {
            return new Number (1);
        };
        void print()
        {
            std::cout << 'x';
        };
};
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2012, 15:04
Ответы с готовыми решениями:

Нахождение производной (символьное дифференцирование)
Нужно написать программу для нахождения производной с двумя переменными. Например: (2x+1)' = 2;...

Символьное дифференцирование cos и sin
Здравствуйте. Хочу написать символьное дифференцирование cos и sin. Производную sin определяю через...

Класс "Символьное дифференцирование"
Помогите пожалуйста с созданием такого класса. НОВЫЕ ПОНЯТИЯ: наследование, виртуальные методы. ...

крестики нолики- консоль + клавиши + символьное оформление
здраствуйте,неполучается на данном етапе,организовать отображение рамок - │ символов и...

1
Джита
01.11.2014, 12:39 2
Собственно вся программа) Надеюсь, что кому-нибудь пригодится.
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include<stdlib.h>
#include <cstdio>
#include <math.h>
#include <iostream>
class Expression {
public:
virtual Expression *dif()=0;
virtual void print()=0;
};
class Number:public Expression
{public:
double e;
 
Number(double n): e(n) {}
Expression*dif()
{
 
 
return new Number(0);
 
}
void print()
{
std::cout « e;
}
 
};
 
class Variable:public Expression
{char X;
public:
Variable(char c):X(c){}
Expression*dif()
{
return new Number(1);
 
}
void print()
{
std::cout «X;
};
};
 
class Add:public Expression
{
Expression*m1,*m2;
public:
Add(Expression*L1, Expression*L2): m1(L1), m2(L2) {}
Expression*dif()
{
return new Add(m1->dif(),m2->dif());
 
};
void print (){
m1->print();
std::cout « "+";
m2->print();
}
};
 
class Mul:public Expression
{
Expression*e1;
Expression *e2;
public:
Mul(Expression*L1, Expression*L2): e1(L1), e2(L2) {}
Expression*dif()
{
return new Add(new Mul(e1->dif(),e2),new Mul(e1,e2->dif()));
 
};
void print(){
e1->print();
std::cout « "*";
e2->print();
}
};
class Sub :public Expression
{
Expression*m1, *m2;
public:
Sub(Expression*L1, Expression*L2) : m1(L1), m2(L2) {}
Expression*dif()
{
return new Sub(m1->dif(), m2->dif());
 
};
void print(){
m1->print();
std::cout « "-";
m2->print();
}
};
 
class Res :public Expression
{
Expression*e1;
Expression *e2;
public:
Res(Expression*L1, Expression*L2) : e1(L1), e2(L2) {}
Expression*dif()
{
return new Res(new Sub(new Mul(e1->dif(), e2), new Mul(e1, e2->dif())), new Mul(e2,e2));
 
};
void print(){
std::cout « "(";
e1->print();
std::cout « ")";
std::cout « "/";
std::cout « "(";
e2->print();
std::cout « ")"; 
 
}
};
int main()
{
Expression*i=new Res(new Number(3),new Variable('x'));
i->print();
std::cout « std::endl;
Expression*di=i->dif();
di->print();
return 0;
 
}
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2014, 12:39

Дифференцирование
помогите продифференцировать где z=z(t), вот это уравнение : х= z*e^-Bt (B -это бета) - х'=?...

Численное дифференцирование
Помогите пожалуйста написать программу на C++Builder 6. вот задание: Разработать программу...

Дифференцирование многочлена
Не знаю как написать программу. Очень надо. Голову всю сломал.

Создать класс. Символьное поле должно быть задано как объект класса string
решите задачку!) 6. Создать класс. Символьное поле должно быть задано как объект класса string....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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