| 5 | 1/1 | 返回列表 |
| 查看: 2841 | 回復: 10 | |||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
舒馬諾銀蟲 (初入文壇)
|
[求助]
帶平方根的(LLT)Cholesky算法分解對稱正定矩陣 c語言實現(xiàn)
|
||
|
新人,不懂規(guī)矩,見諒 大神們好,要求 1先判斷任意矩陣A是否為正定對稱矩陣,否則,返回輸入錯誤 2若輸入為正定對稱矩陣,則將其進行帶平方根的(LLT)Cholesky算法分解,即實現(xiàn)A=LL^T,其中L為下三角形矩陣。 大致就這意思,求助 定理 |
銀蟲 (初入文壇)
|
# include # include void main() { float m,A[9]; float L[6]; printf("請輸入矩陣: \n " ;scanf("%f %f %f\n%f %f %f\n%f %f %f\n",&A[0],&A[1],&A[2],&A[3],&A[4],&A[5],&A[6],&A[7],&A[8]); printf("請輸入允許誤差:m=" ;scanf("%f",&m); if A[0]>m&&(A[0]*A[4]-A[1]*A[3]>m)&&(A[6]*A[4]*A[2]+A[0]*A[7]*A[5]+A[1]*A[3]*A[8]-A[0]*A[4]*A[8]-A[1]*A[6]*A[5]-A[2]*A[3]*A[7]>m)&&(A[1]==A[3])&&(A[2]==A[6])&&(A[5]==A[7]) { L[0]=sqrt(A[0]); L[1]=A[3]/L[0]; L[3]=A[6]/L[0]; L[2]=sqrt(A[4]-L[1]*L[1]); L[4]=(A[7]-L[3]*L[1])/L[2]; L[5]=sqrt(A[8]-L[3]*L[3]-L[4]*L[4]); printf("所求矩陣為L=\n %f 0 0\n%f %f 0\n%f %f %f\n",L[0],L[1],L[2],L[3],L[4], L[5]); } else printf("輸入有誤,請檢查" ;} 調(diào)試運行: 1>.\Debug\shiyan.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. {_~0p'1a@'7v par 1>Build log was saved at "file://e:\360data\重要數(shù)據(jù)\桌面\shiyan\shiyan\Debug\BuildLog.htm" 1>shiyan - 1 error(s), 0 warning(s) ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 工程無法建立 失敗了,而且達不到針對任意階次矩陣的效果! |
鐵桿木蟲 (職業(yè)作家)

