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

函数问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

$ o9 m, G- T& j& K1 dclear;" m. }& M7 k8 [( Z6 ]- \; e+ N
t=1.43;" N6 o8 Y- X( R- q: J: X9 D
t0=0.562;%初始参数
- }+ h. }* b" u" @zeta_m=sqrt(2)/2;%ζm
7 q. t/ W- }1 v9 m+ pA=(4*t+t0)/(2*t*t0);
# K% B# }. C4 |! A, y3 X! U8 }B=t0^2*t;
2 ?7 Q3 V' k4 U. bC=t0+t;%简化参数
3 X; g) w) l0 D9 u6 j" F" C' X, m$ Csyms x1;' ?  r& o! X5 a2 U; p8 q. N5 W
syms x2;
( x: H& j0 O9 v8 y& Cw0=A/(zeta_m*x1);
% U7 m. o+ }9 g; Ra=A*(1-1/x1);. C/ L: _$ T& m
kp=0.5*(a*zeta_m+w0)*a*w0*B-1;; R) @* c  A. ?5 O
ki=a^2*w0^2*B*0.25;. @; V9 y# R4 p3 ^% J
kd=0.25*(a^2+4*a*zeta_m*w0+w0^2)*B-C;%三个PID参数0 p/ O( q* {; ~" j( I: W7 m
Kiw=(kd*(1i*x2)^2+kp*(1i*x2)+ki)/(1i*x2);1 M  d. W& R- s8 b$ C5 Y
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);
& f6 j/ a- G/ M+ d% O: h/ iSiw=1/(1+Kiw*Giw);" t8 v7 ?  O: A' z& Q" p+ B
f=norm(Siw,inf);
# _2 W* c9 @. c0 Zx=[7;1];/ ?9 ~8 l" {" k' S
e=10^(-2);+ J7 K1 a, W) W; h
[k, ender]=steepest(f,x,e);
+ k6 y8 m$ K& D7 i# G- `. ]4 {function [k, ender]=steepest(f,x,e)
1 Z6 R, v- m& k- V# n%梯度下降法,f为目标函数(两变量x1和x2),x为初始点,如[3;4]* Z  _3 R4 H/ [
syms x1 x2 m; %m为学习率
2 ~) m! r5 k0 l; e$ T- m- jd=-[diff(f,x1);diff(f,x2)];  %分别求x1和x2的偏导数,即下降的方向
+ w' X, @( T4 D+ b$ R& R' Xflag=1;  %循环标志
7 S# O* ?* z1 [3 ek=0; %迭代次数% K- k5 Y: u$ H+ i1 |9 V
while(flag)0 a7 w: t, d1 M5 G
    d_temp=subs(d,x1,x(1));      %将起始点代入,求得当次下降x1梯度值0 p0 j3 ?5 `  X4 G
    d_temp=subs(d_temp,x2,x(2)); %将起始点代入,求得当次下降x2梯度值
8 O/ H1 {5 ^2 B1 u8 e    nor=norm(d_temp); %范数. |& |# l  ]! n' A
    if(nor>=e)
% M4 z5 W3 ^4 c        x_temp=x+m*d_temp;            %改变初始点x的值/ x: U9 _0 g( ^8 \+ U
        f_temp=subs(f,x1,x_temp(1));  %将改变后的x1和x2代入目标函数& A2 y7 M+ ^8 }- W9 |2 q
        f_temp=subs(f_temp,x2,x_temp(2));% e1 t0 Y' k2 v7 L' \
        h=diff(f_temp,m);  %对m求导,找出最佳学习率
5 s- ~! Z2 y( U% S1 y        m_temp=vpasolve(h);   %求方程,得到当次m
  ?2 n+ J  j: _# ?        x=x+m_temp*d_temp; %更新起始点x
+ }+ v4 o$ x" Q6 i0 f. k        k=k+1;
/ u! F3 J- I2 r' f, w! N5 D4 Y    else/ ?8 f% o6 X4 F% j" w; u- g) z9 b' U
        flag=0;. U: Q) r2 M  X+ }9 l. ^4 a- \0 i
    end
- {, U" z1 u) Oend
' m7 m3 @) M) p8 s) f& V* q+ }; Xender=double(x);  %终点
3 D1 s7 X. f" R/ }" kend  v2 C4 l% M2 R$ `' O! b# H* {: u

2 y+ g: Q  I7 C. v& n0 a* _1 t; y$ ~6 p3 }& P

$ S, G3 m2 H. F' ?+ K运行后提示
* s7 b8 l$ f( t. D# Bbeiyong
9 h8 Y" C+ b/ J) n7 p. z' o错误使用 symengine, c6 E) l1 ?+ N2 L3 O
The dimensions do not match.6 A5 h/ T5 j, g) C+ a* N/ G8 @8 M

% M; C3 f0 @6 ^) e/ R( @出错 sym/privBinaryOp (line 946)
9 t8 F1 E: r& U* b3 w6 z4 X, S            Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});; z3 H: U' {" n4 J9 V6 u
0 {+ C" P4 i; r5 O" n
出错  *  (line 273)
; j8 u( ^8 Y  r4 k9 c1 r        X = privBinaryOp(A, B, 'symobj::mtimes');
! m7 z& }- W6 N  h: T6 z
' j6 n; q5 |, {0 U9 D- Z出错 beiyong>steepest (line 38)% m4 i8 V0 g" {3 r& p5 U- n- A5 k
        x=x+m_temp*d_temp; %������ʼ��x
& `- N. Y( j0 z+ \  a  B3 }% L. d6 @# J/ j  c) v9 R; \7 @& `$ _: y
出错 beiyong (line 21)
9 z5 F2 h+ N& j- ?( |# E# K[k, ender]=steepest(f,x,e);
9 O, u& N3 S. O) {, R求助,感谢!) Y& `* H8 g6 q! O, z# m

( F6 B' B1 N0 @( K$ y, R3 G求助1 n8 y9 _7 J4 s) I( ^5 n

5 W: }  d7 e. q/ [, d- B' A  C9 i

该用户从未签到

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

该用户从未签到

3#
发表于 2020-8-12 10:09 | 只看该作者
个人认为在自定义函数求解方程时m_temp=vpasolve(h);   %求方程,得到当次m存在问题,求解结果为空,; C( ^, K" x( a9 ^9 |
改用: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 18:30 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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