一元稀疏多项式运算器(java实现)

本文介绍了一个基于Java的命令行工具,用于进行一元稀疏多项式的加、减、乘和求导运算。它包含PolynomialTerm和Polynomial类,分别表示多项式项和多项式,通过优化的数据结构和算法高效处理运算。
摘要由CSDN通过智能技术生成

一个基于java命令行的一元稀疏多项式运算器,实现了多项式的加法,减法,乘法,和导数。

  1. PolynomialTerm(多项式项)类:
    • 该类用于表示多项式中的单个项。
    • 它具有两个属性:指数(exponent)和系数(coefficient)。
    • 通过构造函数初始化指数和系数,并提供相应的getter方法。
  2. Polynomial(多项式)类:
    • 该类用于表示一元稀疏多项式。
    • 它使用一个列表(List)来存储多项式的项。
    • addTerm方法用于向多项式中添加一个项。
    • add方法用于多项式的加法运算。
    • 它遍历两个多项式的项,并按照指数的大小依次比较。
    • 如果两个项的指数相等,则将系数相加并创建一个新的项。
    • 如果两个项的指数不相等,则将指数较小的项添加到结果多项式中,并继续下一个项的比较。
    • subtract方法用于多项式的减法运算。
    • 它的逻辑类似于加法,只是在指数不相等的情况下,将系数较小的项乘以-1并添加到结果多项式中。
    • multiply方法用于多项式的乘法运算。
    • 它遍历两个多项式的所有项,并将对应项的指数相加,系数相乘,得到新的指数和系数。
    • 然后将结果添加到新的多项式中。
    • differentiate方法用于计算多项式的导数。
    • 对于每个项,导数的指数为原指数减1,系数为原指数乘以原系数。
    • 将结果添加到新的多项式中。
    • toString方法用于将多项式转换为字符串表示形式。
  3. PolynomialCalculator(多项式计算器)类:
    • main方法是程序的入口点。
    • 它使用Scanner从命令行读取输入。
    • 用户可以依次输入两个多项式的项数、指数和系数。
    • 使用readPolynomial方法读取多项式的项,并创建Polynomial对象。
    • 通过调用Polynomial对象的相应方法,执行加法、减法、乘法和导数运算。
    • 最后,将计算结果打印到控制台。

图片示例

在这里插入图片描述
在这里插入图片描述

下面是部分示例代码

    public Polynomial subtract(Polynomial other) {
        Polynomial result = new Polynomial();

        int i = 0;
        int j = 0;

        while (i < terms.size() && j < other.terms.size()) {
            PolynomialTerm term1 = terms.get(i);
            PolynomialTerm term2 = other.terms.get(j);

            if (term1.getExponent() == term2.getExponent()) {
                double diff = term1.getCoefficient() - term2.getCoefficient();
                if (diff != 0) {
                    result.addTerm(term1.getExponent(), diff);
                }
                i++;
                j++;
            } else if (term1.getExponent() > term2.getExponent()) {
                result.addTerm(term1.getExponent(), term1.getCoefficient());
                i++;
            } else {
                result.addTerm(term2.getExponent(), -term2.getCoefficient());
                j++;
            }
        }

        while (i < terms.size()) {
            PolynomialTerm term = terms.get(i);
            result.addTerm(term.getExponent(), term.getCoefficient());
            i++;
        }

        while (j < other.terms.size()) {
            PolynomialTerm term = other.terms.get(j);
            result.addTerm(term.getExponent(), -term.getCoefficient());
            j++;
        }

        return result;
    }
    

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < terms.size(); i++) {
            PolynomialTerm term = terms.get(i);
            int exponent = term.getExponent();
            double coefficient = term.getCoefficient();

            if (coefficient != 0) {
                if (i > 0 && coefficient > 0) {
                    sb.append(" + ");
                }

                if (coefficient < 0) {
                    sb.append("- ");
                }

                if (Math.abs(coefficient) != 1 || exponent == 0) {
                    sb.append(Math.abs(coefficient));
                }

                if (exponent > 0) {
                    sb.append("x");
                    if (exponent > 1) {
                        sb.append("^").append(exponent);
                    }
                }
            }
        }

        return sb.toString();
    }
}

点赞评论得全部代码。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值