数学建模社区-数学中国

标题: 求大神帮忙看一下程序的问题出在哪里,如能帮忙修改万分感谢 [打印本页]

作者: 小洋洋    时间: 2014-5-14 14:00
标题: 求大神帮忙看一下程序的问题出在哪里,如能帮忙修改万分感谢
CircuitEquations={Ii(1+gm1/s/c1+gm1*gm2/s/c1/s/c2)Ig,  IoIg};Current={Ii,Io};CircuitRespones=Together[Flatten[Solve[CircuitEquations,Current]]];H=Io/Ii/.CircuitRespones//Together//Simplify;Print["H(S)=",H]PoleQpole[H,s]:=Module[{den,fp,Qp},  den=Denominator[H];  fp=Sqrt[Coefficient[den,s,0]/Coefficient[den,s,2]]/(2 pi);  Qp=1/(Coefficient[den,s,1]/Coefficient[den,s,2]/(2pi fp));  Simplify[{fp,Qp}]];ZeroQzero[H,s]:=Module[{fz,num,Qz0},  num=Numerator[H];  Qz0=(Coefficient[num,s,2]/Coefficient[num,s,1]);  fz=Sqrt[Coefficient[num,s,0]/Coefficient[num,s,2]]/(2 pi);  Simplify[{fz,Qz0 fz}]];{fp,Qp}=Simplify[PoleQpole[H,s]];Klp=H/.s0;PrintLabeledList[{fp,Qp},{"fp","Qp"}];DesignOTA1[Qp_,Wp_,C1_,C2_]:=Module[{gm1,gm2},  gm1=C1*Wp/Qp;  gm2=C2*Wp*Qp;  {C1,C2,gm1,gm2}];{C1,C2,gm1,gm2}=Together[DesignOTA1[Q,W,c1,c2]];PrintLabeledList[{C1,C2,gm1,gm2},{"C1","C2","gm1","gm2"}];Simplify[H]h1=Together[H/.{Q6.,WN[2*pi*10^6],      c110.*10^(-12),c210*10^(-12)}//N];Print["gm1=",gm1/.{Q6.,WN[2*pi*10^6],   c110.*10^(-12),c210*10^(-12)}//N,"mS"]Print["gm2=",gm2/.{Q6.,WN[2*pi*10^6],   c110.*10^(-12),c210*10^(-12)}//N,"mS"]h=(Numerator[h1]/g)/(Simplify[Denominator[h1]/g])PrintLabeledList[N[{Q,W(2*pi)}/.{Q6.,WN[2*pi*10^6],     c110.*10^(-12),c210*10^(-12)}//N],{"Qp","fp(Hz)"}];Rexample=N[{c1*10^(12),c2*10^(12),gm1,gm2}/.{Q6.,WN[2*pi*10^6],      c110.*10^(-12),c210*10^(-12)}//N];PrintLabeledList[Rexample,{"C1(pF)","C2(pF)","gm1","gm2"}];Plot[{Abs[h]/.sI*2*pi*f*10^6},{f,0.01,3} ,PlotRangeAll ,AxesLabel{"f(MHz)","M(f)"}]
3 X$ J( b  ~% D! J) r% q/ W' B1 y  O; I! O
1 `6 w/ |* o4 a

作者: 平凡之不凡    时间: 2014-5-14 16:06
我建议楼主把问题格式调整一下,重发一次,有人会给你解决的
作者: 小洋洋    时间: 2014-5-14 19:03
本帖最后由 wangzheng3056 于 2014-5-16 19:40 编辑
  _7 F6 e$ W7 d4 c; R' i
  1. CircuitEquations={Ii (1+gm1/s/c1+gm1*gm2/s/c1/s/c2)Ig,
    3 @1 e0 w6 @8 I6 W( S0 D% Y
  2.    Io (gm1*gm2/s/c1/s/c2)*Ig};4 F: l8 d5 R* Z; E
  3. Current={Ii,Io};
    + M& Y6 J: G$ ~" r$ z/ f
  4. CircuitRespones=Together[Flatten[Solve[CircuitEquations,Current]]];
    5 I7 \: V% x7 X; @; D. ~% K/ }
  5. H=Io/Ii/.CircuitRespones//Together//Simplify;
    5 Y+ v  \& |) K7 C+ z. i! M
  6. Print["H(S)=",H]9 k; j$ |! v+ o! r, z7 A
  7. PoleQpole[H,s]:=Module[{den,fp,Qp},! }/ D0 W  f+ d; Q7 _" S  z6 Y
  8.    den=Denominator[H];+ M2 T2 q; E4 m: i6 Z
  9.    fp=Sqrt[Coefficient[den,s,0]/Coefficient[den,s,2]]/(2 pi);
      S% g) E; S$ c' y2 V
  10.    Qp=1/(Coefficient[den,s,1]/Coefficient[den,s,2]/(2pi fp));. O% J  U7 |- a: ]- s
  11.    Simplify[{fp,Qp}]];; n" r; J7 ?& B, a  M: u' M
  12. ZeroQzero[H,s]:=Module[{fz,num,Qz0},9 D/ \0 z% X& K, C
  13.    num=Numerator[H];$ k8 y- w8 F2 @% ]
  14.    Qz0=(Coefficient[num,s,2]/Coefficient[num,s,1]);
    2 v) m& z1 h) c% |# k7 G4 _4 l; c
  15.    fz=Sqrt[Coefficient[num,s,0]/Coefficient[num,s,2]]/(2 pi);
    + k+ q6 U/ Q+ {
  16.    Simplify[{fz,Qz0 fz}]];' L2 ~3 [. z% E0 O9 h
  17. {fp,Qp}=Simplify[PoleQpole[H,s]];
    9 ^9 O  b# G, b9 [$ v7 ]
  18. Klp=H/.s 0;
    ; {. `: c5 J! t9 _+ A; @' ?
  19. PrintLabeledList[{fp,Qp},{"fp","Qp"}];! ^; h  l6 Z$ C, }! c' I: b. h
  20. DesignOTA1[Qp_,Wp_,C1_,C2_]:=Module[{gm1,gm2},' P- n8 C& S5 t% j& S# D& u
  21.    gm1=C1*Wp/Qp;) j: G6 u. ?9 `/ ~3 I- Y& l
  22.    gm2=C2*Wp*Qp;1 }. x5 h8 b- m/ P3 H; P) ^
  23.    {C1,C2,gm1,gm2}];
    5 b: n5 ^. I& ?) d
  24. {C1,C2,gm1,gm2}=Together[DesignOTA1[Q,W,c1,c2]];$ E  O* R. b. q% |
  25. PrintLabeledList[{C1,C2,gm1,gm2},{"C1","C2","gm1","gm2"}];
    ; o' [3 s7 i0 o5 F
  26. Simplify[H]& H% [" H6 W  F; S. J/ e
  27. h1=Together[H/.{Q 2.,W N[2*pi*10^6],
    . O( _$ m* I, ?* f/ \
  28.       c1 10.*10^(-12),c2 10*10^(-12)}//N];
    9 j2 w# Y0 E, u  S
  29. Print["gm1=",gm1/.{Q 2.,W N[2*pi*10^6],
    % v. g% t3 |2 [7 H. t9 s
  30.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"], e& }$ L6 j; f  N4 z7 j5 z
  31. Print["gm2=",gm2/.{Q 2.,W N[2*pi*10^6],/ e/ _- m7 _/ {. V
  32.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]& g8 q/ c6 D3 d- T! V7 F; m
  33. h=(Numerator[h1]/g)/(Simplify[Denominator[h1]/g])$ @  X& o3 g! y1 S5 u& _- E3 D
  34. PrintLabeledList[N[{Q,W (2*pi)}/.{Q 2.,W N[2*pi*10^6],7 K2 C- K* ]: B, |( O9 h
  35.       c1 10.*10^(-12),c2 10*10^(-12)}//N],{"Qp","fp(Hz)"}];
    + `; y3 x! k0 M# X$ {+ s
  36. Rexample=N[{c1*10^(12),c2*10^(12),gm1,gm2}/.{Q 2.,W N[2*pi*10^6],
    8 c$ q! ~$ N; o# f
  37.       c1 10.*10^(-12),c2 10*10^(-12)}//N];- ^$ u9 H# {  Q+ f+ g3 K( }* J
  38. PrintLabeledList[Rexample,{"C1(pF)","C2(pF)","gm1","gm2"}];
    0 n) s! B. L" O0 D+ V2 e$ {
  39. Plot[{Abs[h]/.s I*2*pi*f*10^6},{f,0.01,8}
    - P( m2 H8 {) h8 U: H8 A* i  J
  40. ,PlotRange All  U8 ~) M  F- W8 s
  41. ,AxesLabel {"f(MHz)","M(f)"}]
