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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值
; m, y9 |- g. R- _+ G  s
" L( W  ~  L  J+ y$ U理论上不管num 为几 第一个值不会变的
# R7 `' v9 z7 ^+ }( y但是8 g& l8 E4 U4 i8 O, k
num = 1 时得到第一个值 / I$ }& ?: _0 A- b- F% p3 }0 y
' m9 m  b& s& Z8 E9 K
num = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事- D2 O: ?6 L, s8 M% v5 j
            2 L) f0 ^8 Y2 D9 C" f

& |- x6 d. @) i1 P; ]* Q& x各位大大帮忙看下,不然睡不成觉了
' {2 q. v! l  \( i8 t8 `部分程序如下num = 2; %设置层数* V  H! _5 g  K! a

- c$ T1 m9 s. j; D* \  u
        g=linspace(1,2.4,200);
$ R% A% q# v( }, p/ z% w
        for x=g
- P9 m: F# U1 B5 D+ u6 T% X1 ^. I
                %循环镶嵌处
! H8 n& S/ H" f
            for len =1:1:num  %len为厚度
  Z- ]+ x2 p- U5 x6 }. L$ l
                F1=2*pi*na*d1*cos(c2)/x;3 G7 _6 D. j1 p/ e( A! ?2 b
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];
* x, {, `, ^) {
. `" m5 \% ?! [. l% g( F9 q5 ?
                d2 = d2 - 0.005*(len-1);% 厚度
7 _& s9 s! y8 E4 B" v* D: P4 I* ^. G: N# G: K% f; _7 _
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度
& a/ L2 k1 d9 @
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示
. Z1 V" S! o! p6 [
& g, X8 `' [: B: S9 E! D* @2 n9 x
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵
- o6 @0 m3 g2 m' O% x
                result = [1,0;0,1]; %初值为单位矩阵
  W8 T5 @' c( s/ q! D4 B2 b; ?  J
                result = result * temp{len,1};%得到中间所有矩阵的乘积0 X8 k: k8 P( G" K0 X0 D' X, B7 Y' r
          end5 W/ L5 E% s# u7 }6 R' g, H

3 h* e9 m) h) K; p' k
+ x( B8 ?0 S" o2 r: B

9 Z# e: p. s3 M/ B+ i3 z
* p4 T% y/ z  O. s* ^& h+ |; a

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而
- Y* z3 Y- _, g8 G! @/ q, O" TF2{len,1}=2*pi*nb*d2*cos(c3)/x;# H1 i3 [& i! I) h( U, E# Y
你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时
" W  b- U  T$ r3 \4 N% Kd2 = d2 - 0.005*(len-1);+ S+ a* ^: O% r' Q- @7 J" K8 Z
恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3
" P4 E/ }) n8 l+ G) _5 D这些都要你一步步分析的,而不是盯着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
/ {0 r9 }4 Z" J1 @你的M2{len,1}是由F2{len,1}计算出来的,而
/ r" O3 k& j, p# DF2{len,1}=2*pi*nb*d2*cos(c3)/x;) |8 M" Q7 [6 `5 S- m
你应该分析F2在num发生变化 ...
. E8 I9 u1 ^9 G+ x# ?( ]& T
找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面
' I" ]  p! {' S9 n( h+ O具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的, G$ L& T, E1 C
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 13:25 , Processed in 0.171875 second(s), 30 queries , Gzip On.

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

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

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