求解非线性方程组的Gauss-Seidel方法 我开发了C++下面的代码,用高斯赛义德方法求解线性方程组,但是在填充数组时,我似乎遇到了一个问题,我无法计算出这些数组。这是我的密码 #include<stdio.h> int main(void) { float a[10][10],b[10],x[10],y[10]; int n=0,m=0,i=0,j=0; printf("Enter size of 2d array(Square matrix) : "); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("Enter values no. %d %d :",i,j); scanf("%f",&a[i][j]); } } printf("\nEnter Values to the right side of equation\n"); for(i=0;i<n;i++) { printf("Enter values no. %d :",i,j); scanf("%f",&b[i]); } printf("Enter initial values of x\n"); for(i=0;i<n;i++) { printf("Enter values no. %d :",i); scanf("%f",&x[i]); } printf("\nEnter the no. of iteration : " ); scanf("%d",&m); while(m>0) { for(i=0;i<n;i++) { y[i]=(b[i]/a[i][i]); for(j=0;j<n;j++) { if(j==i) continue; y[i]=y[i]-((a[i][j]/a[i][i])*x[j]); x[i]=y[i]; } printf("x%d = %f ",i+1,y[i]); } printf("\n\n"); m--; } return 0; #包括 内部主(空) { 浮点数a[10][10]、b[10]、x[10]、y[10]; int n=0,m=0,i=0,j=0; printf(“输入二维数组(方阵)的大小):”; scanf(“%d”和“&n”); 对于(i=0;i

求解非线性方程组的Gauss-Seidel方法 我开发了C++下面的代码,用高斯赛义德方法求解线性方程组,但是在填充数组时,我似乎遇到了一个问题,我无法计算出这些数组。这是我的密码 #include<stdio.h> int main(void) { float a[10][10],b[10],x[10],y[10]; int n=0,m=0,i=0,j=0; printf("Enter size of 2d array(Square matrix) : "); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("Enter values no. %d %d :",i,j); scanf("%f",&a[i][j]); } } printf("\nEnter Values to the right side of equation\n"); for(i=0;i<n;i++) { printf("Enter values no. %d :",i,j); scanf("%f",&b[i]); } printf("Enter initial values of x\n"); for(i=0;i<n;i++) { printf("Enter values no. %d :",i); scanf("%f",&x[i]); } printf("\nEnter the no. of iteration : " ); scanf("%d",&m); while(m>0) { for(i=0;i<n;i++) { y[i]=(b[i]/a[i][i]); for(j=0;j<n;j++) { if(j==i) continue; y[i]=y[i]-((a[i][j]/a[i][i])*x[j]); x[i]=y[i]; } printf("x%d = %f ",i+1,y[i]); } printf("\n\n"); m--; } return 0; #包括 内部主(空) { 浮点数a[10][10]、b[10]、x[10]、y[10]; int n=0,m=0,i=0,j=0; printf(“输入二维数组(方阵)的大小):”; scanf(“%d”和“&n”); 对于(i=0;i,c++,linear-algebra,equation,C++,Linear Algebra,Equation,您不为等式持有者分配第二维度。由于是二维矩阵,您也必须分配第二维度。将双for循环更改为以下内容: float ** EquationHolder=new float *[3]; for (int i=0; i<NumEquations; i++) { EquationHolder[i] = new float[3]; cout<<"Please Enter The Information Of Equation ("<<i+1<<").

您不为
等式持有者
分配第二维度。由于是二维矩阵,您也必须分配第二维度。将双
for
循环更改为以下内容:

float ** EquationHolder=new float *[3];
for (int i=0; i<NumEquations; i++)
{
    EquationHolder[i] = new float[3];
    cout<<"Please Enter The Information Of Equation ("<<i+1<<")...\n";
    for (int j=0; j<NumEquations; j++)
    {
        cout<<"X"<<j+1<<": ";
        cin>>EquationHolder[i][j];
    }
}
float**equalationholder=新的float*[3];
对于(int i=0;i第一件事:

为所有阵列分配存储:

int NumEquations=3;
// Equation Holder...
float ** EquationHolder= new float *[3];
for (int i=0; i<NumEquations; i++)
{
    EquationHolder[ i] = new float[3];
     // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    cout<<"Please Enter The Information Of Equation ("<<i+1<<")...\n";
    for (int j=0; j<NumEquations; j++)
    {
        cout<<"X"<<j+1<<": ";
        cin>>EquationHolder[i][j];
    }
}
int NumEquations=3;
//方程式持有人。。。
浮动**等式持有人=新浮动*[3];

对于(int i=0;i您没有初始化EquationHolder的行。添加以下内容:

float ** EquationHolder = new float *[3];
for(int i=0; i<NumEquations; i++)     // ADD
    EquationHolder[i] = new float[3]; // ADD
float**equalationholder=新的float*[3];

对于(int i=0;它不编译。在我成功编译后,运行失败。您能发布工作解决方案,而不出现运行时错误吗?@privatedatapublicchannel2我正在尝试解决它,先生:(谢谢先生…非常感谢:)谢谢先生…非常感谢:)谢谢先生…非常感谢:)
int main() {
    int NumEquations = 3;
    // Equation Holder...
    float ** EquationHolder = new float *[3];
    for (int i = 0; i < NumEquations; i++) {
        EquationHolder[ i] = new float[3];
        cout << "Please Enter The Information Of Equation(" << i + 1 << ")...\n";
        for (int j = 0; j < NumEquations; j++) {
            cout << "X" << j + 1 << ": ";
            cin >> EquationHolder[i][j];
        }
    }
    //... as before

    for ( int i = 0; i < NumEquations; i++) {   // deallocate storage
        delete [] EquationHolder[ i];
    }
    delete [] EquationHolder;

    return 0;
}
float ** EquationHolder = new float *[3];
for(int i=0; i<NumEquations; i++)     // ADD
    EquationHolder[i] = new float[3]; // ADD