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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值' [. K. R# P; z$ d) D
$ H& Z4 g+ ]: G
理论上不管num 为几 第一个值不会变的4 @0 ^! R" D. @5 J6 X7 C
但是
+ F/ ]/ v! H! j+ `9 R5 c2 N; ]9 ?6 d, Inum = 1 时得到第一个值 7 U3 A) r6 x% H0 n+ E2 T- X

# x& m; ]+ P) jnum = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事- R: {1 \8 \" b# _% Z
            6 l% A: `/ D/ w5 t+ B
( N0 @4 v( {+ |5 F4 H
各位大大帮忙看下,不然睡不成觉了  a( m! {% d* Z- l
部分程序如下num = 2; %设置层数
* i* C4 V) I2 l; j4 F+ Z% [$ [
$ u$ M1 B+ b! _' F% v) }% `0 l% v
        g=linspace(1,2.4,200);, B# m/ N% F8 A; z: \: F8 n
        for x=g
( `2 P% S, F2 t/ e
                %循环镶嵌处% o, ]0 n; q" ?3 s1 E3 M
            for len =1:1:num  %len为厚度
# O5 U; i, c2 a9 z) K. y& b) S" S
                F1=2*pi*na*d1*cos(c2)/x;9 t" H1 B( C9 H  G
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];
3 G- }/ |- [$ t" }; `/ w$ l: X
1 H" N0 o! J0 y. c; n
                d2 = d2 - 0.005*(len-1);% 厚度" @/ y/ ^4 x6 M0 t1 N; c

" n1 X6 E* e' x1 @9 G( M# x1 M
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度3 M2 S; w) Z  [! _( K# r  L6 B
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示
) f5 g' ?# B8 y- U: s% O7 M7 N4 Z  k/ C5 ~  f+ i$ o
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵
. x) [+ e1 M' A; Q
                result = [1,0;0,1]; %初值为单位矩阵/ y+ T* e5 [" q6 Q8 p" J
                result = result * temp{len,1};%得到中间所有矩阵的乘积
5 j& P% e, O. T. A" c' V
          end
  s, Y. d. ?- T  j& y( k5 l& E! ?+ H
5 G' [! l4 u' @& v* J; j) e

5 g, Y) f: `4 K( i1 `4 ~( n- v  ]! T% o6 m

/ m( ?( |+ v% _: B+ _6 t6 q0 d

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而
! T4 q8 Z0 n+ v) g9 ]( q! mF2{len,1}=2*pi*nb*d2*cos(c3)/x;
( }2 u; q9 a$ c# e) ^4 T+ {( S/ B你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时
+ f1 l" _8 j; [1 x1 K+ Dd2 = d2 - 0.005*(len-1);/ q8 c3 l# q8 X
恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3) K! R% r$ d! z6 S" b, q3 b2 _3 n
这些都要你一步步分析的,而不是盯着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
3 a7 A7 m& _) T. n你的M2{len,1}是由F2{len,1}计算出来的,而
, u$ w: Q% j4 }2 K" }9 L' vF2{len,1}=2*pi*nb*d2*cos(c3)/x;) p, ?# B5 u  X
你应该分析F2在num发生变化 ...

, Q* F, s( `: n; {. c5 a找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面5 z* Q! M5 n0 X% \3 m( L
具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的
* G/ D/ k& M) y) R/ ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-4 11:21 , Processed in 0.140625 second(s), 30 queries , Gzip On.

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

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

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