如何整理这个数组? < >我正在为C++中的任何方程运行Newton Raphson方法的代码。我试着输入方程的系数,但突然循环继续。“fun”函数由用户计算给定方程的值,“der”计算该函数的导数,并将该值传递给main

如何整理这个数组? < >我正在为C++中的任何方程运行Newton Raphson方法的代码。我试着输入方程的系数,但突然循环继续。“fun”函数由用户计算给定方程的值,“der”计算该函数的导数,并将该值传递给main,c++,newtons-method,C++,Newtons Method,编辑:我使用调试器发现了一个错误。下图显示了这种情况。如果我只输入3个系数,数组中的其他(10-3=7)元素将由计算机本身随机生成。所以现在我的主要问题是,我如何初始化和使用数组,使它成为用户想要的m[n]。您可以看到m[3]=32765,我希望在m[2]之后自动关闭阵列。 #包括 #包括 #包括 使用名称空间std; 双重乐趣(双重x,整数m[10],整数n){ 双a; 对于(int i=0;iE; cout n; coutdouble a;--您没有初始化它,任何事情都可能发生。函数体中声

编辑:我使用调试器发现了一个错误。下图显示了这种情况。如果我只输入3个系数,数组中的其他(10-3=7)元素将由计算机本身随机生成。所以现在我的主要问题是,我如何初始化和使用数组,使它成为用户想要的m[n]。您可以看到m[3]=32765,我希望在m[2]之后自动关闭阵列。

#包括
#包括
#包括
使用名称空间std;
双重乐趣(双重x,整数m[10],整数n){
双a;
对于(int i=0;i<(n+1);i++)
{
a+=m[i]*pow(x,n-i);
}
返回a;
}
双德(双x,整数m[10],整数n){
双a;
对于(int i=0;i<(n+1);i++)
{
a+=(n-i)*m[i]*pow(x,n-1-i);
}
返回a;
}
int main(){
int i,n,m[10];
双x,y,E,f1,f2;
双f3;
cout x>>E;
cout n;

cout
double a;
--您没有初始化它,任何事情都可能发生。函数体中声明的变量必须初始化,因为它们是一种类型的
auto
存储类。
double a=0
或某个值。@Auberron
double a=0;
。@Auberron不是向下投票者,但很明显。您尝试过调试吗在发布程序之前请先将其删除?如果是,请在此处添加这些详细信息。为什么程序没有停止?可能有很多原因,如果没有提供足够的信息,则无法预测确切原因。谢谢Rohan。我也将添加这些原因。
#include <iostream>
#include <cmath>
#include <iomanip>


using namespace std;

double fun(double x, int m[10], int n) {
    double a;
    for (int i = 0; i < (n+1); i++)
    {
        a += m[i]*pow(x,n-i);
    }
    


    return a;
}

double der(double x, int m[10], int n) {
    double a;

    for (int i = 0; i < (n+1); i++)
    {
        a += (n-i)*m[i]*pow(x,n-1-i);
    }
    
    return a;
}

int main() {
    int i, n, m[10];
    double x, y, E, f1, f2;   
    double f3; 
    cout << "Enter numbers and error tolerance " << endl;
    cin >> x >> E;
    cout << "Enter degree of polynomials (less than 4)" << endl;
    cin >> n;
    cout << "Enter " << n+1 << " coefficients" << endl;
    for ( i = 0; i < (n+1) ; ++i)
    {
        cin >> m[i];
       
    }
    cout << "   " << 'i' << setw(14) << 'x' << setw(14) << 'y' << setw(14) << "f3" << endl;

    do
    {
        
        f1 = fun(x,m,n);
        f2 = der(x,m,n);
        y = x - (f1/f2);
        f3 = fun(y,m,n);
        ++i;
        cout << "   " << i << setw(14) << x << setw(14) << y << setw(14) << f3 << endl;
       
        x = y;


    }while ( fabs(f3)>E);

    cout << "The root is  " << y << endl;
    

    return 0;
}