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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值6 K& L% k& A8 P7 U2 q
0 k! e- d) C6 F& k' ?0 K
理论上不管num 为几 第一个值不会变的
1 @; v0 O* g+ x; S2 H但是% ]* c+ D% g' ?4 C3 v7 W+ x0 _
num = 1 时得到第一个值
6 Z+ b: i" I' v( f& N
1 T+ \- y9 G' w" X' Qnum = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事
( s* @. u5 W) q# X) c$ q- ~# K            
: y7 P2 w$ R7 \$ Y3 _
+ N9 S( u' V0 n: a各位大大帮忙看下,不然睡不成觉了
5 T/ v0 L1 x5 P: d% d" d部分程序如下num = 2; %设置层数- E& ^6 u8 R- ~- T+ D/ @/ c2 t# I
. I- Y: I. Z) y" Z
        g=linspace(1,2.4,200);
- X6 e& \" d0 U7 |* X
        for x=g
* R0 T( N, G" N2 G  |3 M0 }5 F
                %循环镶嵌处
. u0 n) E" W* ?" X& |% W
            for len =1:1:num  %len为厚度1 |; _+ q. @, @6 i8 O0 E8 k4 b$ ~
                F1=2*pi*na*d1*cos(c2)/x;
4 d9 p8 J0 o. E  u' V; b+ w
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];5 U9 c+ |7 A2 E* @$ v1 E
7 Q0 k9 d0 P) [/ S2 _# F0 P
                d2 = d2 - 0.005*(len-1);% 厚度
+ C* Z; D  |' |! K# ~
2 b; j; k6 C) U7 P+ e8 F
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度; w$ m- [2 Y" \
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示
* [& d1 g4 J* W. R
# ~7 U; y) J: `! P
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵* E- O5 c. e% `& w5 D
                result = [1,0;0,1]; %初值为单位矩阵
  q8 t' v) T# x, v* |, w6 ?
                result = result * temp{len,1};%得到中间所有矩阵的乘积! ]9 o) `: ?- D( G1 E5 z# K- o
          end
4 V% t# L! Z& ~( R! ^
7 v' o# m5 D: O0 }
2 z' R5 _9 D+ ?$ E' I0 r

% e% u* b) G. s, l4 O+ |* i; e- \4 s3 l# M

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而
5 y( e: Z% z) b8 uF2{len,1}=2*pi*nb*d2*cos(c3)/x;3 k9 y9 w( _, M2 Q8 e" ]( `' Y
你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时
+ ]5 Y) n. s4 C8 R1 Vd2 = d2 - 0.005*(len-1);
4 R7 z5 b8 ]6 \0 T2 c' z9 n9 M/ O恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3$ _; t4 S. Q7 h/ K$ p
这些都要你一步步分析的,而不是盯着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
+ p' _, f$ D* I9 \0 J, m, H' e你的M2{len,1}是由F2{len,1}计算出来的,而, z, ~/ G0 k6 g9 q# u. ]$ [
F2{len,1}=2*pi*nb*d2*cos(c3)/x;2 D6 E+ b2 G% j* H/ }' ~
你应该分析F2在num发生变化 ...
2 X, Z# d% |# m# C
找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面
* F0 H5 B& p: h, ~1 M具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的
1 Z9 f$ A# M5 g/ L  U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-1 12:05 , Processed in 0.140625 second(s), 30 queries , Gzip On.

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

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

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