| 5 | 1/1 | 返回列表 |
| 查看: 2856 | 回復(fù): 17 | |||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | |||
wangjunyahit銀蟲 (初入文壇)
|
[求助]
求Matlab高手解決線性方程組的迭代求解問題
|
||
|
遇到一個(gè)線性方程組Ax=b的求解問題,使用Matlab直接求解但不確定結(jié)果是否正確, 想使用迭代解法求解驗(yàn)證結(jié)果,但苦于找不到合適的迭代解法和程序,希望各位大神 給予幫助,感激涕零。! 方程組是這樣的: A=[-1.2e-21,1.4e6,1.4e6,-1.4e6,1.3e6; 8.9e-22,-1.4e6,4.9e3,3.8e3,0; 1.8e-22,1.4e3,-1.4e6,4.3e3,0; 4.4e-23,3.2e2,1.2e3,-5.1e6,4.3e3; 5.3e-23,0,0,1.3e3,-2.3e6] b=[0;-1.8e-4;-1.3e-2;-1.5e-2;-4.0e-3] 直接求解如下: x=A\b; x=[ 1.029393177754837e+20 6.565808888911404e-08 2.259822851544940e-08 3.842185487752932e-09 4.113382036189007e-09] rcond(A)=1.694258513618419e-29;矩陣A可逆的條件數(shù)估值接近0,矩陣A條件不好,得到的解有誤差 希望各位大神 給予幫助,感激涕零!! ~EZ9ND[(A@F3IUUY9EJVQ4C.jpg [ Last edited by wangjunyahit on 2012-11-24 at 16:10 ] |

新蟲 (初入文壇)
|
這個(gè)用迭代法的話驗(yàn)證的話,沒有哪一種迭代法是通用的,驗(yàn)證的話,你就用列主元消去法吧,一定程度上能控制舍入誤差.下面且用列主元消去法求解,過程貼下面: function gauss(A,b,delta) %解線性方程組 B=[A b']; [B,n]=disha(B); X=A\b'; for k=1:n if abs(B(k,k)) return end end x=(B(:,1:n))\B(:,n+1); disp('方程有有唯一解其解為:'); disp('i x(i)'); for i=1:n disp(sprintf('%d %.17e',i,x(i))); end function [A hs]=disha(A) [hs,ls]=size(A); for i=1:hs-1 s=A(:,i); [m,row]=max(abs(s(i:hs))); if A(i,i)~=m s1=A(i, ;A(i, =A(row+i-1, ;A(row+i-1, =s1;end for j=i:hs-1 % if A(j+1,i)==0 % continue % end % r=A(i,i)/A(j+1,i); %A(j+1, =A(j+1, *r-A(i, ;r=A(j+1,i)/A(i,i); A(j+1, =A(i, *r-A(j+1, ;end end end disp('逆矩陣求解結(jié)果: '); for k=1:1:5 disp(sprintf('%d %.17e',k,X(k)')); end end >> gauss(A,b,10^(-18)) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.382649e-026. > In gauss at 5 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 6.691293e-026. > In gauss at 12 方程有有唯一解其解為: i x(i) 1 8.90763948846464080e+026 2 3.22058008969693620e+002 3 8.07073018970861680e+001 4 2.39314314743592430e+001 5 1.09550426143824530e+001 逆矩陣求解結(jié)果: 1 8.90763948846463800e+026 2 3.22058008969693560e+002 3 8.07073018970861540e+001 4 2.39314314743592430e+001 5 1.09550426143824530e+001 >> |

|
矩陣的rcond顯然可以改好啊。例如將第一列乘以4e27。 >> Anew = A; Anew(:,1) = A(:,1) *4e27;rcond(Anew) 0.0103 >>x_1= Anew\b; x_1_real = x_1; x_1_real(1) = 4e27 * x_1(1) 不過結(jié)果解還是一樣的。 |
新蟲 (初入文壇)
|
你學(xué)過數(shù)值分析沒有,這個(gè)可以用高斯迭代法和雅可比迭代法求解,不過雖然用迭代法,跑程序時(shí)還是有警告,可能求解還是不是非?煽,我求解了一個(gè),下面我把高斯迭代法那個(gè)我求解用的程序和運(yùn)行結(jié)果貼在下面: function gsdd(A,b,x0,fs,wucha,ddcs) D=diag(diag(A)); U=-triu(A,1); L=-tril(A,-1); ljzx=inv(A)*b'; if det(D)==0 disp('對(duì)角矩陣D奇異,迭代不能實(shí)現(xiàn)'); return end B=(D-L)\U;f=(D-L)\b'; for k=1:ddcs x1=B*x0'+f; epsilon=norm(x1-x0',fs); wcx=norm(x1-x0',fs)/(norm(x1,fs)+eps); x0=x1'; if (epsilon end end if (epsilon>wucha)||(wcx>wucha)||k==ddcs disp(' 超過給定最大迭代次數(shù),可能不收斂 ') return end disp('迭代次數(shù):'); k disp('迭代結(jié)果:'); x=x0' disp('逆矩陣求解結(jié)果:'); x=ljzx end >> A=[-1.2e-21,1.4e6,1.4e6,-1.4e6,1.3e6; 8.9e-22,-1.4e6,4.9e3,3.8e3,0; 1.8e-22,1.4e3,-1.4e6,4.3e3,0; 4.4e-23,3.2e2,1.2e3,-5.1e6,4.3e3; 5.3e-23,0,0,1.3e3,-2.3e6]; >> b=[0;-1.8e-4;-1.3e-2;-1.5e-2;-4.0e-3]'; >> x0=[1 1 1 1 1]; >> gsdd(A,b,x0,1,10^(-15),1000) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.694259e-029. > In gsdd at 5 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.352941e-028. > In gsdd at 10 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.352941e-028. > In gsdd at 10 迭代次數(shù): k = 527 迭代結(jié)果: x = 1.029393177754839e+020 6.565808888911417e-008 2.259822851544943e-008 3.842185487752933e-009 4.113382036189012e-009 逆矩陣求解結(jié)果: x = 1.029393177754837e+020 6.565808888911401e-008 2.259822851544940e-008 3.842185487752931e-009 4.113382036189006e-009 |

銀蟲 (初入文壇)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 農(nóng)學(xué)考研求調(diào)劑 +3 | dkdkxm 2026-04-01 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 275學(xué)碩081000服從調(diào)劑到其他專業(yè),保不住本專業(yè)了 +7 | 一只小小水牛 2026-04-02 | 8/400 |
|
|
[考研] 一志愿同濟(jì)大學(xué)323分(080500)求調(diào)劑 +6 | yikeniu 2026-04-01 | 6/300 |
|
|
[考研] 290求調(diào)劑 +3 | 1314捧花 2026-04-02 | 3/150 |
|
|
[考研] 材料專業(yè)求調(diào)劑 +10 | 月月鳥木 2026-04-01 | 10/500 |
|
|
[考研] 324求調(diào)劑 +5 | 想上學(xué)求調(diào) 2026-04-01 | 6/300 |
|
|
[考研] 材料調(diào)劑 +12 | 一樣YWY 2026-04-01 | 12/600 |
|
|
[考研] 292求調(diào)劑 +17 | 木蟲er12138 2026-04-01 | 17/850 |
|
|
[考研] 求調(diào)劑0703 +5 | 周嘉堯 2026-03-31 | 8/400 |
|
|
[考研] 材料與化工(0856)304求B區(qū)調(diào)劑 +8 | 邱gl 2026-03-30 | 16/800 |
|
|
[考研] 070300求調(diào)劑306分 +5 | 26要上岸 2026-03-27 | 5/250 |
|
|
[考研] 0856材料化工調(diào)劑 總分330 +18 | zhubinhao 2026-03-27 | 18/900 |
|
|
[考研] 352分-085602-一志愿985 +6 | 海納百川Ly 2026-03-29 | 6/300 |
|
|
[考研] 調(diào)劑求院校招收 +7 | 鶴鯨鴿 2026-03-28 | 7/350 |
|
|
[考研] 276求調(diào)劑 +3 | 趙久華 2026-03-29 | 3/150 |
|
|
[考研] 295求調(diào)劑 +5 | wei-5 2026-03-26 | 5/250 |
|
|
[考研] 356求調(diào)劑 +4 | gysy?s?a 2026-03-28 | 4/200 |
|
|
[考研] 295求調(diào)劑 +5 | 1428151015 2026-03-27 | 6/300 |
|
|
[考研] 一志愿吉大071010,316分求調(diào)劑 +3 | xgbiknn 2026-03-27 | 3/150 |
|
|
[考研] 341求調(diào)劑 +7 | 青檸檬1 2026-03-26 | 7/350 |
|