銀蟲 (初入文壇)
|
# include # include void main() { float m,A[9]; float L[6]; printf("請輸入矩陣: \n " ;scanf("%f %f %f\n%f %f %f\n%f %f %f\n",&A[0],&A[1],&A[2],&A[3],&A[4],&A[5],&A[6],&A[7],&A[8]); printf("請輸入??許誤差:m=" ;scanf("%f",&m); if A[0]>m&&(A[0]*A[4]-A[1]*A[3]>m)&&(A[6]*A[4]*A[2]+A[0]*A[7]*A[5]+A[1]*A[3]*A[8]-A[0]*A[4]*A[8]-A[1]*A[6]*A[5]-A[2]*A[3]*A[7]>m)&&(A[1]==A[3])&&(A[2]==A[6])&&(A[5]==A[7]) { L[0]=sqrt(A[0]); L[1]=A[3]/L[0]; L[3]=A[6]/L[0]; L[2]=sqrt(A[4]-L[1]*L[1]); L[4]=(A[7]-L[3]*L[1])/L[2]; L[5]=sqrt(A[8]-L[3]*L[3]-L[4]*L[4]); printf("所求矩陣為L=\n %f 0 0\n%f %f 0\n%f %f %f\n",L[0],L[1],L[2],L[3],L[4], L[5]); } else printf("輸入有誤,請檢查" ;} 調(diào)試??行: 1>.\Debug\shiyan.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. {_~0p'1a@'7v par 1>Build log was saved at "file://e:\360data\????數(shù)???\桌???\shiyan\shiyan\Debug\BuildLog.htm" 1>shiyan - 1 error(s), 0 warning(s) ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 工程無法建立 預期效果: 請輸入矩陣: 1 2 3 2 4 5 3 5 6 請輸入??許誤差:m=1e-6 輸入有誤,請檢查 請輸入矩陣: 5 2 -4 2 1 -2 -4 -2 5 請輸入??許誤差:m=1e-6 所求矩陣L= 2.236068 0 0 0.894427 0.4472136 0 -1.788854 -0.894427 1 我的算法??行??通過啊,而且根本未能實現(xiàn)針對任??階次的矩陣。。。求大神幫忙~ |
鐵桿木蟲 (職業(yè)作家)
|
matlab里面直接用root函數(shù)就可以了, 下面是我寫的c++的: // 定義Matrix類(略) // m*n階0矩陣 void Matrix::zeros(int m,int n,double** a){ for(int i=0;i } } } // n為矩陣的階 void Matrix::root(int n,double** A,double** L){ zeros(n,n,L); for(int i=0;i for(int k=0;k } L[j]=(A[j]-sum)/L[j][j]; } double sum=0; for(int k=0;k sum+=L[k]*L[k]; } L=sqrt(A-sum);// 顯然 A-sum<0時不是正定矩陣 } } |

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 334分 一志愿武理-080500 材料求調(diào)劑 +10 | 李李不服輸 2026-03-25 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 309求調(diào)劑 +17 | 誰不是少年 2026-03-29 | 17/850 |
|
|
[考研] 省雙一流重點一本大學招收調(diào)劑 +3 | wwwwffffff 2026-03-31 | 5/250 |
|
|
[考研] 求調(diào)劑推薦 材料 304 +18 | 荷包蛋hyj 2026-03-26 | 18/900 |
|
|
[考研] 環(huán)境工程297分求調(diào)劑一志愿杭高院 +6 | GENJIOW 2026-03-31 | 6/300 |
|
|
[考研] 本2一志愿C9-333分,材料科學與工程,求調(diào)劑 +9 | 升升不降 2026-03-31 | 9/450 |
|
|
[考研] 085601英二數(shù)二求調(diào)劑 總分325 +4 | 余航航 2026-03-31 | 4/200 |
|
|
[考研] 生物學296求調(diào)劑 +8 | 湯圓包 2026-03-29 | 12/600 |
|
|
[考研] 311求調(diào)劑 +9 | 藍月亮亮 2026-03-30 | 9/450 |
|
|
[考研] 289求調(diào)劑 +6 | BrightLL 2026-03-29 | 6/300 |
|
|
[考研] 0817化工學碩調(diào)劑 +7 | 努力上岸中! 2026-03-31 | 7/350 |
|
|
[考研] 08工科求調(diào)劑286 +5 | tgs_001 2026-03-28 | 5/250 |
|
|
[考研] 材料與化工調(diào)劑一志愿大連海事085600,349 +6 | 吃的不少 2026-03-30 | 6/300 |
|
|
[考研] 食品工程專碩一志愿中海洋309求調(diào)劑 +5 | 小張zxy張 2026-03-26 | 10/500 |
|
|
[考研] 一志愿華中師范化學332分求調(diào)劑 +3 | Lyy930824@ 2026-03-29 | 3/150 |
|
|
[考研] 332求調(diào)劑 +14 | 032500 2026-03-25 | 14/700 |
|
|
[考研] 材料化工340求調(diào)劑 +3 | jhx777 2026-03-30 | 3/150 |
|
|
[考研] 求調(diào)劑 +7 | 青春裁為三截 2026-03-29 | 7/350 |
|
|
[考研] 296求調(diào)劑 +10 | 彼岸t 2026-03-29 | 10/500 |
|
|
[考研] 299求調(diào)劑 +10 | 15188958825 2026-03-25 | 10/500 |
|