国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

學數學也要學點偷懶的技術(二)

2019-11-17 05:31:10
字體:
來源:轉載
供稿:網友
    老師剛教逆矩陣,我就覺得求逆矩陣很難算,假如求四階以上的逆矩陣,至少也要四五分鐘才能解決。于是我想到用C來解決了。順便為自己上次寫的文章升升級也好。說寫就寫,可我很快發現找求逆矩陣的算法并不輕易。想了很久,沒辦法,就去圖書館查資料。找是找到了“高斯全選主元法”在一本久版的《c常用算法程序集》上,可是看了半個小時,還是看不明白,想必大師之作不讓我這小人物看懂。最后我下決心要自己找一個好的算法。   工夫不負有心人,我終于找到求逆矩陣的算法,而且有兩種。這兩種的算法都要調用到第一次寫的《學數學也要學點偷懶的技術》里的函數。下面我只用了其中的一種算法。   數學依據是:逆矩陣=原矩陣的N階行列式值的倒數*原矩陣的伴隨陣。   條件:原矩陣的N階行列式的值不能為零     請大家多多指教。   QQ:258220980
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>#define N  10
#define M 10
#define S 10void njie_valu();
void njief_value();
float Dvalue(float a[N][N],int n);
void juzhench();
void nijuzhen();void nijuzhen()
{
    int i,j,n,m1,m2,n1,n2 ;
    int k ;
    float x[(N-1)*(N-1)];
    float y,s ;
    float a1[N][N],b[N][N],a[N][N],A[N][N],p[N][N],c[N][N];
    clrscr();
        scanf("%d",&n);
    printf("請以正確的順序輸入矩陣:/n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%f",&a[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%f  ",a[i][j]);
        }
        printf("/n");
    }
    getch();
 if(Dvalue(a,n)==0)
 {
  printf("D=0,沒有逆矩陣!");
  exit(1);
 }
 s=1.0/Dvalue(a,n);
    for(m1=0;m1<n;m1++)
    {
        for(n1=0;n1<n;n1++)
        a1[m1][n1]=a[m1][n1];
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            /*位于i行j列的元素變為0*/
            for(m1=0;m1<n;m1++)
            {
                for(n1=0;n1<n;n1++)
                if((m1==i)(n1==j))
                a1[m1][n1]=0 ;
            }
            k=0 ; 
            for(m1=0;m1<n;m1++)
            {
                for(n1=0;n1<n;n1++)
                {
                    if(a1[m1][n1]!=0)
                    {
                        x[k]=a1[m1][n1];
                        k++;
                    }
                }
            }
            k=0 ;
            for(m2=0;m2<n-1;m2++)
            {
                for(n2=0;n2<n-1;n2++)
                {
                    b[m2][n2]=x[k];
                    k++;
                }
            }
            /*對數組a1從新賦值*/
            for(m1=0;m1<n;m1++)
            {
                for(n1=0;n1<n;n1++)
                a1[m1][n1]=a[m1][n1];
            }
            y=pow(-1,i+j);
            A[i][j]=y*Dvalue(b,n-1);
        }
    }
    printf("A:/n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        printf("%f    ",A[j][i]);
        printf("/n");
    }
    getch();
    printf("1/A=%f/n  ",s);
 getch();
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        c[i][j]=0 ;
    }
 for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        c[i][j]=c[i][j]+A[i][j]*s ;
    }
    printf("要求的逆矩陣是:/n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
     &n


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑植县| 庄浪县| 钟祥市| 平邑县| 灵寿县| 荣昌县| 峡江县| 增城市| 科尔| 遵化市| 南宫市| 东城区| 灌云县| 东辽县| 盘锦市| 成安县| 蒙山县| 惠安县| 常州市| 饶阳县| 册亨县| 宁晋县| 宁武县| 纳雍县| 廊坊市| 五原县| 河西区| 绥化市| 桐庐县| 朝阳市| 高清| 桓仁| 竹溪县| 邵东县| 武鸣县| 台州市| 南靖县| 太仓市| 依安县| 封开县| 容城县|