C++ CAS是一個全新的開源C++計算庫,可以用於各種數學應用,包括科學計算、圖形學和機器學習等。C++ CAS的特點是可以自動求導,並直接返回解析式結果,不需要用戶手動計算,免除了用戶編程時手動計算的繁瑣。
一、符號求導
C++ CAS可以進行符號求導,用戶只需要傳入要求導的表達式,就可以得到最終的導數表達式,如下所示:
#include "cas.h"
using namespace std;
using namespace cas;
// 求導
void diffTest() {
// 構造表達式
auto x = make_symbol("x");
auto y = make_symbol("y");
auto expr = sin(x) + cos(y);
// 對x求導
auto diffExpr = diff(expr, x);
// 輸出導數表達式
cout << diffExpr << endl;
// 輸出結果:cos(x)
}
其中make_symbol()方法用於創建符號,diff()方法用於進行求導,最終輸出導數表達式結果cos(x)。
二、函數求值
C++ CAS可以進行函數求值,用戶只需要傳入變量的值,就可以得到最終的函數結果,如下所示:
#include "cas.h"
using namespace std;
using namespace cas;
// 函數求值
void evalTest() {
// 構造表達式
auto x = make_symbol("x");
auto y = make_symbol("y");
auto expr = x * y + cos(x);
// 對表達式進行求值
auto result = eval(expr, {{"x", 1.0}, {"y", 2.0}});
// 輸出結果
cout << result << endl;
// 輸出結果:-0.0806046
}
其中make_symbol()方法用於創建符號,eval()方法用於進行函數求值,最終輸出函數求值的結果。
三、解析式化簡
C++ CAS可以對解析式進行化簡,用戶只需要傳入需要化簡的解析式,就可以得到最終的化簡結果,如下所示:
#include "cas.h"
using namespace std;
using namespace cas;
// 解析式化簡
void simplifyTest() {
// 構造表達式
auto x = make_symbol("x");
auto y = make_symbol("y");
auto expr = x * y + y * x + x * y * x * y + x + y;
// 對表達式進行化簡
auto simpleExpr = simplify(expr);
// 輸出化簡結果
cout << simpleExpr << endl;
// 輸出結果:2 * x * y + x + y
}
其中make_symbol()方法用於創建符號,simplify()方法用於進行表達式的化簡,最終輸出化簡的結果。
四、多項式操作
C++ CAS可以進行多項式操作,用戶可以對多項式進行加、減、乘、除等運算,並得到最終的表達式結果,如下所示:
#include "cas.h"
using namespace std;
using namespace cas;
// 多項式操作
void polynomialTest() {
// 構造多項式
auto x = make_symbol("x");
auto y = make_symbol("y");
auto poly1 = x * x + x * y + y * y;
auto poly2 = x + y;
// 多項式相加
auto addResult = poly1 + poly2;
// 多項式相減
auto subResult = poly1 - poly2;
// 多項式相乘
auto mulResult = poly1 * poly2;
// 多項式相除
auto divResult = divide(poly1, poly2);
// 輸出多項式結果
cout << addResult << endl; // 輸出結果:x^2 + 2 * x * y + y^2 + x + y
cout << subResult << endl; // 輸出結果:x^2 - x * y + y^2 - x - y
cout << mulResult << endl; // 輸出結果:x^3 + x^2 * y + x * y^2 + y^3
cout << divResult.first << endl; // 輸出結果:x + y
cout << divResult.second << endl; // 輸出結果:0
}
其中make_symbol()方法用於創建符號,加法、減法和除法可以直接使用符號重載,乘法需要使用*進行表達式構造,同時divide()方法可以用於多項式除法,最終輸出多項式運算的結果。
五、變量代換
C++ CAS可以進行變量代換,用戶可以將解析式中的某一個變量替換成另外一個變量或者常數,最終得到代換後的表達式,如下所示:
#include "cas.h"
using namespace std;
using namespace cas;
// 變量代換
void replaceTest() {
// 構造表達式
auto x = make_symbol("x");
auto y = make_symbol("y");
auto expr = x * y + cos(x);
// 對表達式進行變量代換
auto replaceExpr = replace(expr, "x", "z");
// 輸出變量代換結果
cout << replaceExpr << endl;
// 輸出結果:z * y + cos(z)
}
其中make_symbol()方法用於創建符號,replace()方法用於進行變量代換,最終輸出變量代換的結果。
六、總結
C++ CAS是一個功能強大的C++計算庫,可以用於各種數學應用,包括科學計算、圖形學和機器學習等。C++ CAS的特點是可以自動求導,並直接返回解析式結果,不需要用戶手動計算,免除了用戶編程時手動計算的繁瑣。同時,C++ CAS還支持函數求值、解析式化簡、多項式操作和變量代換等功能,使得用戶可以輕鬆進行各種數學運算,並得到最終的表達式結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/185794.html
微信掃一掃
支付寶掃一掃