机械必威体育网址
标题:
请教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 U
l = length(x0);
( s2 ~. n8 B# p$ {* m( h
B=eye(l); %A取为单位阵
4 l' z L0 U0 w& b- |, ~/ c
eps=1.0e-4;
- r8 x2 o5 c) X0 c# x5 a
else
! }; 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, \( A
end
+ x6 t( |8 o+ c( z9 c5 ]: E
end
/ M4 u* m3 K/ G3 u! B/ T
fx = subs(F,findsym(F),x0);
O; I1 W; J5 j4 Z h7 n
r=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, g
while tol>eps
; f1 }, u `# A
x0=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 R
y=r-x0;
' r* p5 t1 ^: @) ^& G+ M, A3 d
fr = subs(F,findsym(F),r);
7 {. H4 U& N: e; c6 ^& t8 x5 h
z = fr-fx;
; ?: B( r1 u3 H3 C$ d
B1=B+ y*y'/(y'*z)-B*z*z'*B/(z'*B*z); %调整A
9 ~$ B+ j0 C2 }7 r! v! X- A
B=B1;
1 Q4 R {5 Z9 v+ w' T( i
n=n+1;
/ l+ J' n) b# w$ g4 p; c) Z
if(n>100000) %迭代步数控制
$ m" [9 ~/ ]3 v+ C- p! p, t
disp('迭代步数太多,可能不收敛!');
; `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- ]( _; q
tol=norm(r-x0);
5 n6 T e7 X! O& J- L
end
, h ^+ e& N( |' v3 j7 A
问题:这个程序我是通过其他方法改变来的,现在想在这个基础上增加一个求偏导的一个函数类似于“df=jacobian(f,[x1 x2]);%函数f的偏导”,可是加进去以后就会出现错误,改正好多次,都不行,后来实在不行我就加在了调用函数中,可是这么做,运行效率太低,唯恐老师会减分,所以希望各位前辈能给予实质性的指点,谢谢!
欢迎光临 机械必威体育网址 (//www.szfco.com/)
Powered by Discuz! X3.4