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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值
' X! ^& @3 ]. g$ V+ v/ \" F9 H0 G
理论上不管num 为几 第一个值不会变的" l$ U) \+ D) |! b% |
但是
/ K* k$ O% N  h1 ~. unum = 1 时得到第一个值
+ I) Y* M, L8 A# v# H' s4 I8 A- o& g9 q
num = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事
) P; @4 a: o  o7 k            
5 F) I+ h- f' H; @- ^! z) K/ b
  Q3 l* F, d8 \2 `各位大大帮忙看下,不然睡不成觉了
% j, z+ h/ C7 i! h3 b部分程序如下num = 2; %设置层数
: g/ m  f; M5 M+ I6 c% Z* k  v
6 p) \) G& |2 S  T
        g=linspace(1,2.4,200);
- _/ K1 V! V5 u- r% X2 ^
        for x=g
5 B/ Z) X6 a8 s8 l, L$ t; N' x2 M
                %循环镶嵌处
( m( k8 ~  }; F+ a% ^
            for len =1:1:num  %len为厚度
( U# v2 p3 h5 k9 i- a
                F1=2*pi*na*d1*cos(c2)/x;  i; r/ x5 X* h
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];
- X6 V$ k  w# H0 k% n
- Q4 z. P" |9 C5 c; G% J1 H: S
                d2 = d2 - 0.005*(len-1);% 厚度- y% m# y$ o+ P* u" b' N
" t/ N8 w  q) O# J7 k5 q' O# n7 d
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度
1 I* p; l* ^8 n- R, I* U7 [. l
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示9 V+ R5 e/ K1 n) [- y' y/ V

( G- u! i, O! y; r8 W& l: ?, K
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵
+ L! @1 H8 x4 t! l8 e
                result = [1,0;0,1]; %初值为单位矩阵
& V4 K/ X$ Y2 A" N( L
                result = result * temp{len,1};%得到中间所有矩阵的乘积6 J/ O8 A5 X* _+ w( }
          end
$ i# l# c& V/ |  C0 {

& ]4 ]1 n9 y0 b- |2 p0 T* G

' t2 T3 \  H& ~' @# N/ h7 |  e! _; m, e( T  e

* E* R1 _0 G3 b' |6 E+ j

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而
: B" W- E3 C/ p+ j& l2 _F2{len,1}=2*pi*nb*d2*cos(c3)/x;/ g( C, J$ [8 c- Q3 T! T4 C6 T
你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时
* Z+ K0 D' ]; m) @6 M  O8 s# a3 I2 `* T, Wd2 = d2 - 0.005*(len-1);
# e- U, P% z6 v+ h( R  f恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3- c  X4 ]1 n6 Q
这些都要你一步步分析的,而不是盯着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
' ~$ [" {, c# c# J0 O  Z你的M2{len,1}是由F2{len,1}计算出来的,而
$ e0 J/ C3 ?$ _; u7 R5 [, x: S5 RF2{len,1}=2*pi*nb*d2*cos(c3)/x;8 w! A# V8 r* t( Q# T
你应该分析F2在num发生变化 ...
9 d1 J6 d  Y) ?) K3 M! k. {2 o7 [
找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面4 X, Y* r% a7 G. x2 k5 n
具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的- E$ N6 g% u4 J
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 15:42 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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