机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 1986|回复: 0

请教MATLAB编程?

[复制链接]
发表于 2015-11-21 23:09:14 | 显示全部楼层 |阅读模式
优化设计老师布置用MATLAB对变尺度法进行MATLAB编程(也叫拟牛顿法),我是用拟牛顿法中的BFD法进行编程,程序如下:(问题在程序后面)
8 d7 b& U8 `* R, g& @4 w" d4 \function [r,n]=mulDFP(F,x0,B,eps)* |7 p/ O* [8 E5 x  S, c; P
%用拟牛顿法中的DFP法中求极小点和极小值。0 P' Z2 i* P' ~) f( B, k# O
%Designed by GAO,Mechanical Engineering College
0 {% K8 W' T4 M%Shenyang University of Technology
$ o! o  f- z9 a8 I. ?5 u%November,20154 h* m+ }% f3 b+ @$ M* l3 J: ~
%调用格式:
. V0 k) X% U4 S! \  |. s%syms x1 x2;
  w* P- j0 r0 t* c0 B( A%z=表达式;
6 \# f, J- Y+ ?" A4 F%zx1=simple(diff(z,x1)),zx2=diff(z,x2)' E6 a" L# c* Y" t( s9 C
%X0=[给定初始值];+ q+ b" y4 u! q- b' }
%f=[zx1;zx2];7 X! R, l/ Z- Z! S
%[n,r]=mulDFP(f,x0)
+ {9 h0 f& e5 C9 z& dif nargin==2
; |+ b( V' J/ i% Ul = length(x0);
7 i0 s: }4 {# o2 g, ~, zB=eye(l); %A取为单位阵. H5 u8 G) X, I9 k- ]" _
eps=1.0e-4;
3 q7 V# p4 S9 k- R! ]( s$ m; Selse6 d4 ^# g" K  U- M) d
if nargin==3
) ?2 T' j5 C" m1 E5 z4 ]eps=1.0e-4;
7 G/ r; ?9 e) M, g4 K0 _5 H4 w/ yend
# p; H/ C& G0 Pend
8 V; @' `  h& _% Y7 y7 }. K( qfx = subs(F,findsym(F),x0);
0 o. [% G2 U- m% tr=transpose(x0)-B*fx;9 X8 e$ B8 V; t
n=1;
, w5 y3 M. N$ a% x( q/ W+ otol=1;# R! ^8 T) T+ x) T" b$ f# n
while tol>eps
6 I  i% K; B! I, ~9 ~% [x0=r;
4 {" t5 B- g3 g: J  K: A" q  B1 ?( g) ], Tfx = subs(F,findsym(F),x0);' `6 E) C( Y- z* K
r=x0-B*fx;3 {. Q: m3 {5 Q& M3 U) S
y=r-x0;
5 y# r" C2 Y& b! T, b$ ?5 A: nfr = subs(F,findsym(F),r);( v: _$ @0 e2 C" u/ k
z = fr-fx;
4 ?: z2 ]6 a7 \! m, ]B1=B+ y*y'/(y'*z)-B*z*z'*B/(z'*B*z); %调整A
) T6 v+ Z2 z- m0 a9 w( cB=B1;% X# C& c7 |5 t0 U' V, Z: w) u; `5 l
n=n+1;" l! \7 z- c' G4 {2 a
if(n>100000) %迭代步数控制, C& {) s5 Z- r4 q: p
disp('迭代步数太多,可能不收敛!');3 y7 {7 m& l) Y8 d9 |; f# V
return;
3 H2 G  J! o* S* b* F% Q# J5 E- v4 Tend
6 o( U8 y& X4 v7 vtol=norm(r-x0);) N6 x2 e. @# x' ^# r
end
1 Q% m1 V3 C7 }/ c2 L( c: ?问题:这个程序我是通过其他方法改变来的,现在想在这个基础上增加一个求偏导的一个函数类似于“df=jacobian(f,[x1 x2]);%函数f的偏导”,可是加进去以后就会出现错误,改正好多次,都不行,后来实在不行我就加在了调用函数中,可是这么做,运行效率太低,唯恐老师会减分,所以希望各位前辈能给予实质性的指点,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-15 21:41 , Processed in 0.055388 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表