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

循环问题,两次循环不一致

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-8 13:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值* w+ w7 ]  f7 Q/ |
! o8 O0 ~4 d6 [
理论上不管num 为几 第一个值不会变的( n% N& G# J0 N# p- K; V- i
但是
6 F: _, J$ M" c3 [0 T% c4 nnum = 1 时得到第一个值 ( R" e4 o% m4 o

2 @+ i; I: P3 bnum = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事
5 V4 T" b2 x- O+ R) O% S. o) Z7 u            
  f: D2 k) L) g
/ A# B  L& D5 v+ C  l7 U. C各位大大帮忙看下,不然睡不成觉了2 T4 ]0 E4 A" t' [& x5 X0 Z
部分程序如下num = 2; %设置层数
/ p: p' p( A8 g0 ~; v4 w9 c9 Q7 R: g% I* _, }
        g=linspace(1,2.4,200);" x$ g6 _7 F7 p+ `3 i# o4 ^: t
        for x=g- Y+ N5 C( Q0 Y) A; K* j. B
                %循环镶嵌处
0 z4 Q: G; n3 B4 U$ k
            for len =1:1:num  %len为厚度7 m# h  z: C. g  |* B) {0 V
                F1=2*pi*na*d1*cos(c2)/x;
% ]2 J6 u) s0 }8 S
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];$ c4 D( I0 e, |" o1 R2 p. T
$ i8 `1 M- n' r; L
                d2 = d2 - 0.005*(len-1);% 厚度
- u# c$ D0 ^- b  `% Z. c( R2 t# O# G
) B* {$ w9 y  z" Z1 ^5 c
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度
& t4 j6 ?6 Z9 s! j) p
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示
% n* h* {2 E% D/ @" {) w2 I/ ~& U) d2 e; o- m! }: q( _: n
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵0 R5 L' X7 Z: _& \
                result = [1,0;0,1]; %初值为单位矩阵
& q$ s" X& }4 n2 D3 n
                result = result * temp{len,1};%得到中间所有矩阵的乘积2 y( q* e9 r2 T; O$ z4 Z4 j2 r  g
          end
: G* o# J& T' n
, e; P8 W- j3 Z: n9 u, M

; I& j8 b1 \, ]0 P9 r+ Y# n
" @. j: J' r- E3 j! ]
% N# \* i, m4 E5 T* ~- R; r( c3 M

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而- a( G% I5 z( L! o
F2{len,1}=2*pi*nb*d2*cos(c3)/x;
( \% P3 j4 j* i* K9 Y7 Q8 W8 @' H你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时- D0 m. z; T. Q7 J2 Z- A/ ^
d2 = d2 - 0.005*(len-1);( D/ q4 C: Q7 y5 Z' Y1 z$ h$ t
恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c38 m7 a5 S. a" z
这些都要你一步步分析的,而不是盯着M2奇怪就能解决问题的

点评

找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面 具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的  详情 回复 发表于 2023-2-8 15:10

该用户从未签到

3#
 楼主| 发表于 2023-2-8 15:10 | 只看该作者
Tdongxue 发表于 2023-2-8 14:57' d2 H0 |4 V0 ^- W7 u3 R
你的M2{len,1}是由F2{len,1}计算出来的,而1 X4 O8 ]# w) I5 N4 i1 S
F2{len,1}=2*pi*nb*d2*cos(c3)/x;  m- ~$ U7 H+ ~& P
你应该分析F2在num发生变化 ...
" h& |- e. g2 ^' c1 f, S
找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面
( N1 `( s0 i+ h& U! L$ H" W具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的' y/ S, C9 x1 `* W4 {% W( x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-6 12:31 , Processed in 0.125000 second(s), 30 queries , Gzip On.

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

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

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