版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算方法上機(jī)報(bào)告計(jì)算方法上機(jī)報(bào)告姓 名:學(xué) 號(hào):班 級(jí):上課班級(jí):計(jì)算方法上機(jī)報(bào)告說明: 本次上機(jī)實(shí)驗(yàn)使用的編程語言是Matlab語言,編譯環(huán)境為MATLAB 7.11.0,運(yùn)行平臺(tái)為Windows 7。1. 對(duì)以下和式計(jì)算:,要求: 若只需保留11個(gè)有效數(shù)字,該如何進(jìn)行計(jì)算; 若要保留30個(gè)有效數(shù)字,則又將如何進(jìn)行計(jì)算;(1) 算法思想1、根據(jù)精度要求估計(jì)所加的項(xiàng)數(shù),可以使用后驗(yàn)誤差估計(jì),通項(xiàng)為: ;2、為了保證計(jì)算結(jié)果的準(zhǔn)確性,寫程序時(shí),從后向前計(jì)算;3、使用Matlab時(shí),可以使用以下函數(shù)控制位數(shù): digits(位數(shù))或vpa(變量,精度為數(shù))(2)算法結(jié)構(gòu)1.;2.for if en
2、d;3.for (3)Matlab源程序clear; %清除工作空間變量clc; %清除命令窗口命令m=input('請(qǐng)輸入有效數(shù)字的位數(shù)m='); %輸入有效數(shù)字的位數(shù)s=0; for n=0:50 t=(1/16n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6); if t<=10(-m) %判斷通項(xiàng)與精度的關(guān)系 break; endend;fprintf('需要將n值加到n=%dn',n-1); %需要將n值加到的數(shù)值for i=n-1:-1:0 t=(1/16i)*(4/(8*i+1)-2/(8*i+4)-1/(
3、8*i+5)-1/(8*i+6); s=s+t; %求和運(yùn)算ends=vpa(s,m) %控制s的精度 (4)結(jié)果與分析 當(dāng)保留11位有效數(shù)字時(shí),需要將n值加到n=7, s =3.1415926536; 當(dāng)保留30位有效數(shù)字時(shí),需要將n值加到n=22, s =3.14159265358979323846264338328。 通過上面的實(shí)驗(yàn)結(jié)果可以看出,通過從后往前計(jì)算,這種算法很好的保證了計(jì)算結(jié)果要求保留的準(zhǔn)確數(shù)字位數(shù)的要求。2. 某通信公司在一次施工中,需要在水面寬度為20米的河溝底部沿直線走向鋪設(shè)一條溝底光纜。在鋪設(shè)光纜之前需要對(duì)溝底的地形進(jìn)行初步探測(cè),從而估計(jì)所需光纜的長(zhǎng)度,為工程預(yù)算提
4、供依據(jù)。已探測(cè)到一組等分點(diǎn)位置的深度數(shù)據(jù)(單位:米)如下表所示:分點(diǎn)0123456深度9.018.967.967.978.029.0510.13分點(diǎn)78910111213深度11.1812.2613.2813.3212.6111.2910.22分點(diǎn)14151617181920深度9.157.907.958.869.8110.8010.93 請(qǐng)用合適的曲線擬合所測(cè)數(shù)據(jù)點(diǎn); 預(yù)測(cè)所需光纜長(zhǎng)度的近似值,作出鋪設(shè)河底光纜的曲線圖;(1)算法思想 如果使用多項(xiàng)式差值,則由于龍格現(xiàn)象,誤差較大,因此,用相對(duì)較少的插值數(shù)據(jù)點(diǎn)作插值,可以避免大的誤差,但是如果又希望將所得數(shù)據(jù)點(diǎn)都用上,且所用數(shù)據(jù)點(diǎn)越多越好,可
5、以采用分段插值方式,即用分段多項(xiàng)式代替單個(gè)多項(xiàng)式作插值。分段多項(xiàng)式是由一些在相互連接的區(qū)間上的不同多項(xiàng)式連接而成的一條連續(xù)曲線,其中三次樣條插值方法是一種具有較好“光滑性”的分段插值方法。在本題中,假設(shè)所鋪設(shè)的光纜足夠柔軟,在鋪設(shè)過程中光纜觸地走勢(shì)光滑,緊貼地面,并且忽略水流對(duì)光纜的沖擊。海底光纜線的長(zhǎng)度預(yù)測(cè)模型如下所示,光纜從A點(diǎn)鋪至B點(diǎn),在某點(diǎn)處的深度為。海底光纜線的長(zhǎng)度預(yù)測(cè)模型計(jì)算光纜長(zhǎng)度時(shí),用如下公式:(2)算法結(jié)構(gòu)1.For 1.1 2.For 2.1 For 2.1.1 3.4.For 4.1 4.2 4.3 5.6.7.獲取M的矩陣元素個(gè)數(shù),存入m8.For 8.1 8.2 8.
6、3 9.10.For 10.1 11.獲取x的元素個(gè)數(shù)存入s12.13.For 13.1 if then ;break else 14.(3)Matlab源程序clear;clc; x=0:1:20; %產(chǎn)生從0到20含21個(gè)等分點(diǎn)的數(shù)組X=0:0.2:20;y=9.01,8.96,7.96,7.97,8.02,9.05,10.13,11.18,12.26,13.28,13.32,12.61,11.29,10.22,9.15,7.90,7.95,8.86,9.81,10.80,10.93; %等分點(diǎn)位置的深度數(shù)據(jù)n=length(x); %等分點(diǎn)的數(shù)目N=length(X);% 求三次樣條插值
7、函數(shù)s(x) M=y; for k=2:3; %計(jì)算二階差商并存放在M中 for i=n:-1:k; M(i)=(M(i)-M(i-1)/(x(i)-x(i-k+1); endendh(1)=x(2)-x(1); %計(jì)算三對(duì)角陣系數(shù)a,b,c及右端向量dfor i=2:n-1; h(i)=x(i+1)-x(i); c(i)=h(i)/(h(i)+h(i-1); a(i)=1-c(i); b(i)=2; d(i)=6*M(i+1);end M(1)=0; %選擇自然邊界條件M(n)=0;b(1)=2;b(n)=2;c(1)=0;a(n)=0; d(1)=0; d(n)=0; u(1)=b(1);
8、 %對(duì)三對(duì)角陣進(jìn)行LU分解y1(1)=d(1);for k=2:n; l(k)=a(k)/u(k-1); u(k)=b(k)-l(k)*c(k-1); y1(k)=d(k)-l(k)*y1(k-1);endM(n)=y1(n)/u(n); %追趕法求解樣條參數(shù)M(i)for k=n-1:-1:1; M(k)=(y1(k)-c(k)*M(k+1)/u(k);ends=zeros(1,N);for m=1:N; k=1; for i=2:n-1 if X(m)<=x(i); k=i-1; break; else k=i; endend H=x(k+1)-x(k); %在各區(qū)間用三次樣條插值函
9、數(shù)計(jì)算X點(diǎn)處的值 x1=x(k+1)-X(m); x2=X(m)-x(k); s(m)=(M(k)*(x13)/6+M(k+1)*(x23)/6+(y(k)-(M(k)*(H2)/6)*x1+(y(k+1)-(M(k+1)*(H2)/6)*x2)/H;end% 計(jì)算所需光纜長(zhǎng)度L=0; %計(jì)算所需光纜長(zhǎng)度for i=2:N L=L+sqrt(X(i)-X(i-1)2+(s(i)-s(i-1)2);enddisp('所需光纜長(zhǎng)度為 L=');disp(L);figureplot(x,y,'*',X,s,'-') %繪制鋪設(shè)河底光纜的曲線圖xlabe
10、l('位置','fontsize',16); %標(biāo)注坐標(biāo)軸含義ylabel('深度/m','fontsize',16);title('鋪設(shè)河底光纜的曲線圖','fontsize',16);grid;(4)結(jié)果與分析 鋪設(shè)海底光纜的曲線圖如下圖所示: 仿真結(jié)果表明,運(yùn)用分段三次樣條插值所得的擬合曲線能較準(zhǔn)確地反映鋪設(shè)光纜的走勢(shì)圖,計(jì)算出所需光纜的長(zhǎng)度為 L=26.4844m。3. 假定某天的氣溫變化記錄如下表所示,試用數(shù)據(jù)擬合的方法找出這一天的氣溫變化的規(guī)律;試計(jì)算這一天的平均氣溫,并試估計(jì)誤差。時(shí)刻
11、0123456789101112平均氣溫15141414141516182020232528時(shí)刻131415161718192021222324平均氣溫313431292725242220181716(1)算法思想在本題中,數(shù)據(jù)點(diǎn)的數(shù)目較多。當(dāng)數(shù)據(jù)點(diǎn)的數(shù)目很多時(shí),用“多項(xiàng)式插值”方法做數(shù)據(jù)近似要用較高次的多項(xiàng)式,這不僅給計(jì)算帶來困難,更主要的缺點(diǎn)是誤差很大。用“插值樣條函數(shù)”做數(shù)據(jù)近似,雖然有很好的數(shù)值性質(zhì),且計(jì)算量也不大,但存放參數(shù)的量很大,且沒有一個(gè)統(tǒng)一的數(shù)學(xué)公式來表示,也帶來了一些不便。另一方面,在有的實(shí)際問題中,用插值方法并不合適。當(dāng)數(shù)據(jù)點(diǎn)的數(shù)目很大時(shí),要求通過所有數(shù)據(jù)點(diǎn),可能會(huì)失去原
12、數(shù)據(jù)所表示的規(guī)律。如果數(shù)據(jù)點(diǎn)是由測(cè)量而來的,必然帶有誤差,插值法要求準(zhǔn)確通過這些不準(zhǔn)確的數(shù)據(jù)點(diǎn)是不合適的。在這種情況下,不用插值標(biāo)準(zhǔn)而用其他近似標(biāo)準(zhǔn)更加合理。通常情況下,是選取使最小,這就是最小二乘近似問題。在本題中,采用“最小二乘法”找出這一天的氣溫變化的規(guī)律,使用二次函數(shù)、三次函數(shù)、四次函數(shù)以及指數(shù)型函數(shù),計(jì)算相應(yīng)的系數(shù),估算誤差,并作圖比較各種函數(shù)之間的區(qū)別。(2)算法結(jié)構(gòu) 本算法用正交化方法求數(shù)據(jù)的最小二乘近似。假定數(shù)據(jù)以用來生成了,并將作為其最后一列(第列)存放。結(jié)果在中,是誤差。I、使用二次函數(shù)、三次函數(shù)、四次函數(shù)擬合時(shí)1.將“時(shí)刻值”存入,數(shù)據(jù)點(diǎn)的個(gè)數(shù)存入2.輸入擬合多項(xiàng)式函數(shù)的
13、最高項(xiàng)次數(shù),則擬合多項(xiàng)式函數(shù)為 , 根據(jù)給定數(shù)據(jù)點(diǎn)確定For For 2.1 2.2 3.For 3.1 形成矩陣3.1.1 3.1.2 3.1.3 For 3.1.3.1 3.1.4 3.2 變換到3.2.1 For 3.2.2 3.2.3 For 3.2.3.1 4. 解三角方程 4.1 4.2For 4.2.1 5.計(jì)算誤差 II、使用指數(shù)函數(shù)擬合時(shí)現(xiàn)將指數(shù)函數(shù)進(jìn)行變形:將,代入得: 對(duì)上式左右取對(duì)數(shù)得: 令則可得多項(xiàng)式: (3)Matlab源程序clear; %清除工作空間變量clc; %清除命令窗口命令x=0:24; %將時(shí)刻值存入數(shù)組y=15,14,14,14,14,15,16,1
14、8,20,20,23,25,28,31,34,31,29,27,25,24,22,20,18,17,16;,m=size(x); %將數(shù)據(jù)點(diǎn)的個(gè)數(shù)存入mT=sum(y(1:m)/m;fprintf('一天的平均氣溫為T=%fn',T); %求一天的平均氣溫 % 二次、三次、四次函數(shù)的最小二乘近似h=input('請(qǐng)輸入擬合多項(xiàng)式的最高項(xiàng)次數(shù)='); %根據(jù)給定數(shù)據(jù)點(diǎn)生成矩陣Gn=h+1;G=;for j=0:(n-1) g=x.j; %g(x)按列排列 G=vertcat(G,g); %g垂直連接GendG=G' %轉(zhuǎn)置得到矩陣Gfor i=1:m %將
15、數(shù)據(jù)y作為G的最后一列(n+1列) G(i,n+1)=y(i);endG; for k=1:n %形成矩陣Q(k) if G(k,k)>0; sgn=1; elseif G(k,k)=0; sgn=0; else sgn=-1; end sgm=-sgn*sqrt(sum(G(k:m,k).2); w=zeros(1,n); w(k)=G(k,k)-sgm; for j=k+1:m w(j)=G(j,k); end bt=sgm*w(k); G(k,k)=sgm; %變換Gk-1到Gk for j=k+1:n+1 t=sum(w(k:m)*G(k:m,j)/bt; for i=k:m;
16、G(i,j)=G(i,j)+t*w(i); end endend A (n)=G(n,n+1)/G(n,n); %解三角方程求系數(shù)Afor i=n-1:-1:1 A (i)=(G(i,n+1)-sum(G(i,i+1:n).*A (i+1:n)/G(i,i);end e=sum(G(n+1:m,n+1).2); %計(jì)算誤差efprintf('%d次函數(shù)的系數(shù)是:',h); %輸出系數(shù)a及誤差edisp(A);fprintf('使用%d次函數(shù)擬合的誤差是%f:',h,e);t=0:0.05:24;A=fliplr(A); %將系數(shù)數(shù)組左右翻轉(zhuǎn) Y=poly2sym
17、(A); %將系數(shù)數(shù)組轉(zhuǎn)化為多項(xiàng)式subs(Y,'x',t);Y=double(ans);figure(1)plot(x,y,'k*',t,Y,'r-'); %繪制擬合多項(xiàng)式函數(shù)圖形xlabel('時(shí)刻'); %標(biāo)注坐標(biāo)軸含義ylabel('平均氣溫');title(num2str(n-1),'次函數(shù)的最小二乘曲線');grid;% 指數(shù)函數(shù)的最小二乘近似yy=log(y);n=3;G=;GG=;for j=0:(n-1) g=x.j; %g(x)按列排列 G=vertcat(G,g); %g垂直連
18、接G gg=t.j; %g(x)按列排列 GG=vertcat(GG,gg); %g垂直連接GendG=G' %轉(zhuǎn)置得到矩陣Gfor i=1:m %將數(shù)據(jù)y作為G的最后一列(n+1列) G(i,n+1)=yy(i);endG; for k=1:n %形成矩陣Q(k) if G(k,k)>0; sgn=1; elseif G(k,k)=0; sgn=0; else sgn=-1; end sgm=-sgn*sqrt(sum(G(k:m,k).2); w=zeros(1,n); w(k)=G(k,k)-sgm; for j=k+1:m w(j)=G(j,k); end bt=sgm*
19、w(k); G(k,k)=sgm; %變換Gk-1到Gk for j=k+1:n+1 t=sum(w(k:m)*G(k:m,j)/bt; for i=k:m; G(i,j)=G(i,j)+t*w(i); end endend A(n)=G(n,n+1)/G(n,n); %解三角方程求系數(shù)Afor i=n-1:-1:1 A (i)=(G(i,n+1)-sum(G(i,i+1:n).*A (i+1:n)/G(i,i);end b=-A(3);c=A(2)/(2*b);a=exp(A(1)+b*(c2);G(n+1:m,n+1)=exp(sum(G(n+1:m,n+1).2);e=sum(G(n+1
20、:m,n+1).2); %計(jì)算誤差efprintf('n指數(shù)函數(shù)的系數(shù)是:a=%f,b=%f,c=%f',a,b,c); %輸出系數(shù)及誤差efprintf('n使用指數(shù)函數(shù)擬合的誤差是:%f',e);t=0:0.05:24;YY=a.*exp(-b.*(t-c).2);figure(2)plot(x,y,'k*',t,YY,'r-'); %繪制擬合指數(shù)函數(shù)圖形xlabel('時(shí)刻'); %標(biāo)注坐標(biāo)軸含義ylabel('平均氣溫');title('指數(shù)函數(shù)的最小二乘曲線');grid;
21、(4)結(jié)果與分析a、二次函數(shù):一天的平均氣溫為: 21.20002次函數(shù)的系數(shù): 8.3063 2.6064 -0.0938使用2次函數(shù)擬合的誤差是:280.339547二次函數(shù)的最小二乘曲線如下圖所示:b、三次函數(shù):一天的平均氣溫為: 21.20003次函數(shù)的系數(shù): 13.3880 -0.2273 0.2075 -0.0084使用3次函數(shù)擬合的誤差是: 131.061822 三次函數(shù)的最小二乘曲線如下圖所示:c、四次函數(shù):一天的平均氣溫為: 21.20004次函數(shù)的系數(shù): 16.7939 -3.7050 0.8909 -0.0532 0.0009使用4次函數(shù)擬合的誤差是:59.04118四次
22、函數(shù)的最小二乘曲線如下圖所示:d、指數(shù)函數(shù):一天的平均氣溫為: 21.2000指數(shù)函數(shù)的系數(shù)是: a=26.160286,b=0.004442,c=14.081900使用指數(shù)函數(shù)擬合的誤差是: 57.034644指數(shù)函數(shù)的最小二乘曲線如下圖所示:通過上述幾種擬合可以發(fā)現(xiàn),多項(xiàng)式的次數(shù)越高,計(jì)算擬合的效果越好,誤差越小,說明結(jié)果越準(zhǔn)確;同時(shí),指數(shù)多項(xiàng)式擬合的次數(shù)雖然不高,但誤差最小,說明結(jié)果最準(zhǔn)確。4.設(shè)計(jì)算法,求出非線性方程的所有根,并使誤差不超過。(1)算法思想 首先,研究函數(shù)的形態(tài),確定根的范圍;通過剖分區(qū)間的方法確定根的位置,然后利用二分法的基本原理進(jìn)行求解,找到滿足精度要求的解。二分法
23、是產(chǎn)生一串區(qū)間,使新區(qū)間是舊區(qū)間的一個(gè)子區(qū)間,其長(zhǎng)度是的一半,且有一個(gè)端點(diǎn)是的一個(gè)端點(diǎn)。由區(qū)間確定區(qū)間的方法是計(jì)算區(qū)間的中點(diǎn)若,則取,否則取,重復(fù)這一過程即可。顯然,每次迭代使區(qū)間長(zhǎng)度減小一半,故二分法總是收斂的。(2)算法結(jié)構(gòu)1.;2.If then stop3.If then輸出作為根; stop4.If then輸出作為根; stop5.6. If then輸出作為根; stop7. 8. If then輸出作為根; 9. Ifthen 9.1 ;else9.2 ;10.go to 5 (3)Matlab源程序x=-100:100;y=6*(x.5)-45*(x.2)+20; %非線性方
24、程組的表達(dá)式g=; for i=-100:1:100 %確定根所在的區(qū)間 k=i+1; if (y(x=i).*y(x=k)<eps) %區(qū)間長(zhǎng)度為1 g=g i; endendsyms x;f=6*x5-45*x2+20;n=length(g); %確定根的個(gè)數(shù) for j=1:n x0=g(j); %求根區(qū)間左端點(diǎn) x1=g(j)+1; %求根區(qū)間右端點(diǎn)while (x1-x0)>=10(-4) if subs(f,x,x0)*subs(f,x,(x0+x1)/2)>eps x0=(x0+x1)/2; else x1=(x0+x1)/2; endendroot=x0 %輸
25、出方程的根 end(4)結(jié)果與分析該非線性方程組有三個(gè)實(shí)根,分別為1.8708,0.6812,-0.6545,且滿足誤差要求。5. 編寫程序?qū)崿F(xiàn)大規(guī)模方程組的列主元高斯消去法程序,并對(duì)所附的方程組進(jìn)行求解。針對(duì)本專業(yè)中所碰到的實(shí)際問題,提煉一個(gè)使用方程組進(jìn)行求解的例子,并對(duì)求解過程進(jìn)行分析、求解。(1)算法思想 高斯消去法是利用現(xiàn)行方程組初等變換中的一種變換,即用一個(gè)不為零的數(shù)乘一個(gè)方程后加只另一個(gè)方程,使方程組變成同解的上三角方程組,然后再自下而上對(duì)上三角方程組求解。列主元消去法是當(dāng)高斯消元到第步時(shí),從列的以下(包括)的各元素中選出絕對(duì)值最大的,然后通過行交換將其交換到的位置上。交換系數(shù)矩陣
26、中的兩行(包括常數(shù)項(xiàng)),只相當(dāng)于兩個(gè)方程的位置交換了,因此,列選主元不影響求解的結(jié)果。 程序的核心就是高斯列主元消去法。根據(jù)教材提供的算法,編寫列主元消去法的子函數(shù)與適應(yīng)于超大規(guī)模超出系統(tǒng)內(nèi)存的方程組的改編程序。同時(shí),在Gauss消去過程中,適當(dāng)交換方程的順序?qū)ΡWC消去過程能順利進(jìn)行及計(jì)算解的精確度都是有必要的,交換方程的原則是使中,絕對(duì)值最大的一個(gè)換到(k,k)位置而成為第k步消去的主元,這就是列主元Gauss消去法。(2) 算法結(jié)構(gòu)1、數(shù)據(jù)文件的文件名為:文件名+.dat2、數(shù)據(jù)文件中的數(shù)據(jù)為二進(jìn)制記錄結(jié)構(gòu),分為以下四個(gè)部分:(1) 文件頭部分,其結(jié)構(gòu): typedef struct lo
27、ng int id; long int ver; long int n; 其中:id:為該數(shù)據(jù)文件的標(biāo)識(shí),值為0xF1E1D1A0,即為:十六進(jìn)制的F1E1D1A0 ver:為數(shù)據(jù)文件的版本號(hào),值為16進(jìn)制數(shù)據(jù),版本號(hào)說明0x101系數(shù)矩陣為非壓縮格式稀疏矩陣0x102系數(shù)矩陣為非壓縮格式帶狀對(duì)角陣0x201系數(shù)矩陣為壓縮格式稀疏矩陣0x202系數(shù)矩陣為壓縮格式帶狀對(duì)角陣 n:表示方程的階數(shù) (2) 文件頭2:此部分說明為條狀矩陣的上下帶寬,結(jié)構(gòu): typedef struct long int q; / 為上帶寬 long int p; / 為下帶寬 (3) 系數(shù)矩陣 a.如存貯格式非為壓縮
28、方式,則按行方式存貯系數(shù)矩陣中的每一個(gè)元素,個(gè)數(shù)為n*n,類型為float型; b.如果存貯格式是壓縮方式,則按行方式存貯,每行中只存放上下帶寬內(nèi)的非零元素,即,每行中存貯的最多元素為p+q+1個(gè)。(4) 右端系數(shù) 按順序存貯右端系數(shù)的每個(gè)元素,個(gè)數(shù)為n個(gè),類型為float型3、二進(jìn)制文件的讀取:f=fopen('fun003.dat','r'); %打開文件,.dat文件放在 m 文件同一目錄下,a=fread(f,3,'uint') %讀取頭文件,3-讀取前 3 個(gè),若讀取壓縮格式的,頭文件為 5 個(gè)b=fread(f,inf,'fl
29、oat'); %讀取剩下的文件,float 型id=dec2hex(a(1);ver=dec2hex(a(2); %這兩句是進(jìn)行進(jìn)制轉(zhuǎn)換,讀取 id 與ver1. A的階數(shù)2. For 2.1找滿足 2.2For 2.2.1 2.3 2.4 For 2.4.1 2.4.2 For 2.4.2.1 2.4.3 For (3)Matlab源程序clear; %清除工作空間變量clc; %清除命令窗口命令 % 讀取系數(shù)矩陣f,p=uigetfile('*.dat','選擇數(shù)據(jù)文件'); %讀取數(shù)據(jù)文件num=5; %輸入系數(shù)矩陣文件頭的個(gè)數(shù)name=strca
30、t(p,f);file=fopen(name,'r');head=fread(file,num,'uint'); %讀取二進(jìn)制頭文件id=dec2hex(head(1); %讀取標(biāo)識(shí)符fprintf('文件標(biāo)識(shí)符為');idver=dec2hex(head(2); %讀取版本號(hào)fprintf('文件版本號(hào)為');vern=head(3); %讀取階數(shù)fprintf('矩陣A的階數(shù)');nq=head(4); %上帶寬fprintf('矩陣A的上帶寬');q p=head(5); %下帶寬fprint
31、f('矩陣A的下帶寬');p dist=4*num;fseek(file,dist,'bof'); %把句柄值轉(zhuǎn)向第六個(gè)元素開頭處A,count=fread(file,inf,'float'); %讀取二進(jìn)制文件,獲取系數(shù)矩陣fclose(file); %關(guān)閉二進(jìn)制頭文件% 對(duì)非壓縮帶狀矩陣進(jìn)行求解if ver='102', a=zeros(n,n); for i=1:n, for j=1:n, a(i,j)=A(i-1)*n+j); %求系數(shù)矩陣a(i,j) end end b=zeros(n,1); for i=1:n, b(
32、i)=A(n*n+i); end for k=1:n-1, %列主元高斯消去法 m=k; for i=k+1:n, %尋找主元 if abs(a(m,k)<abs(a(i,k) m=i; end end if a(m,k)=0 %遇到條件終止 disp('錯(cuò)誤!') return end for j=1:n, %交換元素位置得主元 t=a(k,j); a(k,j)=a(m,j); a(m,j)=t; t=b(k); b(k)=b(m); b(m)=t; end for i=k+1:n, %計(jì)算l(i,k)并將其放到a(i,k)中 a(i,k)=a(i,k)/a(k,k);
33、 for j=k+1:n a(i,j)=a(i,j)-a(i,k)*a(k,j); end b(i)=b(i)-a(i,k)*b(k); end end x=zeros(n,1); %回代過程 x(n)=b(n)/a(n,n); for k=n-1:-1:1, x(k)=(b(k)-sum(a(k,k+1:n)*x(k+1:n)/a(k,k); endend% 對(duì)壓縮帶狀矩陣進(jìn)行求解if ver='202', %高斯消去法 m=p+q+1; a=zeros(n,m); for i=1:1:n for j=1:1:m a(i,j)=A(i-1)*m+j); %求a(i,j) en
34、d end b=zeros(n,1); for i=1:1:n b(i)=A(n*m+i); %求b(i) end for k=1:1:(n-1) %開始消去過程 if a(k,(p+1)=0 disp('錯(cuò)誤!'); break; end st1=n; if (k+p)<n st1=k+p; end for i=(k+1):1:st1 a(i,(k+p-i+1)=a(i,(k+p-i+1)/a(k,(p+1); for j=(k+1):1:(k+q) a(i,j+p-i+1)=a(i,j+p-i+1)-a(i,k+p-i+1)*a(k,j+p-k+1); end b(i)=b(i)-a(i,k+p-i+1)*b(k); end end x=zeros(n,1); %回代過程 x(n)=b(n)/a(n,p+1); sum=0; for k=(n-1):-1:1 sum=b(k); st2=n; if (k+q)<n st2=k+q; end for j=(k+1):1:st2 sum=sum-a(k,j+p-k+1)*x(j); end x(k)=sum/a(k,p+1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 供暖承包合同
- 裝修總承包合同
- 標(biāo)識(shí)標(biāo)牌制作合同
- 數(shù)據(jù)存儲(chǔ)與分析服務(wù)合同
- 英文服務(wù)合同范本
- 精技術(shù)合作開發(fā)合同
- 合同主體變更協(xié)議
- 房屋買賣居間合同簽訂注意事項(xiàng)
- 關(guān)于固定期限聘用合同
- 公對(duì)公的借款合同正規(guī)范本
- 宮頸癌后裝治療護(hù)理查房課件
- 員工內(nèi)部眾籌方案
- 復(fù)變函數(shù)與積分變換期末考試試卷及答案
- 初中班級(jí)成績(jī)分析課件
- 勞務(wù)合同樣本下載
- 聰明格練習(xí)題(初、中級(jí))
- 血液透析水處理系統(tǒng)演示
- 小批量試制總結(jié)報(bào)告
- 2023年經(jīng)濟(jì)開發(fā)區(qū)工作會(huì)議表態(tài)發(fā)言
- YY/T 0216-1995制藥機(jī)械產(chǎn)品型號(hào)編制方法
- 糖尿病足與周圍血管病01課件
評(píng)論
0/150
提交評(píng)論