久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱
機械社區
標題:
請教MATLAB編程?
[打印本頁]
作者:
展翅翱翔with
時間:
2015-11-21 23:09
標題:
請教MATLAB編程?
優化設計老師布置用MATLAB對變尺度法進行MATLAB編程(也叫擬牛頓法),我是用擬牛頓法中的BFD法進行編程,程序如下:(問題在程序后面)
4 l: R' P) v: R+ h. A# z
function [r,n]=mulDFP(F,x0,B,eps)
2 _ [7 a c$ S+ `1 Z9 |9 l
%用擬牛頓法中的DFP法中求極小點和極小值。
0 F& [% N5 L; |* _9 o7 d
%Designed by GAO,Mechanical Engineering College
) l( M( d3 Y1 K+ u- g* ^
%Shenyang University of Technology
- w/ x+ ^7 [- \! p) m% X
%November,2015
) Z; c! Q1 P- X m9 P
%調用格式:
: x: R4 D/ n* R: k3 O* }- |
%syms x1 x2;
) B! i: A3 T0 G1 o: B
%z=表達式;
/ v+ F5 Y9 p+ x' A
%zx1=simple(diff(z,x1)),zx2=diff(z,x2)
8 }, Q4 \# M! R- v! h
%X0=[給定初始值];
0 i% g2 N0 Q) _% r* K7 ?) z
%f=[zx1;zx2];
) \/ Y8 |2 \9 m/ n) t% p' y5 I/ v
%[n,r]=mulDFP(f,x0)
0 Q4 T" ^9 |* Y& ]0 p4 }! \
if nargin==2
" j$ g; R: h' A& n
l = length(x0);
2 e- h2 `: T1 ]& g( i h
B=eye(l); %A取為單位陣
, w A6 F# m) n& g6 G6 D0 M" i
eps=1.0e-4;
: |) {& \, }$ G" U5 ~) m
else
7 D, }5 e/ H( d( i
if nargin==3
1 }) I( q, _3 R' n0 {7 u3 x3 x: N t
eps=1.0e-4;
1 i. R4 {, s2 K( o. L! A7 T
end
i9 \6 \0 H' y' X8 B* L" x
end
$ \6 O# o# {" w. x; T
fx = subs(F,findsym(F),x0);
' U0 N% N3 |( i, m1 j( e
r=transpose(x0)-B*fx;
( M" M/ d& X+ o' F- E$ A
n=1;
5 R8 D- ]+ f0 f
tol=1;
# E& [- p" ~, a. y
while tol>eps
. k4 `$ J q- A1 g4 C; l9 x
x0=r;
# Y1 ^9 p( i% K3 N" @. y9 A
fx = subs(F,findsym(F),x0);
% [+ V$ Q0 U9 _3 h
r=x0-B*fx;
# K6 t* i/ A' W: ~4 h: k
y=r-x0;
! l9 O5 H; e" ~ }' L h* `5 x
fr = subs(F,findsym(F),r);
( P2 K6 {! u2 U* e( D: v
z = fr-fx;
1 F6 e& a' Q5 U7 r: v
B1=B+ y*y'/(y'*z)-B*z*z'*B/(z'*B*z); %調整A
, R N" I0 ]5 D4 T" S) a- m! c5 s
B=B1;
# L) I7 U: C3 t8 n/ h6 W
n=n+1;
0 V3 A2 F- w, s- H9 U
if(n>100000) %迭代步數控制
) j* i3 ]! @/ S! Q( g% b
disp('迭代步數太多,可能不收斂!');
' S" |: g M$ U, N( j
return;
0 r1 v+ H: s) r
end
/ Z( @+ U6 m" }8 J4 z
tol=norm(r-x0);
& L" x; k$ A X4 k; Q
end
- Q2 B8 L( D4 ]0 x' c7 \+ q
問題:這個程序我是通過其他方法改變來的,現在想在這個基礎上增加一個求偏導的一個函數類似于“df=jacobian(f,[x1 x2]);%函數f的偏導”,可是加進去以后就會出現錯誤,改正好多次,都不行,后來實在不行我就加在了調用函數中,可是這么做,運行效率太低,唯恐老師會減分,所以希望各位前輩能給予實質性的指點,謝謝!
歡迎光臨 機械社區 (http://www.ytsybjq.com/)
Powered by Discuz! X3.5