計算方法上機題答案_第1頁
計算方法上機題答案_第2頁
計算方法上機題答案_第3頁
計算方法上機題答案_第4頁
計算方法上機題答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上2.用下列方法求方程ex+10x-2=0的近似根,要求誤差不超過5*10的負(fù)4次方,并比較計算量(1)二分法(局部,大圖不太看得清,故后面兩小題都用局部截圖)(2)迭代法(3)牛頓法順序消元法#include<stdio.h>#include<stdlib.h>#include<math.h>int main() int N=4,i,j,p,q,k; double m; double a45; double x1,x2,x3,x4; for (i=0;i<N ;i+ ) for (j=0;j<N+1; j+ ) scan

2、f("%lf",&aij); for(p=0;p<N-1;p+) for(k=p+1;k<N;k+) m=akp/app; for(q=p;q<N+1;q+) akq=akq-m*apq; x4=a34/a33; x3=(a24-x4*a23)/a22; x2=(a14-x4*a13-x3*a12)/a11; x1=(a04-x4*a03-x3*a02-x2*a01)/a00; printf("%f,%f,%f,%f",x1,x2,x3,x4); scanf("%lf",&aij); (這一步只是為了

3、看到運行的結(jié)果) 運行結(jié)果列主元消元法functionx,det,flag=Gauss(A,b)n,m=size(A);nb=length(b);flag='OK'det=1;x=zeros(n,1);for k=1:n-1 max1=0; for i=k:n if abs(A(i,k)>max1 max1=abs(A(i,k);r=i; end end if max1<1e-10 flag='failure'return;end if r>k for j=k:n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z; end z=b

4、(k);b(k)=b(r);b(r)=z;det=-det; end for i=k+1:n m=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-m*A(k,j); end b(i)=b(i)-m*b(k); end det=det*A(k,k); end det=det*A(n,n) if abs(A(n,n)<1e-10 flag='failure'return;end x(n)=b(n)/A(n,n);for k=n-1:-1:1 for j=k+1:n b(k)=b(k)-A(k,j)*x(j); end x(k)=b(k)/A(

5、k,k);end 運行結(jié)果:雅可比迭代法function y=jacobi(a,b,x0)D=diag(diag(a);U=-triu(a,1);L=-tril(a,-1);B=D(L+U);f=Db;y=B*x0+f;n=1;while norm(y-x0)>1e-4x0=y;y=B*x0+f;n=n+1;endyn高斯賽德爾迭代法function y=seidel(a,b,x0)D=diag(diag(a);U=-triu(a,1);L=-tril(a,-1);G=(D-L)U;f=(D-L)b;y=G*x0+f;n=1;while norm(y-x0)>10(-4)x0=y;

6、y=G*x0+f;n=n+1;endynSOR迭代法function y=sor(a,b,w,x0)D=diag(diag(a);U=-triu(a,1);L=-tril(a,-1);lw=(D-w*L)(1-w)*D+w*U);f=(D-w*L)b*w;y=lw*x0+f;n=1;while norm(y-x0)>10(-4)x0=y;y=lw*x0+f;n=n+1;endyn1.分段線性插值:function y=fdxx(x0,y0,x) p=length(y0);n=length(x0);m=length(x); for i=1:m z=x(i); for j=1:n-1 if

7、z<x0(j+1) break; end end y(i)= y0(j)*(z-x0(j+1)/(x0(j)-x0(j+1)+y0(j+1)*(z-x0(j)/(x0(j+1)-x0(j); fprintf('y(%d)=%fnx1=%.3fy1=%.3fnx2=%.3fy2=%.3fnn',i,y(i),x0(j),y0(j),x0(j+1),y0(j+1); end end 結(jié)果0.39404 0.38007 0.356932.分段二次插值:function y=fdec(x0,y0,x)p=length(y0);n=length(x0);m=length(x); f

8、or i=1:m z=x(i); for j=1:n-1 if z<x0(j+1) break; end end if j<2 j=j+1; elseif (j<n-1) if (abs(x0(j)-z)>abs(x0(j+1)-z) j=j+1; elseif (abs(x0(j)-z)=abs(x0(j+1)-z)&&(abs(x0(j-1)-z)>abs(x0(j+2)-z) j=j+1; end end ans=0.0; for t=j-1:j+1 a=1.0; for k=j-1:j+1 if t=k a=a*(z-x0(k)/(x0(t

9、)-x0(k); end end ans=ans+a*y0(t); end y(i)=ans; fprintf('y(%d)=%fn x1=%.3f y1=%.3fn x2=%.3f y2=%.3fn x3=%.3f y3=%.3fnn',i,y(i),x0(j-1),y0(j-1),x0(j),y0(j),x0(j+1),y0(j+1);end end 結(jié)果為0.39447 0.38022 0.357253.拉格朗日全區(qū)間插值function y=lglr(x0,y0,x) p=length(y0);n=length(x0);m=length(x); for t=1:m an

10、s=0.0; z=x(t); for k=1:n p=1.0; for q=1:n if q=k p=p*(z-x0(q)/(x0(k)-x0(q); end end ans=ans+p*y0(k); end y(t)=ans; fprintf('y(%d)=%fn',t,y(t);endend結(jié)果為0.39447 0.38022 0.35722function p,S,mu = polyfit(x,y,n)if isequal(size(x),size(y) errorendx = x(:);y = y(:);if nargout > 2 mu = mean(x); s

11、td(x); x = (x - mu(1)/mu(2);endV(:,n+1) = ones(length(x),1,class(x);for j = n:-1:1 V(:,j) = x.*V(:,j+1);end Q,R = qr(V,0);ws = warning; p = R(Q'*y); warning(ws);if size(R,2) > size(R,1) warning;elseif warnIfLargeConditionNumber(R) if nargout > 2 warning; else warning; endendif nargout >

12、 1 r = y - V*p; S.R = R; S.df = max(0,length(y) - (n+1); S.normr = norm(r);endp = p.' function flag = warnIfLargeConditionNumber(R)if isa(R, 'double') flag = (condest(R) > 1e+10);else flag = (condest(R) > 1e+05);endx=1,3,4,5,6,7,8,9,10;y=10,5,4,2,1,1,2,3,4;p=polyfit(x,y,2);y=poly2s

13、ym(p);a=-p(1)/p(2)*0.5;xa=-p(2)/(2*p(1);min=(4*p(1)*p(3)-p(2)2)/(4*p(1);yxamin運行截圖運行結(jié)果function I = CombineTraprl(f,a,b,eps)if(nargin =3)    eps=1.0e-4; endn=1;h=(b-a)/2;I1=0;I2=(subs(sym(f),findsym(sym(f),a)+subs(sym(f),findsym(sym(f),b)/h;while abs(

14、I2-I1)>eps    n=n+1;      h=(b-a)/n;    I1=I2;    I2=0;    for i=0:n-1            x=a+h*i;     &#

15、160;     x1=x+h;        I2=I2+(h/2)*(subs(sym(f),findsym(sym(f),x)+subs(sym(f),findsym(sym(f),x1);    endendI=I2;程序:>> q=CombineTraprl('(1-exp(-x)0.5/x'10-12,1)結(jié)果:q =1.8521歐拉方法function x,y=eu

16、ler(fun,x0,xfinal,y0,n);if nargin<5,n=50;endh=(xfinal-x0)/n; x(1)=x0;y(1)=y0;for i=1:n x(i+1)=x(i)+h; y(i+1)=y(i)+h*feval(fun,x(i),y(i); end程序:x,y=euler('doty',0,1,1,10)結(jié)果:改進(jìn)歐拉方法function x,y=eulerpro(fun,x0,xfinal,y0,n); if nargin<5,n=50; endh=(xfinal-x0)/n; x(1)=x0;y(1)=y0; for i=1:n x(i+1)=x(i)+h; y1=y(i)+h*feval(fun,x(i),y(i); y2=y(i)+h*feval(fun,x(i+1),y1); y(i+1)=(y1+y2)/2; end程序:>> x,y=eulerpro('doty',0,1,1,10)結(jié)果:經(jīng)典RK法function x,y=RungKutta4(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);y(1)=y0;for n=1:length(x)-1 k1=feval(dyfun,x(n),y(n); k2=feval(dyfun,x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論