机械必威体育网址

标题: 请教MATLAB编程? [打印本页]

作者: 展翅翱翔with    时间: 2015-11-21 23:09
标题: 请教MATLAB编程?
优化设计老师布置用MATLAB对变尺度法进行MATLAB编程(也叫拟牛顿法),我是用拟牛顿法中的BFD法进行编程,程序如下:(问题在程序后面)4 h7 P% \# e1 g4 ?1 I3 h
function [r,n]=mulDFP(F,x0,B,eps)' s; l% U* j* S) m0 Z' V
%用拟牛顿法中的DFP法中求极小点和极小值。* U+ K  ?0 v0 s3 f9 p: ?
%Designed by GAO,Mechanical Engineering College
+ ^+ ^; C' Z! R9 m: J%Shenyang University of Technology
( m+ f8 P, ?/ R* Q6 Y$ @# ~7 Z, ~. b%November,2015" J0 N9 k: M0 A
%调用格式:
+ `: G8 o6 T! @5 N9 j  R%syms x1 x2;" |( c9 D. j9 P; m* b5 m/ Q
%z=表达式;# d  Z, ?8 U6 i5 h  V) I) H, P( D
%zx1=simple(diff(z,x1)),zx2=diff(z,x2)% i4 d* n% }2 f, A. {
%X0=[给定初始值];, C+ C1 }! D7 [/ E
%f=[zx1;zx2];4 n/ P! C/ u& {' h5 M9 R+ B
%[n,r]=mulDFP(f,x0). W# ]/ O, K) y' G4 K4 Y: @0 Q
if nargin==2
' g. }9 G! h) ?/ s% M) V4 Ul = length(x0);
( s2 ~. n8 B# p$ {* m( hB=eye(l); %A取为单位阵
4 l' z  L0 U0 w& b- |, ~/ ceps=1.0e-4;
- r8 x2 o5 c) X0 c# x5 aelse! }; d2 D/ q5 y& e! o" S. O  d
if nargin==3) i* G/ H1 {; E+ T/ b
eps=1.0e-4;
" C4 w6 w$ I7 O8 d; @( X, \( Aend+ x6 t( |8 o+ c( z9 c5 ]: E
end
/ M4 u* m3 K/ G3 u! B/ Tfx = subs(F,findsym(F),x0);
  O; I1 W; J5 j4 Z  h7 nr=transpose(x0)-B*fx;' X$ G3 i# W/ c
n=1;% G" w, I5 K0 S& C3 z7 U* O
tol=1;
+ ^/ H1 Y3 V- T- O7 v9 C3 b, gwhile tol>eps
; f1 }, u  `# Ax0=r;
8 `( E0 O3 ^6 k! M! h% t  W. _fx = subs(F,findsym(F),x0);; q' A) J' _6 w- T9 |' }/ w
r=x0-B*fx;
$ ?& e: k" e: x, T4 S. j* v4 v  Ry=r-x0;
' r* p5 t1 ^: @) ^& G+ M, A3 dfr = subs(F,findsym(F),r);
7 {. H4 U& N: e; c6 ^& t8 x5 hz = fr-fx;
; ?: B( r1 u3 H3 C$ dB1=B+ y*y'/(y'*z)-B*z*z'*B/(z'*B*z); %调整A9 ~$ B+ j0 C2 }7 r! v! X- A
B=B1;
1 Q4 R  {5 Z9 v+ w' T( in=n+1;
/ l+ J' n) b# w$ g4 p; c) Zif(n>100000) %迭代步数控制
$ m" [9 ~/ ]3 v+ C- p! p, tdisp('迭代步数太多,可能不收敛!');; `5 I5 Q  X4 h0 k7 S1 y
return;, B5 z% F; {5 ?5 Z- ]5 B* X5 `
end
* D$ h5 k' y; a+ |. K" J# n- ]( _; qtol=norm(r-x0);
5 n6 T  e7 X! O& J- Lend, h  ^+ e& N( |' v3 j7 A
问题:这个程序我是通过其他方法改变来的,现在想在这个基础上增加一个求偏导的一个函数类似于“df=jacobian(f,[x1 x2]);%函数f的偏导”,可是加进去以后就会出现错误,改正好多次,都不行,后来实在不行我就加在了调用函数中,可是这么做,运行效率太低,唯恐老师会减分,所以希望各位前辈能给予实质性的指点,谢谢!




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4