找回密码
 注册
关于网站域名变更的通知
查看: 571|回复: 4
打印 上一主题 下一主题

函数问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-11 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

. \) v7 a# _0 B+ a0 g( A3 g/ oclear;+ b. G  _: u5 q
t=1.43;( C4 m. J* R# O" }, ^5 s) D) g, m
t0=0.562;%初始参数, y, h4 d# p4 h5 a$ b/ A- t
zeta_m=sqrt(2)/2;%ζm
1 C1 {) x- B2 ?$ zA=(4*t+t0)/(2*t*t0);
2 \8 l& `" l; oB=t0^2*t;
$ h& }) y+ a9 eC=t0+t;%简化参数
3 I$ @& u& x# I4 [syms x1;; e/ X/ f, U. I/ |  G
syms x2;" R- E9 y& |/ W& t$ ^, @; y: q8 \  W. C- }
w0=A/(zeta_m*x1);
" t) R4 R8 E% e4 Ja=A*(1-1/x1);/ [7 ~" S8 w& L4 h$ G6 ^& m
kp=0.5*(a*zeta_m+w0)*a*w0*B-1;
9 @  U9 X: ?, c6 {ki=a^2*w0^2*B*0.25;
* A# n& R7 L% m$ l) qkd=0.25*(a^2+4*a*zeta_m*w0+w0^2)*B-C;%三个PID参数) f0 q* [+ V. n7 h
Kiw=(kd*(1i*x2)^2+kp*(1i*x2)+ki)/(1i*x2);/ |4 n- X1 O+ r8 o  G/ A
Giw=((1i*x2)^2-10.68*(1i*x2)+37.99)/(1.43*(1i*x2)^3+16.27*(1i*x2)^2+65.01*(1i*x2)+37.99);* Z, y2 o6 F' `. h
Siw=1/(1+Kiw*Giw);7 G  I; i4 B; t! J% p
f=norm(Siw,inf);
4 @! L7 Q4 {* z  M# D" Cx=[7;1];
9 |& v. C2 C$ Q$ u/ z5 ke=10^(-2);7 n7 ~- w, i- z& Y: s' u5 Z0 n
[k, ender]=steepest(f,x,e);, {; A- l3 x% _8 L$ v
function [k, ender]=steepest(f,x,e)* B" }4 X% \0 P+ h
%梯度下降法,f为目标函数(两变量x1和x2),x为初始点,如[3;4]
$ T1 C2 H- U0 |8 L% S6 X  psyms x1 x2 m; %m为学习率
% G2 ~9 ?4 n6 rd=-[diff(f,x1);diff(f,x2)];  %分别求x1和x2的偏导数,即下降的方向$ u) h. i) B4 V
flag=1;  %循环标志
& E2 r2 q  @. O% m% jk=0; %迭代次数
" `+ I& f0 I9 ]) V( C4 @& F( Twhile(flag)
4 B4 ^( \+ |$ F6 q; K4 c    d_temp=subs(d,x1,x(1));      %将起始点代入,求得当次下降x1梯度值$ M3 t& o! Q" h2 G
    d_temp=subs(d_temp,x2,x(2)); %将起始点代入,求得当次下降x2梯度值
* {: `8 W2 f/ V/ U/ z3 }) Y- f    nor=norm(d_temp); %范数
7 T' o5 Y8 H  A6 o+ y+ l    if(nor>=e)
. o) n8 }3 K# i8 a  S        x_temp=x+m*d_temp;            %改变初始点x的值
9 [% |  L5 b5 ^7 P        f_temp=subs(f,x1,x_temp(1));  %将改变后的x1和x2代入目标函数
, r. s- @4 N8 I% H9 m        f_temp=subs(f_temp,x2,x_temp(2));# p# h+ U* C7 a
        h=diff(f_temp,m);  %对m求导,找出最佳学习率
6 \( W6 Y0 F5 o% t. t( h' E        m_temp=vpasolve(h);   %求方程,得到当次m. W% D& ~# R$ N2 O7 ^% }
        x=x+m_temp*d_temp; %更新起始点x  u. {3 D/ }6 [) ^
        k=k+1;
4 E( J8 S/ p8 q( {1 J1 t/ Y# b- m    else
' j1 f0 _0 `: Z8 z7 O) t8 `        flag=0;
9 ~1 t+ G9 X8 E) x* e1 L7 O* f/ O    end
4 ?8 J! _6 c- fend. x3 f( d. D, d
ender=double(x);  %终点7 W, A3 A* d( |. d2 |2 I3 Q- w
end, R6 @3 B5 D. N6 e( u

# x$ ^" H" R! m2 X% d: N6 w6 B
. }* e+ N" l, w6 y9 R8 G: Y  t; ^2 u; g4 a: ?
运行后提示# b$ K- d  z1 b0 T. [9 \% w
beiyong
2 F; h( R( K7 g" j' P错误使用 symengine
) e8 m7 f/ p$ E2 M7 }% _The dimensions do not match.7 M7 P+ b) Q% d+ F. A

1 L4 d5 L& v! A9 R0 N出错 sym/privBinaryOp (line 946)4 M2 V. v0 h; i5 J
            Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
( k! m7 |, f6 {# }/ l' b/ j1 H) a2 x& D9 V9 O; \* |- D9 S
出错  *  (line 273)
4 f; }' z( D  |, U0 _( s        X = privBinaryOp(A, B, 'symobj::mtimes');& N8 d; h, O5 R& v/ t# _

  d, U. [  {5 [8 [2 a出错 beiyong>steepest (line 38)
4 p; h6 _- m5 k3 @# V        x=x+m_temp*d_temp; %������ʼ��x
5 E5 m0 C7 Q7 @# c, y
* W4 m0 v2 H( Q$ l+ v; p1 |- I  `出错 beiyong (line 21)4 ~% ^9 v+ Y0 x' j4 b! J
[k, ender]=steepest(f,x,e);! l) E: I$ P& D# m6 A! a
求助,感谢!& a% u5 F3 f5 Z2 J7 z" D

8 F4 U: s0 T9 a# w$ G求助- s: w6 v; P" e8 j

0 p) L: c! b" R

该用户从未签到

2#
发表于 2020-8-11 10:52 | 只看该作者
帮你顶一下

该用户从未签到

3#
发表于 2020-8-12 10:09 | 只看该作者
个人认为在自定义函数求解方程时m_temp=vpasolve(h);   %求方程,得到当次m存在问题,求解结果为空,- j9 {$ Z- H& Y" ?. R
改用:m_temp=solve(h,m,'ReturnConditions',true);

该用户从未签到

4#
发表于 2020-8-12 11:15 | 只看该作者
来学习学习

该用户从未签到

5#
发表于 2020-8-12 13:38 | 只看该作者
楼上正解,楼主可以试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 20:15 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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