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

函数问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

) x8 A$ \1 D' b$ E1 _- d) uclear;
' G  R- H2 K8 pt=1.43;0 r* M2 |, R& j/ _$ T
t0=0.562;%初始参数
' s* D9 r6 u5 d" U5 lzeta_m=sqrt(2)/2;%ζm. i% P- @3 b6 J( X
A=(4*t+t0)/(2*t*t0);
$ w8 [4 @# ?! y. h1 Y" s7 `" y- h% ^B=t0^2*t;
6 R+ |( e/ C* Q! V5 O" Z7 J) o% B; KC=t0+t;%简化参数' V, S9 d( J3 O% Q5 w5 C3 ~1 U& K
syms x1;, T9 Z( f* O7 A7 t6 N
syms x2;- n, D* H. \4 W/ O. G* ~6 t
w0=A/(zeta_m*x1);
# o* [% j! d$ ^% _3 ia=A*(1-1/x1);
$ n) e8 e: b  A, u% K0 Lkp=0.5*(a*zeta_m+w0)*a*w0*B-1;
. U8 c5 A. B) _7 Xki=a^2*w0^2*B*0.25;9 F: s& t7 z) s5 j( ~+ U( y0 C9 x
kd=0.25*(a^2+4*a*zeta_m*w0+w0^2)*B-C;%三个PID参数
2 E4 m9 v$ k5 f; QKiw=(kd*(1i*x2)^2+kp*(1i*x2)+ki)/(1i*x2);. F' v9 T. d& N7 Q
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);$ ~( V9 V: E2 Z6 b& `2 K- s
Siw=1/(1+Kiw*Giw);0 A2 I; ]6 V/ d% [8 X  G) Z& J
f=norm(Siw,inf);3 `& F* T. @+ c/ D
x=[7;1];! C( j' b$ P4 i4 g  d; ]
e=10^(-2);
9 j# q+ F* B% c; e! C, K[k, ender]=steepest(f,x,e);& ~& |" x$ e+ J2 o' B# v/ Z
function [k, ender]=steepest(f,x,e)
1 n- m. w5 E7 r/ A" W%梯度下降法,f为目标函数(两变量x1和x2),x为初始点,如[3;4]2 G' o3 s1 ]' E* `" R' f# C$ z
syms x1 x2 m; %m为学习率  ^# E1 O4 h7 ^# w% c$ D5 e
d=-[diff(f,x1);diff(f,x2)];  %分别求x1和x2的偏导数,即下降的方向
/ J6 }1 q1 o; Lflag=1;  %循环标志
% ~# q9 H' Y+ mk=0; %迭代次数) n, v3 _; a. A6 I* H
while(flag)
3 s$ _; ~& O8 `# H- Z  Q  [    d_temp=subs(d,x1,x(1));      %将起始点代入,求得当次下降x1梯度值/ S# ~. K; Y! K5 o+ l
    d_temp=subs(d_temp,x2,x(2)); %将起始点代入,求得当次下降x2梯度值
3 W1 C5 N* I* L' j2 o" C: q    nor=norm(d_temp); %范数
! Y( F: c+ Q, q. J    if(nor>=e)% v1 O4 i# l7 c0 j5 U( |% X8 |
        x_temp=x+m*d_temp;            %改变初始点x的值
5 a4 @$ O7 L. j        f_temp=subs(f,x1,x_temp(1));  %将改变后的x1和x2代入目标函数
2 w& s8 L) W4 @: y+ O1 e) w2 q: X        f_temp=subs(f_temp,x2,x_temp(2));$ m6 ?( Y2 n* z7 d
        h=diff(f_temp,m);  %对m求导,找出最佳学习率1 J# ~" K% r' `. [2 j3 k
        m_temp=vpasolve(h);   %求方程,得到当次m
) K2 _' t: X: X' q& a2 w1 |        x=x+m_temp*d_temp; %更新起始点x
3 u) {4 h1 N% a: Z8 j! ~        k=k+1;6 w6 N$ [. ~3 q8 a  Q
    else- N( I4 B8 C8 v2 ^; \# C; x
        flag=0;
: J" d7 r' t* e( a5 J" K/ g' H    end7 s9 w4 Q; _. y
end
  M: T& m! B" \6 m6 M; Aender=double(x);  %终点7 b6 o7 x( \& O/ Y
end
" T: Z9 K* i- h# A9 U4 z) q
; Z5 w7 L, |  W- `3 t, O$ e- ^4 ], ]5 A- Z

% K% D* z' h9 ]8 ?运行后提示! U# K0 \- d) i8 u3 w) K/ n
beiyong0 p3 O% \9 V" H- d2 B4 E& S
错误使用 symengine/ ^3 C5 F+ U9 E- g; G, L
The dimensions do not match.- B5 g0 I3 z/ ?+ j" H" i3 Q

  ]1 y/ }% J  A: [' M2 {5 C( c+ \! q6 `出错 sym/privBinaryOp (line 946)# x, [' O2 Z3 [% j: t/ P
            Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
6 D8 q4 x/ M8 E' f
7 a6 [$ P2 s( g2 b* G( a2 j出错  *  (line 273)/ C$ q  }7 }5 {, n  W
        X = privBinaryOp(A, B, 'symobj::mtimes');
$ Y) K1 N# U$ C$ E7 \/ T) P) M5 D; N- m. C
出错 beiyong>steepest (line 38)6 G8 E7 _! {5 n! i) r" k- e
        x=x+m_temp*d_temp; %������ʼ��x7 O& M% k9 g& @% \9 T
; r9 ^1 ~( E9 t0 T8 b/ H; G
出错 beiyong (line 21)
1 G' w9 p0 e# m9 J, ][k, ender]=steepest(f,x,e);
# R7 g8 Y9 g8 ?. k求助,感谢!
/ ^  R0 Z8 h% o, f$ J5 z. e+ x, ]  W

: o$ N* P9 C5 S  G" \) v$ l求助" c" j1 q% ]0 [4 o" b3 ~' V5 n& F

1 q- p, e# [' ~7 a2 |

该用户从未签到

5#
发表于 2020-8-12 13:38 | 只看该作者
楼上正解,楼主可以试试

该用户从未签到

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

该用户从未签到

3#
发表于 2020-8-12 10:09 | 只看该作者
个人认为在自定义函数求解方程时m_temp=vpasolve(h);   %求方程,得到当次m存在问题,求解结果为空,/ W& k+ M2 \6 M7 a/ M4 ]
改用:m_temp=solve(h,m,'ReturnConditions',true);

该用户从未签到

2#
发表于 2020-8-11 10:52 | 只看该作者
帮你顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 19:50 , Processed in 0.171875 second(s), 25 queries , Gzip On.

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

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

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