·¢²¼Ê±¼ä : ÐÇÆÚÈý ÎÄÕÂMATLABÊýÖµ·ÖÎöʵÑéËÄ£¨ÑŸ÷±È¡¢¸ß˹ÈüµÂ¶ûµü´ú£¬ÒÔ¼°¶þ·Ö·¨ºÍÅ£¶Ùµü´ú½â·ÇÏßÐÔ·½³Ì£©¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ
·ðɽ¿Æѧ¼¼ÊõѧԺ
ʵ Ñé ±¨ ¸æ
¿Î³ÌÃû³Æ ÊýÖµ·ÖÎö ʵÑéÏîÄ¿ µü´ú·¨
רҵ°à¼¶ »úе¹¤³Ì ÐÕ Ãû Óàºì½Ü ѧ ºÅ 2111505010 Ö¸µ¼½Ìʦ ³Â½£ ³É ¼¨ ÈÕ ÆÚ Ô ÈÕ
Ò». ʵÑéÄ¿µÄ
1¡¢ ÔÚ¼ÆËã»úÉÏÓÃJacobiµü´ú·¨ºÍGauss-Seidelµü´ú·¨ÇóÏßÐÔ·½³Ì×é ¡£ 2¡¢ ÔÚ¼ÆËã»úÉÏÓöþ·Ö·¨ºÍNewtonµü´ú·¨Çó·ÇÏßÐÔ·½³Ì µÄ¸ù¡£ ¶þ. ʵÑéÒªÇó
1¡¢°´ÕÕÌâÄ¿ÒªÇóÍê³ÉʵÑéÄÚÈÝ£» 2¡¢Ð´³öÏàÓ¦µÄMatlab ³ÌÐò£»
3¡¢¸ø³öʵÑé½á¹û(¿ÉÒÔÓñí¸ñչʾʵÑé½á¹û)£» 4¡¢·ÖÎöºÍÌÖÂÛʵÑé½á¹û²¢Ìá³ö¿ÉÄܵÄÓÅ»¯ÊµÑé¡£ 5¡¢Ð´³öʵÑ鱨¸æ¡£ Èý. ʵÑé²½Öè
1¡¢ÓÃMatlab±àдJacobiµü´ú·¨ºÍGauss-Seidelµü´ú·¨ÇóÏßÐÔ·½³Ì×éAx?bµÄ³ÌÐò¡£ 2¡¢ÓÃMatlab±àд¶þ·Ö·¨ºÍNewton·¨Çó·ÇÏßÐÔ·½³Ìf(x)?0µÄ¸ù³ÌÐò¡£
?3?3¡¢ÉèA??0??2?0?2??21?,b?(1,3,1)T,¶ÔÓÚÏßÐÔ·½³Ì×éAx?b£¬¿¼ÂÇÈçÏÂÎÊÌ⣺ 12??£¨1£©·Ö±ðд³öJacobiµü´ú¾ØÕóºÍGauss-Seidelµü´ú¾ØÕó
£¨2£©ÓÃJacobiµü´ú·¨ºÍGauss-Seidelµü´ú·¨½â¸Ã·½³Ìʱ£¬ÊÇ·ñÊÕÁ²£¿ËÊÕÁ²µÄ¸ü¿ì£¿ £¨3£©ÓÃʵÑé²½Öè1±àºÃµÄÁ½ÖÖµü´ú·¨³ÌÐò½øÐÐʵÑ飬ͨ¹ýÊýÖµ½á¹ûÑéÖ¤£¨2£©µÄ½áÂÛ¡£ 4¡¢Óõ÷ÊԺõĶþ·Ö·¨ºÍNewtonµü´ú·¨³ÌÐò½â¾öÈçÏÂÎÊÌâ
Çóe5x?sinx?x3?20?0µÄ¸ù£¬ÆäÖпØÖƾ«¶Èeps?10?8£¬×î´óµü´ú´ÎÊýM?50¡£
ËÄ. ʵÑé½á¹û 1.%Jacob.m
function [x,B] = Jacob(A,b,n)
%Jacobiµü´úÇó½â·½³Ì×éAx=b£¬ÏµÊý¾ØÕóA£¬µü´ú´ÎÊýn %Çó½âµÄ×¼±¸¹¤×÷£¬¹¹½¨¸÷µü´úϵÊýÕóµÈ£º m = length(A); D = diag(diag(A)); L = -tril(A,-1); U = -triu(A, 1); J = D^(-1)*(L+U); B = J;
f = D^(-1)*b;
%³õʼ»¯x¼´Æô¶¯Öµ£º x = zeros(m,1);
%¸ù¾Ýx(k+1)=Jx(k)+f½øÐоØÕóÔËË㣺 for i=1:n
x = J*x + f; end
%GauSeid.m
function [x,G] = GauSeid(A,b,n)
%Gauss-Seidelµü´úÇó½â·½³Ì×éAx=b£¬ÏµÊý¾ØÕóA£¬µü´ú´ÎÊýn %Çó½âµÄ×¼±¸¹¤×÷£¬¹¹½¨¸÷µü´úϵÊýÕóµÈ£º m = length(A); D = diag(diag(A)); L = -tril(A,-1); U = -triu(A, 1); G = inv(D-L)*U; f = inv(D-L)*b; %³õʼ»¯¾ØÕó£º
%¸ù¾Ýx(k+1)=Gx(k)+f½øÐоØÕóÔËË㣺 x = zeros(m,1); for i = 1:n
x = G*x + f; end
2.%Dichotomy.m
function x=Dichotomy(x1,x2,p,n) %ÀûÓöþ·Ö·¨Çó¸ù£¬Çø¼ä[x1,x2] %pΪ¾«¶È a = x1; b = x2;
%½øÐÐn´Î¶þ·Ö£º
%µÚÒ»¸öÌõ¼þÅжϸùÔÚa,bÇø¼äÄÚ
%µÚ¶þ¸öÌõ¼þÅжÏÊÇ·ñÖмäµã¾ÍÊǸù£¬ÊÇÔòµü´úÖÕÖ¹£» %µÚÈý¸öÌõ¼þÅж϶þ·Öºó¸ùÔÚÖеã×ó²à»¹ÊÇÓҲࣻ %µÚËĸöÌõ¼þÅжϾ«¶ÈÊÇ·ñ´ï±ê£¬ÓÃÇø¼ä³¤¶È´úÌæ for i=1:n
if f(a)*f(b)<0 x0 = (a+b)/2; p0 = (b-a)/(2^i); if f(x0)==0 x = x0; else
if f(a)*f(x0)<0 b = x0; else a= x0; end end end if p0>p
continue; else x = x0; break; end end
%NewIterat.m
function x=NewIterat(x0,p,n) %ÀûÓÃÅ£¶Ùµü´ú·¨Çó¸ù£»
%x0ΪÆô¶¯µã£¬¹À¼ÆµÄ¿¿½ü¸ùµÄÖµ£¬pΪ¾«¶È£¬nΪµü´ú´ÎÊý£» syms x1;
%ÉèÖÃÒ»¸ö×Ô±äÁ¿x1£¬·½±ãºóÃæµÄÇóµ¼: f1 = diff(f(x1));
%½øÐÐn´Îµü´ú£¬¾«¶È´ï±ê»áÌáÇ°ÖÕÖ¹£»
%µÚÒ»¸öÅжÏÊǸù¾Ý¿ØÖÆÌõ¼þÀ´È·¶¨ÕæʵÎó²îÊÇÑ¡¾ø¶Ô»¹ÊÇÏà¶ÔÎó²î£» %µÚ¶þ¸öÅжÏÊÇÈ·¶¨¾«¶ÈÊÇ·ñÂú×ãÒªÇó for i=1:n
x1 = x0;
x = x0-f(x0)/eval(f1); if x<1
RealDiv = abs(x-x0);
else RealDiv = abs(x-x0)/abs(x); end
if RealDiv>p x0 = x; else break; end end
3.run43.m
clc,clear;
A = [3 0 -2;0 2 1;-2 1 2]; b = [1;3;1]; n1 = 50; n2 =100;
%ÊäÈëA,b¾ØÕó£¬ÉèÖõü´ú´ÎÊýΪ50´Î£» %µ÷Óõü´úº¯Êý£¬·µ»Øµü´ú¾ØÕó£» [x,B] = Jacob(A,b,n1); xj50 = x;
f1 = max(abs(eig(B))) %ÏÔʾÆװ뾶£¬È·¶¨ÊÕÁ²ÐÔ£» [x,B] = GauSeid(A,b,n1); xg50 = x;
f2 = max(abs(eig(B))) %Æװ뾶£»
xj100 = Jacob(A,b,n2); xg100 = GauSeid(A,b,n2); Jacobi= [xj50,xj100]
%¶Ô±Èµü´ú50´ÎºÍ100´ÎµÄ½á¹û GauSei= [xg50,xg100]
%ºÜÈÝÒ׿´³ö׼ȷ½âΪ[1£»1£»1]
4.f.m
function y = f(x)
%ËùÓÐf(x)=0ÖÐf(x)º¯Êý£» y = exp(5*x)-sin(x)+x^3-20;
ÏÂÒ³ÊǾßÌå½âʱµÄ³ÌÐò£º