机械必威体育网址
标题:
请教MATLAB编程?
[打印本页]
作者:
展翅翱翔with
时间:
2015-11-21 23:09
标题:
请教MATLAB编程?
优化设计老师布置用MATLAB对变尺度法进行MATLAB编程(也叫拟牛顿法),我是用拟牛顿法中的BFD法进行编程,程序如下:(问题在程序后面)
6 ^2 A9 x) g7 U
function [r,n]=mulDFP(F,x0,B,eps)
$ {' l! R0 ]' M% s" r9 [3 c$ g
%用拟牛顿法中的DFP法中求极小点和极小值。
+ |+ ]( Y& b! _( |
%Designed by GAO,Mechanical Engineering College
7 g0 m; W7 _3 R5 w5 Q. d8 g
%Shenyang University of Technology
1 R" V4 m: t. l2 }9 g
%November,2015
$ j3 H( T- H( @: g; i: }9 a$ v8 y
%调用格式:
9 g- e, U, ~4 S# I
%syms x1 x2;
: F$ b3 k# v7 {0 [3 a" r9 q% P
%z=表达式;
M: S# I: A" S, Y; d6 r- h
%zx1=simple(diff(z,x1)),zx2=diff(z,x2)
k4 {" x. P! i% u% f* {% ]
%X0=[给定初始值];
7 q4 W2 k A- e* v1 u3 K" y3 ^, {
%f=[zx1;zx2];
: ^. Q# c3 Q/ _5 l; z+ C
%[n,r]=mulDFP(f,x0)
; V6 T% E' b% l; [/ E' A
if nargin==2
* C( u& ^ v1 K% }
l = length(x0);
4 ~1 g( H+ W9 s" h
B=eye(l); %A取为单位阵
) a9 p W, Z' b' g' I0 c7 m% b
eps=1.0e-4;
5 T$ N6 e7 H! s& _2 E
else
s* {2 y0 H) M- B b
if nargin==3
8 r/ F. I h2 R y. ]! e1 M- J2 ]
eps=1.0e-4;
0 E/ F. q6 u4 U9 `/ s+ e- p/ f
end
+ t- \. E: A; _+ R! }% a; r: \
end
4 z; G( J! d3 d. v/ [
fx = subs(F,findsym(F),x0);
3 K. W& U# x( j, S% H! _
r=transpose(x0)-B*fx;
4 }8 C# f, B& C2 H4 U
n=1;
! O. i3 H3 z8 `" T
tol=1;
" a0 z2 i4 V* }: R& {1 l- N
while tol>eps
. A5 a, T# _& S' f( ?- Y
x0=r;
# f ]- c/ ?% Z* H+ ? o' k
fx = subs(F,findsym(F),x0);
: J% p7 g, f8 D5 V% B8 M @
r=x0-B*fx;
, [" ~& I' Y( _( n
y=r-x0;
2 p* T8 X3 f2 V; T/ ~
fr = subs(F,findsym(F),r);
8 t3 F6 z' r4 ^: d9 g7 f8 M: ^
z = fr-fx;
# o& A6 c7 V3 F% y9 t+ v
B1=B+ y*y'/(y'*z)-B*z*z'*B/(z'*B*z); %调整A
5 Y6 j) A S" M+ V
B=B1;
6 f1 I# p! }5 i+ |5 ]7 h
n=n+1;
$ d) r$ Q) k6 L3 t, `1 a* y) H
if(n>100000) %迭代步数控制
1 e8 v! @! z4 K3 O1 T. ?$ A
disp('迭代步数太多,可能不收敛!');
! S9 h' N. M& }) [
return;
3 I- Z2 U+ `1 e+ E% a+ s) X! X! o
end
. a, E0 A3 H& ~# v% j+ e( `
tol=norm(r-x0);
6 C4 X! t0 q$ v) Y
end
# D$ P9 O0 \) b& S. V, \9 y
问题:这个程序我是通过其他方法改变来的,现在想在这个基础上增加一个求偏导的一个函数类似于“df=jacobian(f,[x1 x2]);%函数f的偏导”,可是加进去以后就会出现错误,改正好多次,都不行,后来实在不行我就加在了调用函数中,可是这么做,运行效率太低,唯恐老师会减分,所以希望各位前辈能给予实质性的指点,谢谢!
欢迎光临 机械必威体育网址 (//www.szfco.com/)
Powered by Discuz! X3.4