复制代码
这是调整完的程序,麻烦大神们帮忙看看吧, `* s1 a( ~9 R3 Q  @0 m: t

作者: 山林隐逸    时间: 2014-5-14 21:55
同意。。格式改一下。。然后说明你用的什么语言什么软件。。什么环境
作者: guozihu1986    时间: 2014-5-15 07:51
建议你最好能把你的原始.nb文件传上来,这样别人才能帮你看,还有你这个程序的目的是什么,想要达到什么样的结果,你也没有说,另外,关键部分的注释也很重要,这样才能让别人帮你,一点个人意见
作者: guozihu1986    时间: 2014-5-15 08:01
建议你把原始的.nb文件传上来
作者: guozihu1986    时间: 2014-5-15 08:02
把程序的目的说清楚,关键部分的注释也要加上
作者: cnmover    时间: 2014-5-17 17:28
看着眼花啊
作者: guozihu1986    时间: 2014-5-18 12:30
看没有注释的代码,比自己写还要累啊,楼主这个程序是想做什么呢,能不能稍微介绍下,就放下这么一段代码,太难看懂
作者: 小洋洋    时间: 2014-5-19 23:05
我想模拟一个二阶的OTA-C滤波器,也是才学习这个软件,不知道这个程序问题出在哪里了,非常焦急,我把.nb文件穿上去了,望指教
9 V6 K# [1 @% O: ^  h: Q7 b2 L




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5