| 5 | 1/1 | 返回列表 |
| 查看: 2838 | 回復(fù): 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ù)???\桌???\shiyan\shiyan\Debug\BuildLog.htm" 1>shiyan - 1 error(s), 0 warning(s) ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 工程無法建立 預(yù)期效果: 請輸入矩陣: 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è)作家)

銀蟲 (初入文壇)
|
# 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è)作家)
|
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ā)表 | |
|---|---|---|---|---|
|
[考研]
|
Gymno 2026-03-30 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 環(huán)境工程 085701,267求調(diào)劑 +8 | minht 2026-03-29 | 8/400 |
|
|
[考研] 材料求調(diào)劑 一志愿哈工大總分298分,前三科223分 +10 | dongfang59 2026-03-27 | 10/500 |
|
|
[有機交流]
10+3
|
kaobao456 2026-03-29 | 4/200 |
|
|
[考研] 297 地理學(xué)070500 復(fù)試求調(diào)劑 +3 | 小圓圈圈ooo 2026-03-30 | 3/150 |
|
|
[考研] 317求調(diào)劑 +8 | 十閑wx 2026-03-24 | 8/400 |
|
|
[考研] 311求調(diào)劑 +7 | 藍月亮亮 2026-03-30 | 7/350 |
|
|
[考研] 291求調(diào)劑 +8 | HanBeiNingZC 2026-03-24 | 8/400 |
|
|
[考研] 071010 323 分求調(diào)劑 +3 | Baekzhy 2026-03-27 | 3/150 |
|
|
[考研] 0703化學(xué) +14 | 妮妮ninicgb 2026-03-27 | 14/700 |
|
|
[基金申請] 面上5B能上會嗎? +7 | redcom 2026-03-29 | 7/350 |
|
|
[考研] 求調(diào)劑 +4 | QiMing7 2026-03-25 | 5/250 |
|
|
[考研] 070305高分子化學(xué)與物理 304分求調(diào)劑 +12 | c297914 2026-03-28 | 12/600 |
|
|
[考研] 298求調(diào)劑 +3 | 種圣賜 2026-03-29 | 3/150 |
|
|
[考研] 356求調(diào)劑 +3 | gysy?s?a 2026-03-28 | 3/150 |
|
|
[考研] 315求調(diào)劑 +4 | akie... 2026-03-28 | 5/250 |
|
|
[考研] 311(085601)求調(diào)劑 +4 | liziyeyeye 2026-03-28 | 4/200 |
|
|
[考研] 286求調(diào)劑 +12 | PolarBear11 2026-03-26 | 12/600 |
|
|
[考研] 張芳銘-中國農(nóng)業(yè)大學(xué)-環(huán)境工程專碩-298 +4 | 手機用戶 2026-03-26 | 4/200 |
|
|
[考研] 334分 一志愿武理-080500 材料求調(diào)劑 +4 | 李李不服輸 2026-03-25 | 4/200 |
|