⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rect_qiuni.cpp

📁 这是一个用VC编写的常用的数字信号处理的程序包括
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////
//
//           团结紧张,严肃活泼 -------张佳伟
//        
//                http://vcroad.6to23.com
//
//      ghost_2000@citiz.net
//
//        一个钜阵求逆程序
/////////////////////////////////////////////////////////////////////////

#include<iostream.h>
#include<math.h>
#include<conio.h>
void input(int &);//输入矩阵
float compute(int);//计算x阶矩阵的行列式值
void arrange();
void convert(int,int &,int &);
float a[50][50];
float s[50][50]={0.0};
int x;
float result=1.0;
int main()
{
    int i,j,k,l;
    float b[50][50];
    
    input(x);
    
    arrange();
    
    for(j=1;j<=x;j++)
        for(i=1;i<=x;i++)
        {
            for(k=1;k<=x;k++)
                for(l=1;l<=x;l++)
                    if(k>=i) s[k][l]=s[k+1][l];//划去i行
                    
                    for(l=1;l<=x;l++)
                        for(k=1;k<=x-1;k++)
                            if(l>=j) s[k][l]=s[k][l+1];   //划去j列
                            
                            b[j][i]=(float)pow((-1),(i+j))*compute(x-1);
                            
                            result=1.0;
                            arrange();
                            
        }
        
        float mm=compute(x);
        
        for(i=1;i<=x;i++)
        {
            for(j=1;j<=x;j++)
                cout<<b[i][j]/mm<<"   ";
            cout<<endl;
        }

        getch();
        
        return 0;
}

void input(int &rx)
{
    unsigned short int i,j;
    cout<<"矩求逆运算"<<endl<<endl;
    cout<<"请输入矩阵的阶数:";cin>>rx;
    
    for (i=1;i<=rx;i++)
    {
        cout<<"请输入矩阵的第"<<i<<"行:";
        for (j=1;j<=rx;j++)
            cin>>a[i][j];
        cout<<endl;
    }
    cout<<endl;
}

float compute(int x)
{
    int i,j;
    unsigned short int ii,si;
    float temp;
    
    for (i=1;i<=x-1;i++)
    {
        j=i;
        if(s[i][j]==0)
        {
            for(si=i+1;si<=x;si++)
                if(s[si][j]!=0) break;
                if(si!=x+1)
                    convert(si,i,j);
                else
                    break;
        }
        
        for(ii=i;ii<=x-1;ii++)
        {
            temp=s[ii+1][i]/s[i][i];
            for(j=i;j<=x;j++)
                s[ii+1][j]=s[ii+1][j]-s[i][j]*temp;
        }
    }
    
    for(i=1;i<=x;i++)
        result=result*s[i][i];
    return result;
}

void convert(int ss,int &i,int &j)
{
    float stemp[50];
    for(j=i;j<=x;j++)
    {
        stemp[j]=s[ss][j];
        s[ss][j]=s[i][j];
        s[i][j]=stemp[j];
    }
    result=result*(-1);
}

void arrange()
{
    int i,j;
    for(i=1;i<=x;i++)
        for(j=1;j<=x;j++)
            s[i][j]=a[i][j];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -