LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
exact_sturm.hpp
浏览该文件的文档.
1#pragma once
2
4#include "polynomial.hpp"
5#include "result.hpp"
6
7#include <string>
8#include <utility>
9#include <vector>
10
11namespace LMCAS::detail {
12
13using RationalInterval = std::pair<Rational, Rational>;
15 const Polynomial<Rational>& polynomial) {
16 Rational maximum(0);
17 const Rational leading = polynomial.lead_coeff().abs();
18 for (int degree = 0; degree < polynomial.degree(); ++degree) {
19 const Rational ratio =
20 polynomial.coeffs[static_cast<std::size_t>(degree)].abs() / leading;
21 if (maximum < ratio) maximum = ratio;
22 }
23 return Rational(2) + maximum;
24}
25
26
28 const Polynomial<Rational>& polynomial,
30 const std::string& operation);
31
33 const Polynomial<Rational>& polynomial,
34 const Rational& lower,
35 const Rational& upper,
37 const std::string& operation);
38
39}
一元多项式模板类
std::vector< CoeffType > coeffs
系数数组,coeffs[i] 为 x^i 的系数
CoeffType lead_coeff() const
获取首项系数
int degree() const
获取多项式的次数
多元 Hensel 提升(单变量步)
Result< std::vector< RationalInterval > > isolate_real_roots_exact(const Polynomial< Rational > &polynomial, ComputationContext &context, const std::string &operation)
Result< std::size_t > count_real_roots_exact(const Polynomial< Rational > &polynomial, const Rational &lower, const Rational &upper, ComputationContext &context, const std::string &operation)
ComputationContext const std::string & operation
std::pair< Rational, Rational > RationalInterval
Rational strict_cauchy_root_bound(const Polynomial< Rational > &polynomial)
__attribute__((visibility("default"))) ExprResult function(const std __attribute__((visibility("default"))) ExprResult finite_set(std ExprPtr upper
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
const ExprPtr & lower
ExprResult abs(const ExprPtr &expression, ComputationContext &context)
一元多项式模板类 Polynomial<T>,支持四则运算,GCD,求导,求值.