| ²é¿´: 2313 | »Ø¸´: 7 | ||
hustesewzwÌú³æ (³õÈëÎÄ̳)
|
[ÇóÖú]
ÇóÖúmatlab¸ßÊÖÖ¸µã£º´óÐÍ·ÇÏßÐÔ·½³Ì×飨ţ¶ÙÀ·ðÉ·¨£© ÒÑÓÐ3È˲ÎÓë
|
×î½üÏëÍê³ÉÒ»¸öÉú»¯Ä£ÐÍÎÊÌ⣬ģÐÍÖ÷Ìå·½³ÌΪ΢·Ö·½³Ì×飬Óà ²î·Ö·¨×ª»¯Îª¶àÔª·ÇÏßÐÔ·½³Ì×é¡£Äâ²ÉÓÃÅ£¶ÙÀ·ðÉ·¨Çó½â£¬·½³Ì×é±È½Ï´ó£º99¸öδ֪Êý£¬99¸ö·½³Ì£¬matlab³ÌÐòÒÑдºÃ£¬ÎÊÌâÊÇÇó½âµ½×îºóÓв¿·Ö·½³ÌµÄyֵʼÖձȽϴó£¨ÎÒÉèÖõÄÊÇ1e-4£©£¬xµÄÊÕÁ²Ìõ¼þҲΪ1e-4£¨¿ÉÒÔÂú×㣩¡£jacobiµü´ú´ÎÊýÉèÖÃΪ30´Î¡£ÇëÎÊÎÒµÄyÖµ²»ÄÜÂú×ãÌõ¼þµÄÔÒòÊÇÊ²Ã´ÄØ£¿ÊÇÎҵijõʼֵȡµÃÓÐÎÊÌâÂð£¿ÓÐûÓиßÊÖΪÎÒÖ¸µãÒ»ÏÂÃÔ½ò£¬ÔÚ´ËÉî±í¸Ðл£¡£¡£¡Ï×ÉÏÎÒµÄÈ«²¿½ð±Ò¡£ |
» ²ÂÄãϲ»¶
0854¿ØÖƹ¤³Ì 359Çóµ÷¼Á ¿É¿çרҵ
ÒѾÓÐ9È˻ظ´
Áº³ÉΰÀÏʦ¿ÎÌâ×é»¶ÓÄãµÄ¼ÓÈë
ÒѾÓÐ9È˻ظ´
»¯Ñ§µ÷¼Á0703
ÒѾÓÐ8È˻ظ´
»·¾³¹¤³Ìµ÷¼Á
ÒѾÓÐ6È˻ظ´
326Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
Ò»Ö¾Ô¸985£¬±¾¿Æ211£¬0817»¯Ñ§¹¤³ÌÓë¼¼Êõ319Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
½ñÄêµÄ¹ú»ù½ðÊÇ´ò·ÖÖÆÂð£¿
ÒѾÓÐ3È˻ظ´
304Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
Ò»Ö¾Ô¸ËÕÖÝ´óѧ²ÄÁϹ¤³Ì£¨085601£©×¨Ë¶ÓпÆÑоÀúÈýÏî¹ú½±Á½¸öʵÓÃÐÍרÀûÒ»ÏîÊ¡¼¶Á¢Ïî
ÒѾÓÐ5È˻ظ´
304Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:
matlabÇó½â·ÇÏßÐÔ·½³Ì×鱨´í£¬Çë¸÷λ´óÉñÖ¸µã£¡
ÒѾÓÐ8È˻ظ´
MATLAB½â·ÇÏßÐÔ·½³Ì×é
ÒѾÓÐ9È˻ظ´
matlab½â·ÇÏßÐÔ·½³Ì×é³ÌÐò¾À´íÓëÕýÈ·ÔËÐÐ
ÒѾÓÐ6È˻ظ´
MATLABÇó½âÎåÔª·ÇÏßÐÔ·½³Ì×飬ÔÚÏßµÈ
ÒѾÓÐ7È˻ظ´
matlab½â·½³Ì×éÇóÖú¹¥
ÒѾÓÐ4È˻ظ´
matlab Çó½âÏßÐÔ·½³Ì×éAx=b
ÒѾÓÐ10È˻ظ´
matlab·ÇÏßÐÔ·½³Ì×é¸ÃÈçºÎ±à³Ì¡£ÇóÖú
ÒѾÓÐ10È˻ظ´
ÓÃmatlabÇó½âÒ»¸ö·ÇÏßÐÔ·½³Ì×éµÄ½â
ÒѾÓÐ4È˻ظ´
Çë½ÌÒ»¸ömatlabÇó½â·ÇÏßÐÔ·½³Ì×éµÄÎÊÌâ
ÒѾÓÐ9È˻ظ´
ÇóÖúÓÃmatlab»òÕߣ¨1st0pt)±à³Ì½â·½³Ì×é
ÒѾÓÐ3È˻ظ´
ÓÃmatlabÇó½â·ÇÏßÐÔ·½³Ì×é˵Î޽⣬һ¶¨ÊÇ·½³Ì×é±¾ÉíÎ޽⣬»¹ÊÇÓпÉÄܳÌÐòÓÐÎÊÌâÄØ£¿
ÒѾÓÐ11È˻ظ´
Çó½ÌmatlabÏßÐÔÓÅ»¯Çó×îСֵµÄÎÊÌâ
ÒѾÓÐ7È˻ظ´
ÇóMatlab¸ßÊÖ½â¾öÏßÐÔ·½³Ì×éµÄµü´úÇó½âÎÊÌâ
ÒѾÓÐ17È˻ظ´
·ÇÏßÐÔ·½³Ì×éÎÊÌâ
ÒѾÓÐ4È˻ظ´
matlabÇó½â·ÇÏßÐÔ·½³Ì×飬´íÎóÌáʾÔõô½â¾ö
ÒѾÓÐ5È˻ظ´
ÇóÖú MATLAB½â·½³Ì×é-fslove
ÒѾÓÐ7È˻ظ´
Çë½ÌÓÃmatlabÇó½âÒ»¸ö·ÇÏßÐÔÆ«Î¢·Ö·½³Ì×éµÄÊýÖµ½â
ÒѾÓÐ8È˻ظ´
ÇóÖúmatlab½â·ÇÏßÐԹ滮¡£Çó´úÂë¡£
ÒѾÓÐ13È˻ظ´
ÇóÖúmatlab---fsolve½â·ÇÏßÐÔ·½³Ì×é
ÒѾÓÐ6È˻ظ´
1stopt»òmatlabÈçºÎÇó½âÒÔϵķÇÏßÐÔ·½³Ì²¢ÄâºÏ³öÏàÓ¦ÇúÏߣ¿
ÒѾÓÐ13È˻ظ´
matlabÖÐÔõôȡ·½³Ì×éµÄÒ»×é½â²¢»Í¼
ÒѾÓÐ5È˻ظ´
ÇóÖúMATLAB½â·½³Ì×é
ÒѾÓÐ6È˻ظ´
Çó¸ßÈËÖ¸µãÓÃmatlabÇó½â·ÇÏßÐÔ·½³Ì×飬½â¾öÁË×·¼Ó100½ð±Ò£»
ÒѾÓÐ11È˻ظ´
¡¾ÇóÖú¡¿·ÇÏßÐÔ·½³Ì×é µÄ±íʾÎÊÌâ
ÒѾÓÐ6È˻ظ´
matlabµÄfsove ÃüÁîÇó½â·ÇÏßÐÔ·½³Ì×é
ÒѾÓÐ6È˻ظ´
¡¾ÇóÖú¡¿matlabÇó½â·ÇÏßÐÔ·½³Ì×飬²¢»Í¼´¦Àí¡£ÒªÇóy,zÊÇʵÊý½â£¡
ÒѾÓÐ18È˻ظ´
¡¾ÇóÖú¡¿Çó½Ìmatlab½â·ÇÏßÐÔ·½³Ì×é
ÒѾÓÐ9È˻ظ´
zhchh008
½ð³æ (ÕýʽдÊÖ)
- Ó¦Öú: 13 (СѧÉú)
- ½ð±Ò: 1602.2
- É¢½ð: 871
- ºì»¨: 13
- Ìû×Ó: 835
- ÔÚÏß: 202.7Сʱ
- ³æºÅ: 99456
- ×¢²á: 2005-11-11
- ÐÔ±ð: GG
- רҵ: ×ÊÔ´»¯¹¤
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
hustesewzw: ½ð±Ò+30, ¡ï¡ï¡ïºÜÓаïÖú 2014-10-08 12:06:16
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
hustesewzw: ½ð±Ò+30, ¡ï¡ï¡ïºÜÓаïÖú 2014-10-08 12:06:16
|
·ÖÏíÒ»¸öNewtonRaphsonµÄËã·¨¸øÄ㣬 function [x, resnorm, F, exitflag, output, jacob] = newtonraphson(fun, x0, options) % NEWTONRAPHSON Solve set of non-linear equations using Newton-Raphson method. % % [X, RESNORM, F, EXITFLAG, OUTPUT, JACOB] = NEWTONRAPHSON(FUN, X0, OPTIONS) % FUN is a function handle that returns a vector of residuals equations, F, % and takes a vector, x, as its only argument. When the equations are % solved by x, then F(x) == zeros(size(F( , 1)).% % Optionally FUN may return the Jacobian, Jij = dFi/dxj, as an additional % output. The Jacobian must have the same number of rows as F and the same % number of columns as x. The columns of the Jacobians correspond to d/dxj and % the rows correspond to dFi/d. % % EG: J23 = dF2/dx3 is the 2nd row ad 3rd column. % % If FUN only returns one output, then J is estimated using a center % difference approximation, % % Jij = dFi/dxj = (Fi(xj + dx) - Fi(xj - dx))/2/dx. % % NOTE: If the Jacobian is not square the system is either over or under % constrained. % % X0 is a vector of initial guesses. % % OPTIONS is a structure of solver options created using OPTIMSET. % EG: options = optimset('TolX', 0.001). % % The following options can be set: % * OPTIONS.TOLFUN is the maximum tolerance of the norm of the residuals. % [1e-6] % * OPTIONS.TOLX is the minimum tolerance of the relative maximum stepsize. % [1e-6] % * OPTIONS.MAXITER is the maximum number of iterations before giving up. % [100] % * OPTIONS.DISPLAY sets the level of display: {'off', 'iter'}. % ['iter'] % % X is the solution that solves the set of equations within the given tolerance. % RESNORM is norm(F) and F is F(X). EXITFLAG is an integer that corresponds to % the output conditions, OUTPUT is a structure containing the number of % iterations, the final stepsize and exitflag message and JACOB is the J(X). % % See also OPTIMSET, OPTIMGET, FMINSEARCH, FZERO, FMINBND, FSOLVE, LSQNONLIN % %% initialize % There are no argument checks! x0 = x0( ; % needs to be a column vector% set default options oldopts = optimset( ... 'TolX', 1e-12, 'TolFun', 1e-6, 'MaxIter', 100, 'Display', 'iter'); if nargin<3 options = oldopts; % use defaults else options = optimset(oldopts, options); % update default with user options end FUN = @(x)funwrapper(fun, x); % wrap FUN so it always returns J %% get options TOLX = optimget(options, 'TolX'); % relative max step tolerance TOLFUN = optimget(options, 'TolFun'); % function tolerance MAXITER = optimget(options, 'MaxIter'); % max number of iterations DISPLAY = strcmpi('iter', optimget(options, 'Display')); % display iterations TYPX = max(abs(x0), 1); % x scaling value, remove zeros ALPHA = 1e-4; % criteria for decrease MIN_LAMBDA = 0.1; % min lambda MAX_LAMBDA = 0.5; % max lambda %% set scaling values % TODO: let user set weights weight = ones(numel(FUN(x0)),1); J0 = weight*(1./TYPX'); % Jacobian scaling matrix %% set display if DISPLAY fprintf('\n%10s %10s %10s %10s %10s %12s\n', 'Niter', 'resnorm', 'stepnorm', ... 'lambda', 'rcond', 'convergence') for n = 1:67,fprintf('-'),end,fprintf('\n') fmtstr = '%10d %10.4g %10.4g %10.4g %10.4g %12.4g\n'; printout = @(n, r, s, l, rc, c)fprintf(fmtstr, n, r, s, l, rc, c); end %% check initial guess x = x0; % initial guess [F, J] = FUN(x); % evaluate initial guess Jstar = J./J0; % scale Jacobian if any(isnan(Jstar( )) || any(isinf(Jstar( ))exitflag = -1; % matrix may be singular else exitflag = 1; % normal exit end if issparse(Jstar) rc = 1/condest(Jstar); else if any(isnan(Jstar( ))rc = NaN; elseif any(isinf(Jstar( ))rc = Inf; else rc = 1/cond(Jstar); % reciprocal condition end end resnorm = norm(F); % calculate norm of the residuals dx = zeros(size(x0));convergence = Inf; % dummy values %% solver Niter = 0; % start counter lambda = 1; % backtracking if DISPLAY,printout(Niter, resnorm, norm(dx), lambda, rc, convergence);end while (resnorm>TOLFUN || lambda<1) && exitflag>=0 && Niter<=MAXITER if lambda==1 %% Newton-Raphson solver Niter = Niter+1; % increment counter dx_star = -Jstar\F; % calculate Newton step % NOTE: use isnan(f) || isinf(f) instead of STPMAX dx = dx_star.*TYPX; % rescale x g = F'*Jstar; % gradient of resnorm slope = g*dx_star; % slope of gradient fold = F'*F; % objective function xold = x; % initial value lambda_min = TOLX/max(abs(dx)./max(abs(xold), 1)); end if lambda<lambda_min exitflag = 2; % x is too close to XOLD break elseif any(isnan(dx)) || any(isinf(dx)) exitflag = -1; % matrix may be singular break end x = xold+dx*lambda; % next guess [F, J] = FUN(x); % evaluate next residuals Jstar = J./J0; % scale next Jacobian f = F'*F; % new objective function %% check for convergence lambda1 = lambda; % save previous lambda if f>fold+ALPHA*lambda*slope if lambda==1 lambda = -slope/2/(f-fold-slope); % calculate lambda else A = 1/(lambda1 - lambda2); B = [1/lambda1^2,-1/lambda2^2;-lambda2/lambda1^2,lambda1/lambda2^2]; C = [f-fold-lambda1*slope;f2-fold-lambda2*slope]; coeff = num2cell(A*B*C); [a,b] = coeff{:}; if a==0 lambda = -slope/2/b; else discriminant = b^2 - 3*a*slope; if discriminant<0 lambda = MAX_LAMBDA*lambda1; elseif b<=0 lambda = (-b+sqrt(discriminant))/3/a; else lambda = -slope/(b+sqrt(discriminant)); end end lambda = min(lambda,MAX_LAMBDA*lambda1); % minimum step length end elseif isnan(f) || isinf(f) % limit undefined evaluation or overflow lambda = MAX_LAMBDA*lambda1; else lambda = 1; % fraction of Newton step end if lambda<1 lambda2 = lambda1;f2 = f; % save 2nd most previous value lambda = max(lambda,MIN_LAMBDA*lambda1); % minimum step length continue end %% display resnorm0 = resnorm; % old resnorm resnorm = norm(F); % calculate new resnorm convergence = log(resnorm0/resnorm); % calculate convergence rate stepnorm = norm(dx); % norm of the step if any(isnan(Jstar( )) || any(isinf(Jstar( ))exitflag = -1; % matrix may be singular break end if issparse(Jstar) rc = 1/condest(Jstar); else rc = 1/cond(Jstar); % reciprocal condition end if DISPLAY,printout(Niter, resnorm, stepnorm, lambda1, rc, convergence);end end %% output output.iterations = Niter; % final number of iterations output.stepsize = dx; % final stepsize output.lambda = lambda; % final lambda if Niter>=MAXITER exitflag = 0; output.message = 'Number of iterations exceeded OPTIONS.MAXITER.'; elseif exitflag==2 output.message = 'May have converged, but X is too close to XOLD.'; elseif exitflag==-1 output.message = 'Matrix may be singular. Step was NaN or Inf.'; else output.message = 'Normal exit.'; end jacob = J; end function [F, J] = funwrapper(fun, x) % if nargout<2 use finite differences to estimate J try [F, J] = fun(x); catch F = fun(x); J = jacobian(fun, x); % evaluate center diff if no Jacobian end F = F( ; % needs to be a column vectorend function J = jacobian(fun, x) % estimate J dx = eps^(1/3); % finite difference delta nx = numel(x); % degrees of freedom nf = numel(fun(x)); % number of functions J = zeros(nf,nx); % matrix of zeros for n = 1:nx % create a vector of deltas, change delta_n by dx delta = zeros(nx, 1); delta(n) = delta(n)+dx; dF = fun(x+delta)-fun(x-delta); % delta F J(:, n) = dF( /dx/2; % derivatives dF/d_nend end |
2Â¥2014-10-08 10:18:20
zhchh008
½ð³æ (ÕýʽдÊÖ)
- Ó¦Öú: 13 (СѧÉú)
- ½ð±Ò: 1602.2
- É¢½ð: 871
- ºì»¨: 13
- Ìû×Ó: 835
- ÔÚÏß: 202.7Сʱ
- ³æºÅ: 99456
- ×¢²á: 2005-11-11
- ÐÔ±ð: GG
- רҵ: ×ÊÔ´»¯¹¤
3Â¥2014-10-08 10:19:34
zhchh008
½ð³æ (ÕýʽдÊÖ)
- Ó¦Öú: 13 (СѧÉú)
- ½ð±Ò: 1602.2
- É¢½ð: 871
- ºì»¨: 13
- Ìû×Ó: 835
- ÔÚÏß: 202.7Сʱ
- ³æºÅ: 99456
- ×¢²á: 2005-11-11
- ÐÔ±ð: GG
- רҵ: ×ÊÔ´»¯¹¤
4Â¥2014-10-08 10:21:17
dingd
Ìú¸Ëľ³æ (Ö°Òµ×÷¼Ò)
- Ó¦Öú: 1641 (½²Ê¦)
- ½ð±Ò: 15037.3
- É¢½ð: 101
- ºì»¨: 234
- Ìû×Ó: 3410
- ÔÚÏß: 1223.7Сʱ
- ³æºÅ: 291104
- ×¢²á: 2006-10-28
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
hustesewzw: ½ð±Ò+30, ¡ï¡ï¡ïºÜÓаïÖú 2014-10-08 12:06:05
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
hustesewzw: ½ð±Ò+30, ¡ï¡ï¡ïºÜÓаïÖú 2014-10-08 12:06:05
| Å£¶ÙÀ·ðÉ·¨ÊǵäÐ͵ľֲ¿×îÓÅËã·¨£¬¶Ô³õÖµ·½³ÌÃô¸Ð¡£99¸ö·½³Ì99¸öδ֪Êý£¬Ïë¸ø³öºÏÊʵijõÖµ¶ÔÒ»°ãÈËÀ´Ëµ¼¸ºõ²»¿ÉÄÜ¡£Èç¹û½ö½öÏëµÃµ½½á¹û£¬½¨ÒéÓÃ1stOptÀ´Çó£¬È«¾Ö×îÓÅ£¬²»ÒÀÀµ³õÖµ£¬Ê¹ÓÃÒ²ºÜ¼òµ¥¡£ |
5Â¥2014-10-08 11:09:25
hustesewzw
Ìú³æ (³õÈëÎÄ̳)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 2.5
- Ìû×Ó: 22
- ÔÚÏß: 28Сʱ
- ³æºÅ: 1021881
- ×¢²á: 2010-05-18
- רҵ: »·¾³¹¤³Ì
6Â¥2014-10-08 12:05:03
tutu6287
Òø³æ (СÓÐÃûÆø)
- Ó¦Öú: 6 (Ó×¶ùÔ°)
- ½ð±Ò: 203.9
- É¢½ð: 338
- Ìû×Ó: 95
- ÔÚÏß: 84.2Сʱ
- ³æºÅ: 568457
- ×¢²á: 2008-06-03
- רҵ: ½á¹¹¹¤³Ì
7Â¥2014-10-09 19:34:20
qxq_6
гæ (³õÈëÎÄ̳)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 1
- Ìû×Ó: 3
- ÔÚÏß: 1.8Сʱ
- ³æºÅ: 2482628
- ×¢²á: 2013-05-26
- רҵ: º£Ñ󹤳Ì
8Â¥2018-08-21 23:31:22













»Ø¸´´ËÂ¥
, 1)).