当前位置:首页 > JavaScript

js实现多项式累加

2026-03-01 23:53:40JavaScript

实现多项式累加的方法

多项式累加可以通过多种方式实现,以下是几种常见的方法:

使用数组存储系数并累加

将多项式的系数存储在数组中,数组的索引对应变量的幂次。例如,多项式 $3x^2 + 2x + 1$ 可以表示为 [1, 2, 3]

js实现多项式累加

function addPolynomials(poly1, poly2) {
    const maxLength = Math.max(poly1.length, poly2.length);
    const result = [];

    for (let i = 0; i < maxLength; i++) {
        const coeff1 = poly1[i] || 0;
        const coeff2 = poly2[i] || 0;
        result.push(coeff1 + coeff2);
    }

    return result;
}

// 示例:计算 (3x^2 + 2x + 1) + (x^2 + 4x + 5)
const poly1 = [1, 2, 3];
const poly2 = [5, 4, 1];
console.log(addPolynomials(poly1, poly2)); // 输出 [6, 6, 4]

使用对象存储幂次和系数

如果多项式的幂次较高且稀疏,可以使用对象来存储幂次和系数的键值对。

js实现多项式累加

function addPolynomials(poly1, poly2) {
    const result = {};

    // 累加第一个多项式的系数
    for (const power in poly1) {
        result[power] = (result[power] || 0) + poly1[power];
    }

    // 累加第二个多项式的系数
    for (const power in poly2) {
        result[power] = (result[power] || 0) + poly2[power];
    }

    return result;
}

// 示例:计算 (3x^2 + 2x + 1) + (x^2 + 4x + 5)
const poly1 = { 0: 1, 1: 2, 2: 3 };
const poly2 = { 0: 5, 1: 4, 2: 1 };
console.log(addPolynomials(poly1, poly2)); // 输出 { 0: 6, 1: 6, 2: 4 }

处理多项式字符串输入

如果输入是多项式字符串(如 "3x^2 + 2x + 1"),可以先将字符串解析为系数数组或对象,再进行累加。

function parsePolynomial(str) {
    const terms = str.split(/\s*\+\s*/);
    const poly = {};

    terms.forEach(term => {
        const match = term.match(/(\d*)x\^?(\d*)|(\d+)/);
        let coeff, power;

        if (match[3]) {
            // 常数项
            coeff = parseInt(match[3], 10);
            power = 0;
        } else {
            // 含x的项
            coeff = match[1] === '' ? 1 : parseInt(match[1], 10);
            power = match[2] === '' ? 1 : parseInt(match[2], 10);
        }

        poly[power] = (poly[power] || 0) + coeff;
    });

    return poly;
}

function addPolynomials(poly1, poly2) {
    const result = {};
    for (const power in poly1) {
        result[power] = (result[power] || 0) + poly1[power];
    }
    for (const power in poly2) {
        result[power] = (result[power] || 0) + poly2[power];
    }
    return result;
}

// 示例:计算 (3x^2 + 2x + 1) + (x^2 + 4x + 5)
const poly1 = parsePolynomial("3x^2 + 2x + 1");
const poly2 = parsePolynomial("x^2 + 4x + 5");
console.log(addPolynomials(poly1, poly2)); // 输出 { 0: 6, 1: 6, 2: 4 }

注意事项

  • 输入的多项式可以是数组、对象或字符串形式,需根据实际需求选择解析方式。
  • 稀疏多项式(某些幂次系数为0)适合用对象存储,而密集多项式适合用数组存储。
  • 对于更高阶的多项式操作(如乘法、求导等),可以基于累加方法进一步扩展实现。

标签: 多项式js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…