數值分析-高斯消去法(20點)

4(X1)+2(X2)+3(X3)=7

2(X1)-4(X2)-1(X3)=1

-1(X1)+(X2)+4(X3)=-5

有誰會用有誰會用Turbo C++來寫這題數值分析(高斯消去法)的程式!

P.S.要用Crout\'s method 來解。

2 Answers

Rating
  • Favorite Answer

    #include <stdio.h>

    #include<iostream.h>

    #include <stdlib.h>

    int main()

    {

    int i,k,j=0,x,y; char a;

    double ma[9][10],zz,xx;

    cout<<"請輸入你的解聯立方程式";

    cout<<"你要幾乘幾聯立方程式axb\n";

    cout<<"a=";

    cin>>x;

    cout<<"\nb=";

    cin>>y;

    for(i=0;i<x;i++)

    {

    cout<<"\n請輸入第"<<i+1<<"式\n";

    for(j=0,a='A';j<y;j++,a++)

    {

    cout<<"變數"<<a<<"的係數等於多少";

    cin>>ma[i][j];

    if(j==y-1)

    {

    cout<<"請輸入你的方程式的值";

    cin>>ma[i][j+1];

    }

    }

    }

    for(k=0;k<x-1;k++)

    {

    zz=ma[k][k];

    for(i=0+k;i<y+1;i++)

    {

    ma[k][i]/=zz;

    }

    for(i=0+k;i<x-1;i++)

    {

    xx=ma[i+1][k]/ma[k][k];

    for(j=0+k;j<y+1;j++)

    {

    ma[i+1][j]+=(-1*xx*ma[k][j]);

    }

    }

    }

    for(i=0;i<2;i++)

    ma[x-1][y-1+i]/=ma[x-1][y-1];

    for(k=0;k<y;k++)

    {

    for(i=1;(i+k)<x;i++)

    {

    zz=ma[i-1][i+k]/ma[i+k][i+k];

    for(j=1;(j+k)<y+1;j++)

    ma[i-1][j+k]+=(-1*zz*ma[i+k][j+k]);

    }

    }

    for(i=0;i<x;i++)

    {

    cout<<"\n";

    for(j=0;j<y;j++)

    cout<<" "<<ma[i][j];

    }

    for(i=0,a='a';i<x;i++,a++)

    printf("\n%c=%f\n",a,ma[i][y]);

    system("PAUSE");

    }

    應該是這樣的吧

    試試看

    Source(s): 自己
    • Login to reply the answers
  • 1 decade ago

    我是要Turbo C++的程式碼。

    • Login to reply the answers
Still have questions? Get your answers by asking now.