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

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

Войти
Регистрация
Восстановить пароль
 
Dellghin
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 37
#1

Символьное дифференцирование cos и sin - C++

16.10.2015, 20:00. Просмотров 448. Ответов 1
Метки нет (Все метки)

Здравствуйте. Хочу написать символьное дифференцирование cos и sin. Производную sin определяю через cos, cos через sin. Ошибка понятна: производная синуса определяется через ещё несуществующий класс cos. Можно ли как-нибудь определить классы одновременно, чтобы не было ошибки?
Number - константа, Variable - переменная, Add - сумма, Sub - разность, Mul - произведение выражений.
C++ (Qt)
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
class Expression {
public:
    virtual Expression *diff() = 0;
    virtual void print() = 0;
};
/*Классы Number, Variable, Add, Sub, Mul реализованы*/
class Sin : public Expression {
    Expression *e;
public:
    Sin(Expression *a) : e(a) {}
    Expression *diff() {
        return new Mul(new Cos(e), e->diff());
        return new Number(0);
    }
    void print() {
        cout << "sin(";
        e->print();
        cout << ')';
    }
};
 
class Cos : public Expression {
    Expression *e;
public:
    Cos(Expression *a) : e(a) {}
    Expression *diff() {
        return new Mul(new Sub(new Number(0), new Sin(e)), e->diff());
    }
    void print() {
        cout << "cos(";
        e->print();
        cout << ')';
    }
};
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2015, 20:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Символьное дифференцирование cos и sin (C++):

Символьное дифференцирование - C++
Требуется реализовать класс Expression с чисто виртуальными методами Expression *diff(); и void print(); и отнаследовать классы Number,...

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

Функция sin(x+y)=sin(x)cos(y)+cos(x)sin(y) - C++
как её записать на языке с++?

Sin() cos() - C++
Всем приветик. У меня последний Qt MinGW. Вопрос: Перед использованием функции sin(x), мне сказали что нужно градусы перевести в...

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

y=sin(n*x)+cos(k*x)+ln(m*x) - C++
y=sin(n*x)+cos(k*x)+ln(m*x) где x= { e^z+z, при z&gt;1 z^2+1, при z меньше или равно 1 не поможете ли мне пожалуйста...

1
Nick Alte
Эксперт С++
1643 / 1015 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
16.10.2015, 20:13 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Конкретно эта проблема решается просто:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Base{};
 
class Foo: public Base {
public:  Base* get() const;
};
 
class Bar: public Base {
public: Base* get() const {return new Foo;}
};
 
inline Base* Foo::get() const
{
    return new Bar;
}
По поводу других (вроде совместного владения выражениями через "голые" указатели) даже задумываться не хочется.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2015, 20:13
Привет! Вот еще темы с ответами:

Определить sin и cos - C++
Считая, что функции sin и cos применимы только к аргументам в диапазоне , вычислить y = sin(x) для любого заданного вещественного числа x.

Фунции sin и cos - C++
Здравствуйте. Начал писать игру, аналог знаменитых Tank Wars. При использовании библиотечных(math.h) функций sin и cos появилась...

Точность sin, cos - C++
Вычисляя sin(M_PI) в C++ я получаю 1.22465e-016. Но надо 0, а не число, близкое к 0. Можно ли какими-нибудь настройками компилятора,...

Выражение с cos() и sin() - C++
помагите с выражением.а то запуталась окончательно(( z=cos4x+sin y+1/4 sin22x - 1


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

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

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