简化多项式

问题描述

我正在尝试打印拉格朗日插值表。

enter image description here

    double x0 = x[0];
    double x1 = x[1];
    double x2 = x[2];
    double x3 = x[3];
    double z0 = z[0];
    double z1 = z[1];
    double z2 = z[2];
    double z3 = z[3];
if (size == 2)
    {
        cout << "\nLagrange Polynomial Form: " << endl;
        cout << (1 / (x0 - x1)) * (z0) << "(x" << -x1 << ")" 
             << (1 / (x1 - x0)) * (z1) << "(x" << -x0 << ")" << endl;

    }
    else if (size == 3)
    {
        cout << "\nLagrange Polynomial Form: " << endl;
        cout << (1 / ((x0 - x1) * (x0 - x2)) * (z0)) << "(x" << -x1 << ")" << "(x" << -x2 << ")"
             << (1 / ((x1 - x0) * (x1 - x2)) * (z1)) << "(x" << -x0 << ")" << "(x" << -x2 << ")"
             << (1 / ((x2 - x0) * (x2 - x1)) * (z2)) << "(x" << -x2 << ")" << "(x" << -x0 << ")";


    }
    else if (size == 4)
    {
        cout << "\nLagrange Polynomial Form: " << endl;
        cout << (1 / ((x0 - x1) * (x0 - x2) * (x0 - x3)) * (z0)) << "(x" << -x1 << ")" << "(x" << -x2 << ")" << "(x" << -x3 << ")"
            << (1 / ((x1 - x0) * (x1 - x2) * (x1 - x3)) * (z1)) << "(x" << -x0 << ")" << "(x" << -x2 << ")" << "(x" << -x3 << ")"
            << (1 / ((x2 - x0) * (x2 - x1) * (x2 - x3)) * (z2)) << "(x" << -x0 << ")" << "(x" << -x1 << ")" << "(x" << -x3 << ")"
            << (1 / ((x3 - x0) * (x3 - x1) * (x3 - x2)) * (z3)) << "(x" << -x0 << ")" << "(x" << -x1 << ")" << "(x" << -x2 << ")";


    }

我想做的是读取给定数组的大小,然后根据size = 1,2,3打印出公式...但是,如果我一直做到size = 10,这会花费太多代码。如何将代码简化为for循环或更简单?

解决方法

尝试一下,看看是否对您有好处:

Warning 8: this pattern-matching is not exhaustive. Here is an example of a case that is not matched: (_::[]|[])

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...