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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值+ \% g: V3 i8 i& S. P" K

* `% t( f/ A& z" @% r6 Y+ D理论上不管num 为几 第一个值不会变的
' u( y# v5 [1 h4 Q5 S8 m/ ?+ i, X* c但是
  z0 ~5 p  o! y# \num = 1 时得到第一个值
) }. b! j$ X& T$ U
. M9 |* p- ^" w4 Pnum = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事
2 h3 N& P: g& c) q2 I* @            
- }7 l2 E# Q+ G/ U( q( ?4 A, P* O# u' X/ Q- G# ?9 f
各位大大帮忙看下,不然睡不成觉了
! c2 m# f+ b. C$ l8 N9 n部分程序如下num = 2; %设置层数; X" ^3 ^) D5 h4 u% o

5 ^+ ~( @; |9 ?) T% b  T
        g=linspace(1,2.4,200);
5 I% f/ O/ K) ^  `) [0 N
        for x=g
( k9 ~/ N; B5 r3 G6 z! n
                %循环镶嵌处+ v4 j1 g  z- j1 O( f
            for len =1:1:num  %len为厚度  ~+ P. W2 p$ }1 U- a0 M5 e
                F1=2*pi*na*d1*cos(c2)/x;- o+ ?7 R6 D' ^; J  t) o0 h! p
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];
0 U4 j6 s3 Q' n+ F" s- s/ P9 ^, K! _7 y+ P
                d2 = d2 - 0.005*(len-1);% 厚度
1 {" V1 T' H/ `  |5 ^5 I% N. }, m& y" F
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度
9 C5 J- B8 Z2 F0 s
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示& j2 S2 d9 ^9 P# W8 l, t
2 Z& y- c( X  Q! F5 H
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵
0 T4 [( j7 F: _
                result = [1,0;0,1]; %初值为单位矩阵
2 a" {1 ^6 G  R+ F1 j+ T$ q
                result = result * temp{len,1};%得到中间所有矩阵的乘积( P6 |% C: O3 r! B) Y
          end
. l; ^' i3 M! t- h) ]- D% i
2 l7 a& g- S  ~$ h9 v" \$ H* q
3 m$ k/ w, h/ M* ^. u8 I

0 M. g  D8 }: D) _1 x! q" M" j- q4 z: j8 P# N9 g

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而
' \: r  a  A( _6 ]9 O4 zF2{len,1}=2*pi*nb*d2*cos(c3)/x;" d1 p9 M! W* L6 k" m& _
你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时
2 X. X% l, r+ y- ]d2 = d2 - 0.005*(len-1);
6 L& K3 H+ N; F恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3
& r/ A6 ]4 p+ o+ O( |& x! p9 l! W这些都要你一步步分析的,而不是盯着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
5 H- {# E6 [0 p+ p& ^  B你的M2{len,1}是由F2{len,1}计算出来的,而8 G6 p- `, r' j6 W- m2 V% q0 g4 h
F2{len,1}=2*pi*nb*d2*cos(c3)/x;5 y  b9 g& V7 i6 f" Q
你应该分析F2在num发生变化 ...

( o  g# N3 ?9 |4 U. V1 M% x5 f+ \找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面, t8 \: h9 s" z% v& j. V
具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的1 N9 ^  s. B& X" F' X" l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-11 17:59 , Processed in 0.078125 second(s), 30 queries , Gzip On.

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

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

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