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

函数问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

8 l+ E9 P4 U4 h4 }9 Iclear;7 \  Q7 E- M. V( r4 Y, I
t=1.43;* @/ q" V- P6 ?$ _* o1 R
t0=0.562;%初始参数
, p" x& z2 G. v/ v1 \zeta_m=sqrt(2)/2;%ζm, U7 L) [% B- i! S) f
A=(4*t+t0)/(2*t*t0);3 V0 V# O5 q4 Z9 Z) N' ?. t
B=t0^2*t;, ^3 J% Q( F# g
C=t0+t;%简化参数: i4 Y; ~! t1 l7 Y0 b
syms x1;; W4 y+ W; Y9 G( A1 ^; @  _
syms x2;
& v1 O0 s, m' R  X; ]/ \+ rw0=A/(zeta_m*x1);& M) S% C" t( ]( E
a=A*(1-1/x1);8 [, Q1 T* h7 E6 P$ Z
kp=0.5*(a*zeta_m+w0)*a*w0*B-1;/ k# m' N# o6 P3 {+ i* p
ki=a^2*w0^2*B*0.25;; Z) s9 T: @4 }, X5 r( F
kd=0.25*(a^2+4*a*zeta_m*w0+w0^2)*B-C;%三个PID参数
% A, |0 a4 h7 y% o& mKiw=(kd*(1i*x2)^2+kp*(1i*x2)+ki)/(1i*x2);
# @" _% D7 W; 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);
0 W' a* o9 `4 o3 D4 A" @5 r' T5 G5 L; @Siw=1/(1+Kiw*Giw);# p' V1 Z% [/ A) {. g
f=norm(Siw,inf);
7 u, r' l0 ~0 o. G9 Q( T- G) @- ox=[7;1];
5 R. i+ e9 b1 E" Y- Ze=10^(-2);" x4 ^1 l: P% F9 D8 I; G
[k, ender]=steepest(f,x,e);
  |6 r+ d; k  u" _: q: b; t  }( t* efunction [k, ender]=steepest(f,x,e)
! }; c  i2 Z; Q8 w% L$ q; K- U%梯度下降法,f为目标函数(两变量x1和x2),x为初始点,如[3;4]
5 ~; \+ r. m& x+ E& \syms x1 x2 m; %m为学习率1 b# x/ C! `1 R
d=-[diff(f,x1);diff(f,x2)];  %分别求x1和x2的偏导数,即下降的方向; J* v( X1 h+ ~- |
flag=1;  %循环标志
& z3 K5 N' D0 F0 ak=0; %迭代次数& l0 c: C5 S6 v9 T
while(flag)
6 {2 C$ X& Z9 R( c2 V    d_temp=subs(d,x1,x(1));      %将起始点代入,求得当次下降x1梯度值
; T  c) [/ d/ V! j  p8 Z  ]    d_temp=subs(d_temp,x2,x(2)); %将起始点代入,求得当次下降x2梯度值2 `& m$ Z4 n* N- `% G( R
    nor=norm(d_temp); %范数6 F7 e7 E. P; ^% p
    if(nor>=e)
) u! k. A2 V* S        x_temp=x+m*d_temp;            %改变初始点x的值
. V1 C; ~% Y2 R9 n, |/ G        f_temp=subs(f,x1,x_temp(1));  %将改变后的x1和x2代入目标函数1 Z- x" ~8 y9 n: s
        f_temp=subs(f_temp,x2,x_temp(2));/ o$ M/ Z: I. n
        h=diff(f_temp,m);  %对m求导,找出最佳学习率
2 D1 }/ D+ M2 ?' \+ B& ~$ U% u        m_temp=vpasolve(h);   %求方程,得到当次m& L& ?# {* V: |8 s
        x=x+m_temp*d_temp; %更新起始点x
0 D3 l3 k- K6 T( |        k=k+1;6 Y- Y3 E) F" e7 s" Y9 T
    else
* ?/ B7 u% _6 S6 p9 x& C        flag=0;
$ Z# I7 k2 \; t) F+ j) s    end
- N, |% P2 p, I- Cend* a# Y- v% B7 Z
ender=double(x);  %终点
0 s7 ]# T" q1 p0 ~0 @end
% l& j% [/ q5 m1 p; G
( @7 K  `& ^" `# |: I# W8 S* X& Y; s& [! f6 N

9 o% M7 y% U5 c运行后提示; \. U8 C" G$ Y0 C
beiyong# z  N& f9 ?; h7 W9 C* e( @8 t
错误使用 symengine2 n7 M/ O5 p5 ~1 s
The dimensions do not match.' l- I$ F) c: m

/ B0 B* j5 M- u7 u出错 sym/privBinaryOp (line 946)
+ `; h, |/ a+ e& _            Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
7 W, ?% x* L' g  z; y# Y7 H& r$ ~6 K
出错  *  (line 273)0 q8 O, b/ D* p' R" s% m
        X = privBinaryOp(A, B, 'symobj::mtimes');( _3 E& `7 V! ?0 C& Z* t

$ }/ ~5 g7 S; _0 `; S6 h; X出错 beiyong>steepest (line 38)6 {& N! C  Y2 i; u1 N2 U
        x=x+m_temp*d_temp; %������ʼ��x
: G& z7 V2 c6 H% S+ f2 m# a0 M3 z3 X
出错 beiyong (line 21)5 b; _# J0 l0 n" O- f* v9 g8 ]1 t
[k, ender]=steepest(f,x,e);
7 s" B9 `  `! k3 r4 S/ T求助,感谢!0 U. [2 _2 O" c( @& r
1 X; Q& U" ^1 Z2 Y
求助- G* A# r8 a) b+ |# ]8 {) m' k
, d: _- K, T! Q

该用户从未签到

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

该用户从未签到

3#
发表于 2020-8-12 10:09 | 只看该作者
个人认为在自定义函数求解方程时m_temp=vpasolve(h);   %求方程,得到当次m存在问题,求解结果为空,+ \# Y& T& `( l% q
改用: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-8-18 09:10 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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