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

Как продифференцировать (найти производную) для функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ 2. Составить программу для определения количества трехзначных чисел, кратных заданному числу http://www.cyberforum.ru/cpp-beginners/thread741675.html
Помогите решить, пожалуйста Составить программу для определения количества трехзначных чисел, кратных заданному числу.
C++ Сумма (правильно ли написана программа?) Подскажите, правель но ли написана программа? #include <iostream.h> using namespace std; vad main() { setlocale (LC_ALL, “Russian”); int n=0; float x, y=0; cout <<" Введите n \n"; http://www.cyberforum.ru/cpp-beginners/thread741670.html
C++ Сортировка строки
Добрый день уважаемые читатели. У меня проблема с такой задачей: нужно ввести строчку и получить новую строчку, отсортированную по алфавиту, а также еще одну строчку отсортированную по длине слова. Помогите реализовать. Буду благодарен. Можно использовать <string.h> (strcpy,strlengh и тд.) Я пробовал, но ничего не получалось.
Принципы и практика использования C++ C++
До этого изучал C# не слишком глубоко но ООП освоил.(С некоторыми оговорками, потому как серьёзные проекты с применением этой технологии мною не писались, лишь игрушечные программки исключительно для демонстрации синтаксических основ. Но с точки зрения теории всё было понятно...) В институте давали Си (хоть и из головы напрочь выпали такие вещи как управление памятью, работа со стеком итп)....
C++ Компилятор оптимизировал мой код, и я не могу его отладить http://www.cyberforum.ru/cpp-beginners/thread741632.html
пишу лабу одногруппнице. задание: определить двунаправленный циклический список. элементы типа char* реализовать функции: 1. проверка на пустоту 2. сколько элементов с одинаковыми соседями? 3. существует ли элемент равный следующему? 4. переставить элементы в обратном порядке между первым и последним вхождениями 5. вывод в файл. для себя добавил функцию create и add ООП не проходили....
C++ префиксное дерево Построение trie-дерева (оно же префиксное) поиск минимального и максимального элемента подробнее

Показать сообщение отдельно
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.12.2012, 13:40     Как продифференцировать (найти производную) для функции

Не по теме:

аналитическое нахождение производной на SWI-Prolog

Кликните здесь для просмотра всего текста
Prolog
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
% +Function +Variable -Derivative
derivative(X, X, 1) :-
    !.
derivative(C, X, 0) :-
    C \= X,
    atomic(C).
derivative(U+V, X, R) :-
    derivative(U, X, A),
    derivative(V, X, B),
    simplify_addition(A, B, R).
derivative(U-V, X, R) :-
    derivative(U, X, A),
    derivative(V, X, B),
    simplify_subtraction(A, B, R).
derivative(C*U, X, R) :-
    atomic(C),
    C \= X,
    derivative(U, X, A),
    simplify_multiplication(C, A, R),
    !.
derivative(C*U, X, R) :-
    atomic(U),
    U \= X,
    derivative(C, X, A),
    simplify_multiplication(U, A, R),
    !.
derivative(U*V, X, R):-
    derivative(U, X, A),
    derivative(V, X, B),
    simplify_multiplication(U, B, C),
    simplify_multiplication(V, A, D),
    simplify_addition(C, D, R).
derivative(U/V, X, R):-
    derivative(U, X, A),
    derivative(V, X, B),
    simplify_multiplication(A, V, A1),
    simplify_multiplication(B, U, B1),
    simplify_subtraction(A1, B1, C),
    simplify_division(C, V^2, R).
derivative(U^C, X, R) :-
    C \= X,
    atomic(C),
    derivative(U, X, A),
    simplify_multiplication(C, A, A1),
    simplify_subtraction(C, 1, C1),
    simplify_power(U, C1, U1),
    simplify_multiplication(A1, U1, R),
    !.
derivative(U^C, X, R) :-
    derivative(exp(C*log(U)), X, R).
derivative(exp(W), X, R):-
    derivative(W, X, Z),
    simplify_exponent(W, W1),
    simplify_multiplication(Z, W1, R).
derivative(log(W), X, R):-
    derivative(W, X, Z),
    simplify_division(Z, W, R).
