• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            華劍緣
            一切都在這個(gè)過(guò)程中獲得,將那些目標(biāo)埋藏于心中
            posts - 19,comments - 20,trackbacks - 0
            /////////////////////////////////////// /
            //?????????????????????????????????????//
            //????????????????????????????????????//
            //數(shù)值分析??直接三角分解法求方程組????//
            //????????????????????????????????????//
            //??在VC2005下編譯通過(guò),由于VC6.0的???//
            //???不標(biāo)準(zhǔn)會(huì)有錯(cuò)誤???????????????????//
            //????????????????????????????????????//
            //???2006.5.30???v0.1?????????????????//
            ////////////////////////////////////////

            #include?
            "iostream"
            using?namespace?std;

            class?Matrix
            {
            private:
            ?
            double**?A;??????//矩陣A
            ?double?*b;???????//向量b
            public:
            ?
            int?size;
            ?Matrix(
            int?);
            ?
            ~Matrix();
            friend?
            double*?Dooli(Matrix&?);
            ?
            void?Input();
            ?
            void?Disp();

            }
            ;

            Matrix::Matrix(
            int?x)
            {
            ?size
            =x;

            ?
            //為向量b分配空間并初始化為0
            ?b=new?double?[x];
            ?
            for(int?j=0;j<x;j++)
            ??b[j]
            =0;

            ?
            //為向量A分配空間并初始化為0
            ?A=new?double*?[x];
            ?
            for(int?i=0;i<x;i++)
            ??A[i]
            =new?double?[x];
            ?
            for(int?m=0;m<x;m++)
            ??
            for(int?n=0;n<x;n++)
            ???A[m][n]
            =0;
            }


            Matrix::
            ~Matrix()
            {
            ????cout
            <<"正在析構(gòu)中~~~~"<<endl;
            ????delete?b;
            ????
            for(int?i=0;i<size;i++)
            ????????delete?A[i];
            ????delete?A;
            }


            void?Matrix::Disp()
            {
            ?
            for(int?i=0;i<size;i++)
            ?
            {
            ??
            for(int?j=0;j<size;j++)
            ???cout
            <<A[i][j]<<"??";
            ??cout
            <<endl;
            ?}

            }


            void?Matrix::Input()
            {
            ?cout
            <<"請(qǐng)輸入A:"<<endl;
            ?
            for(int?i=0;i<size;i++)
            ??
            for(int?j=0;j<size;j++){
            ???cout
            <<""<<i+1<<""<<""<<j+1<<"列:"<<endl;
            ??cin
            >>A[i][j];
            ??}

            ???cout
            <<"請(qǐng)輸入b:"<<endl;
            ?
            for(int?j=0;j<size;j++){
            ??cout
            <<""<<j+1<<"個(gè):"<<endl;
            ???cin
            >>b[j];
            ?}

            ?
            }

            ?
            double*?Dooli(Matrix&?A)
            {
            ?
            double?*Xn=new?double?[A.size];
            ?Matrix?L(A.size),U(A.size);

            ?
            //分別求得U,L的第一行與第一列
            ???for(int?i=0;i<A.size;i++)
            ??????U.A[
            0][i]=A.A[0][i];
            ???
            for(int?j=1;j<A.size;j++)
            ??????L.A[j][
            0]=A.A[j][0]/U.A[0][0];

            //分別求得U,L的第r行,第r列
            ?????double?temp1=0,temp2=0;
            ?
            for(int?r=1;r<A.size;r++){
            ?????
            //U
            ?????for(int?i=r;i<A.size;i++){
            ?????????
            for(int?k=0;k<r-1;k++)
            ????????????temp1
            =temp1+L.A[r][k]*U.A[k][i];?
            ????????????U.A[r][i]
            =A.A[r][i]-temp1;
            ?????}

            ?????
            //L
            ?????for(int?i=r+1;i<A.size;i++){
            ??????????
            for(int?k=0;k<r-1;k++)
            ????????????temp2
            =temp2+L.A[i][k]*U.A[k][r];
            ?????????????L.A[i][r]
            =(A.A[i][r]-temp2)/U.A[r][r];
            ?????}

            ?}

            ?cout
            <<"計(jì)算U得:"<<endl;
            ?U.Disp();
            ?cout
            <<"計(jì)算L的:"<<endl;
            ?L.Disp();
            ?
            ?
            double?*Y=new?double?[A.size];

            ?Y[
            0]=A.b[0];
            ?
            for(int?i=1;i<A.size;i++?){
            ?????
            double?temp3=0;
            ?????
            for(int?k=0;k<i-1;k++)
            ?????????temp3
            =temp3+L.A[i][k]*Y[k];
            ?????Y[i]
            =A.b[i]-temp3;
            ?}


            ?Xn[A.size
            -1]=Y[A.size-1]/U.A[A.size-1][A.size-1];
            ?
            for(int?i=A.size-1;i>=0;i--){
            ?????
            double?temp4=0;
            ?????
            for(int?k=i+1;k<A.size;k++)
            ?????????temp4
            =temp4+U.A[i][k]*Xn[k];
            ?????Xn[i]
            =(Y[i]-temp4)/U.A[i][i];
            ?}

            ?
            return?Xn;
            }

            ?
            int?main()
            {
            ?Matrix?B(
            4);
            ?B.Input();
            ?
            double?*X;
            ?X
            =Dooli(B);
            ?cout
            <<"~~~~解得:"<<endl;
            ?
            for(int?i=0;i<B.size;i++)
            ?????cout
            <<"X["<<i<<"]:"<<X[i]<<"?";
            ?cout
            <<endl<<"呵呵呵呵呵";
            ?
            return?0;
            }


            試驗(yàn)總結(jié):將高斯消去法改寫為緊湊形式,可以直接從矩陣 A 的元素的導(dǎo)計(jì)算 L U 元素的遞推公式,而不需任何中間步驟,一旦實(shí)現(xiàn)了矩陣 A U L 分解那么就等價(jià)于求解兩個(gè)三角形方程組。

            ? 注意: 編成語(yǔ)言中的數(shù)組以 0’ 為首元素,數(shù)組的一位偏移最容易出錯(cuò);

            ???????????? 注意變量的作用域;

            posted on 2006-05-30 21:22 華劍緣 閱讀(1915) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            91久久九九无码成人网站| 狠狠色婷婷久久综合频道日韩 | 国产精品热久久毛片| 久久AAAA片一区二区| 国产精品99久久久久久宅男小说| 亚洲欧美日韩中文久久| 久久丫精品国产亚洲av不卡| 夜夜亚洲天天久久| 久久精品国产乱子伦| 99久久精品九九亚洲精品| 免费久久人人爽人人爽av| 一本大道加勒比久久综合| 无码AV波多野结衣久久| 午夜视频久久久久一区| 久久精品国产久精国产| 伊人色综合久久天天人手人婷| 91久久九九无码成人网站| 国产精品99久久久久久人| 亚洲第一极品精品无码久久| 久久人妻少妇嫩草AV无码蜜桃| 996久久国产精品线观看| 久久妇女高潮几次MBA| 午夜精品久久久久9999高清| 99久久精品费精品国产| 久久国产精品-久久精品| 亚洲人成网亚洲欧洲无码久久| 亚洲伊人久久成综合人影院 | 91精品国产乱码久久久久久| 97久久婷婷五月综合色d啪蜜芽| 午夜精品久久久内射近拍高清| 国产精品久久久天天影视香蕉| 久久免费美女视频| 久久久久久a亚洲欧洲aⅴ| 久久婷婷五月综合色奶水99啪| 亚洲国产一成人久久精品| 精品久久久久久无码不卡| 国产成人综合久久精品红| 99久久精品免费看国产一区二区三区 | 久久精品a亚洲国产v高清不卡| 午夜精品久久久久久久| 亚洲国产一成人久久精品|