c语言一元多项式运算
时间: 2024-12-12 20:09:34 浏览: 8
在C语言中,一元多项式的运算主要是基于数组结构来表示的,通常每个元素代表多项式的系数,数组下标对应于指数。对于一元多项式,例如 f(x) = a_n * x^n + a_{n-1} * x^{n-1} + ... + a_0,我们可以使用一个数组存储各项系数,数组的索引从0开始,索引i对应的项是a[i] * x^(i+1)。
以下是一个简单的例子,展示如何进行加法和乘法运算:
```c
typedef struct {
double* coefficients; // 存储系数的数组
int degree; // 最高次数(包含常数项)
} Polynomial;
// 初始化多项式
void init_polynomial(Polynomial* p, int n) {
p->coefficients = malloc(sizeof(double) * (n+1));
p->degree = n;
}
// 添加两个多项式
void add_polynomials(Polynomial* result, const Polynomial* p1, const Polynomial* p2) {
int max_degree = MAX(p1->degree, p2->degree);
for (int i = 0; i <= max_degree; ++i) {
result->coefficients[i] = p1->coefficients[i] + p2->coefficients[i];
}
result->degree = max_degree;
}
// 乘以一个标量
void multiply_by_constant(Polynomial* p, double scalar) {
for (int i = 0; i <= p->degree; ++i) {
p->coefficients[i] *= scalar;
}
}
// 乘以另一个多项式
void multiply_polynomials(Polynomial* result, const Polynomial* p1, const Polynomial* p2) {
result->degree = p1->degree + p2->degree;
result->coefficients = malloc(sizeof(double) * (result->degree + 1));
for (int i = 0; i <= result->degree; ++i++) {
double sum = 0.0;
for (int j = MAX(0, i - p2->degree); j <= MIN(i, p2->degree); ++j) {
sum += p1->coefficients[i-j] * p2->coefficients[j];
}
result->coefficients[i] = sum;
}
}
// 打印多项式
void print_polynomial(const Polynomial* p) {
printf("f(x) = ");
for (int i = p->degree; i >= 0; --i) {
if (p->coefficients[i] != 0) {
printf("%g*x^%d + ", p->coefficients[i], i+1);
} else if (i == 0) {
printf("0");
}
}
printf("\n");
}
阅读全文