| 查看: 2821 | 回復(fù): 17 | |||
wangjunyahit銀蟲 (初入文壇)
|
[求助]
求Matlab高手解決線性方程組的迭代求解問(wèn)題
|
||
|
遇到一個(gè)線性方程組Ax=b的求解問(wèn)題,使用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 ] |

新蟲 (初入文壇)
|
你學(xué)過(guò)數(shù)值分析沒(méi)有,這個(gè)可以用高斯迭代法和雅可比迭代法求解,不過(guò)雖然用迭代法,跑程序時(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(' 超過(guò)給定最大迭代次數(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 |

|
矩陣的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) 不過(guò)結(jié)果解還是一樣的。 |
鐵桿木蟲 (著名寫手)
方丈大師
鐵桿木蟲 (著名寫手)
方丈大師
銀蟲 (初入文壇)

銀蟲 (初入文壇)

銀蟲 (初入文壇)
|
謝謝您的解答,非常感激! 我之前也用過(guò)雅克比迭代和高斯賽德?tīng)柕M(jìn)行過(guò)求解另外一個(gè)類似的方程,但是沒(méi)有收斂,不知道是不是初值選擇的問(wèn)題,麻煩您幫忙看下!謝謝!方程如下: A=[-1.070906744447462E-017 244564571.598802 303866255.019473 303856255.019473 303756255.019473 ; 9.735515836938967E-017 -437040200.438244 546168396.621813 415770404.263350 0.000000000000000E+000 ; 1.947103215071310E-017 157778358.747585 -986775896.684545 473345946.492110 0.000000000000000E+000; 4.867758037678274E-018 34697270.0918581 136741245.043259 -1333413850.81819 473345946.492110 ; 5.841309406796348E-018 0.000000000000000E+000 0.000000000000000E+000 136741245.043259 -778102201.511583 ]; b=[ 104348331231.704 -2072871.66710357 -154296552.906917 -178403143.022063 -48501206.8009638 ]'; |

新蟲 (初入文壇)
|
這個(gè)用迭代法的話驗(yàn)證的話,沒(méi)有哪一種迭代法是通用的,驗(yàn)證的話,你就用列主元消去法吧,一定程度上能控制舍入誤差.下面且用列主元消去法求解,過(guò)程貼下面: 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 >> |

銀蟲 (初入文壇)

新蟲 (初入文壇)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 能源材料化學(xué)課題組招收碩士研究生8-10名 +3 | 脫穎而出 2026-03-16 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 070300化學(xué)319求調(diào)劑 +4 | 錦鯉0909 2026-03-17 | 4/200 |
|
|
[考研] 290求調(diào)劑 +3 | p asserby. 2026-03-15 | 4/200 |
|
|
[考研] 267一志愿南京工業(yè)大學(xué)0817化工求調(diào)劑 +6 | SUICHILD 2026-03-12 | 6/300 |
|
|
[考研] 0854控制工程 359求調(diào)劑 可跨專業(yè) +3 | 626776879 2026-03-14 | 9/450 |
|
|
[基金申請(qǐng)]
今年的國(guó)基金是打分制嗎?
50+3
|
zhanghaozhu 2026-03-14 | 3/150 |
|
|
[考研] 321求調(diào)劑 +5 | 大米飯! 2026-03-15 | 5/250 |
|
|
[考研] 070303一志愿西北大學(xué)學(xué)碩310找調(diào)劑 +5 | d如愿上岸 2026-03-12 | 8/400 |
|
|
[考研] 0703化學(xué)調(diào)劑 290分有科研經(jīng)歷,論文在投 +7 | 膩膩gk 2026-03-14 | 7/350 |
|
|
[考研] 0856求調(diào)劑 +3 | 劉夢(mèng)微 2026-03-15 | 3/150 |
|
|
[考研] 326求調(diào)劑 +3 | mlpqaz03 2026-03-15 | 3/150 |
|
|
[考研] 294求調(diào)劑 +3 | Zys010410@ 2026-03-13 | 4/200 |
|
|
[考研] 080500,材料學(xué)碩302分求調(diào)劑學(xué)校 +4 | 初識(shí)可樂(lè) 2026-03-14 | 5/250 |
|
|
[基金申請(qǐng)] 現(xiàn)在如何回避去年的某一個(gè)專家,不知道名字 +3 | zk200107 2026-03-12 | 6/300 |
|
|
[考研] 332求調(diào)劑 +3 | zjy101327 2026-03-11 | 6/300 |
|
|
[考研] 0703,333分求調(diào)劑 一志愿鄭州大學(xué)-物理化學(xué) +3 | 李魔女斗篷 2026-03-11 | 3/150 |
|
|
[考研] 304求調(diào)劑 +7 | 7712b 2026-03-13 | 7/350 |
|
|
[考研] 材料與化工085600調(diào)劑求老師收留 +9 | jiaanl 2026-03-11 | 9/450 |
|
|
[考研] 0703化學(xué)求調(diào)劑 +7 | 綠豆芹菜湯 2026-03-12 | 7/350 |
|
|
[考研] 求b區(qū)學(xué)校調(diào)劑 +3 | 周56 2026-03-11 | 3/150 |
|