derivative(sin(W), X, R) :-
    derivative(W, X, Z),
    simplify_multiplication(cos(W), Z, R).
derivative(cos(W), X, R):-
    derivative(W, X, Z),
    simplify_multiplication(sin(W), Z, K),
    simplify_multiplication(-1, K, R).
derivative(tg(W), X, R):-
    derivative(W, X, Z),
    simplify_division(Z, (cos(W))^2, R).
derivative(ctg(W), X, R):-
    derivative(W, X, Z),
    simplify_multiplication(-1, Z, Z1),
    simplify_division(Z1, (sin(W))^2, R).
derivative(arcsin(W), X, R):-
    derivative(W, X, Z),
    simplify_division(Z, (1-W^2)^0.5, R).
derivative(arccos(W), X, R):-
    derivative(W, X, Z),
    simplify_multiplication(-1, Z, Z1),
    simplify_division(Z1, (1-W^2)^0.5, R).
derivative(arctg(W), X, R):-
    derivative(W, X, Z),
    simplify_division(Z, 1+W^2, R).
derivative(arcctg(W), X, R):-
    derivative(W, X, Z),
    simplify_multiplication(-1, Z, Z1),
    simplify_division(Z1, 1+W^2, R).
 
% +A 1st operand +B 2nd operand -Result = A*B
simplify_multiplication(_, 0, 0) :- !.
simplify_multiplication(0, _, 0) :- !.
simplify_multiplication(1, C, C) :- !.
simplify_multiplication(C, 1, C) :- !.
simplify_multiplication(-1, C, -C) :- !.
simplify_multiplication(C, -1, -C) :- !.
simplify_multiplication(C, A, R) :-
    number(C),
    number(A),
    R is C * A, !.
simplify_multiplication(C, A, C*A).
 
% +A 1st operand +B 2nd operand -Result = A/B
simplify_division(_, 0, _) :- !, fail.
simplify_division(0, _, 0) :- !.
simplify_division(A, B, R) :-
    number(A),
    number(B),
    R is A / B, !.
simplify_division(A, B, A / B).
 
% +A 1st operand +B 2nd operand -Result = A+B
simplify_addition(C, 0, C) :- !.
simplify_addition(0, C, C) :- !.
simplify_addition(A, B, R) :-
    number(A),
    number(B),
    R is A + B, !.
simplify_addition(A, B, A+B).
 
% +A 1st operand +B 2nd operand -Result = A-B
simplify_subtraction(C, 0, C) :- !.
simplify_subtraction(0, C, C) :- !.
simplify_subtraction(A, B, R) :-
    number(A),
    number(B),
    R is A - B, !.
simplify_subtraction(A, B, A-B).
 
% +A 1st operand +B 2nd operand -Result = A^B
simplify_power(0, 0, _) :- !, fail.
simplify_power(0, B, 0) :- B \= 0, !.
simplify_power(A, 0, 1) :- A \= 0, !.
simplify_power(A, 1, A) :- !.
simplify_power(1, _, 1) :- !.
simplify_power(A, B, R) :-
    number(A),
    number(B),
    R is A^B, !.
simplify_power(A, B, A^B).
 
% +A 1st operand +B 2nd operand -Result = e^(A*log(B)) = B^A
simplify_exponent(A*log(B), B^A) :- !.
simplify_exponent(A, exp(A)).

использование кода на прологе в плюсах
Кликните здесь для просмотра всего текста
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
#include <SWI-cpp.h>
#include <iostream>
 
#pragma comment (lib, "libpl.lib")
 
int main()
{    
    try
    {
        PlEngine engine("libpl.dll");
        PlTermv termv(1);
        termv[0] = "derivative.pl"; //prolog source file
        PlQuery query("consult", termv);
       query.next_solution();
 
        PlTermv params(3);
        params[0] = PlCompound("ctg(3*x)*arccoc(3*x^2)");
        params[1] = PlCompound("x");
 
        PlQuery q("derivative", params);
 
        if (q.next_solution())
            std::cout << static_cast<const char*>(params[2]) << std::endl;
        else
            std::cout << "no solution" << std::endl;
    }
    catch (...)
    {
         std::cout << "exception" << std::endl;
    }
}

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