数学建模社区-数学中国

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

作者: 小洋洋    时间: 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)"}]
) R. J6 }1 \$ l6 ?4 t. o; R1 h' d8 F3 e; \

1 x  T7 C6 ?& B4 X% i
作者: 平凡之不凡    时间: 2014-5-14 16:06
我建议楼主把问题格式调整一下,重发一次,有人会给你解决的
作者: 小洋洋    时间: 2014-5-14 19:03
本帖最后由 wangzheng3056 于 2014-5-16 19:40 编辑
( c$ P4 t1 P! N2 i* `
  1. CircuitEquations={Ii (1+gm1/s/c1+gm1*gm2/s/c1/s/c2)Ig,( r) p5 @6 @) ~  J* s+ o2 o
  2.    Io (gm1*gm2/s/c1/s/c2)*Ig};$ g: }& P2 C. ~$ s; L, {4 ]* ?
  3. Current={Ii,Io};* z. U7 s0 M% s) h* \4 d8 a
  4. CircuitRespones=Together[Flatten[Solve[CircuitEquations,Current]]];; C- p- r' W, i+ H
  5. H=Io/Ii/.CircuitRespones//Together//Simplify;
    1 V  h: i! l0 j  a4 w, b! ]2 h3 m( T
  6. Print["H(S)=",H]
    . R* s+ ^; y, T: X5 s# _2 F& ^& f- q% @
  7. PoleQpole[H,s]:=Module[{den,fp,Qp},
    : t% s' E6 c( ?4 z
  8.    den=Denominator[H];  T$ g$ ?" e8 H
  9.    fp=Sqrt[Coefficient[den,s,0]/Coefficient[den,s,2]]/(2 pi);
    ; V5 v/ A7 R! H7 P! a7 ^
  10.    Qp=1/(Coefficient[den,s,1]/Coefficient[den,s,2]/(2pi fp));( q/ \! o: F; Q
  11.    Simplify[{fp,Qp}]];8 p) b  _) X- Y( h3 ^! D4 w9 z+ o
  12. ZeroQzero[H,s]:=Module[{fz,num,Qz0},
    0 Z, c; \6 ?- q& R1 e$ t" N- K& @, w
  13.    num=Numerator[H];: I: Q% I. x  g
  14.    Qz0=(Coefficient[num,s,2]/Coefficient[num,s,1]);
    2 P- U5 Q$ n/ _' E: m
  15.    fz=Sqrt[Coefficient[num,s,0]/Coefficient[num,s,2]]/(2 pi);" {+ D& [* T* _  D* y5 @3 o
  16.    Simplify[{fz,Qz0 fz}]];
    $ E' Q, {+ u3 ~3 F! c
  17. {fp,Qp}=Simplify[PoleQpole[H,s]];5 c- F4 v& b7 T1 w) [; E
  18. Klp=H/.s 0;
    * o7 ]1 i& o5 o  W& u
  19. PrintLabeledList[{fp,Qp},{"fp","Qp"}];
    3 `) A5 q. _7 ]7 M, r; P/ R1 a
  20. DesignOTA1[Qp_,Wp_,C1_,C2_]:=Module[{gm1,gm2},7 e; e2 C. m2 W5 a  c
  21.    gm1=C1*Wp/Qp;
    7 v! v9 |( `% A& x3 `; |8 j
  22.    gm2=C2*Wp*Qp;
    5 A, W* \' n5 g3 f4 D, W
  23.    {C1,C2,gm1,gm2}];
    9 R( f5 P' D  g! v4 e* W; s2 g
  24. {C1,C2,gm1,gm2}=Together[DesignOTA1[Q,W,c1,c2]];
    + M$ p8 f) `9 d' u7 i- m
  25. PrintLabeledList[{C1,C2,gm1,gm2},{"C1","C2","gm1","gm2"}];
    / N! R6 y; t$ b
  26. Simplify[H]9 s! W/ L0 p6 F9 h# h) e
  27. h1=Together[H/.{Q 2.,W N[2*pi*10^6],
      l- _- S" ]) ?+ y7 D  W3 s) T0 q) W
  28.       c1 10.*10^(-12),c2 10*10^(-12)}//N];
    ( |2 K4 z+ {) Q3 Y7 c
  29. Print["gm1=",gm1/.{Q 2.,W N[2*pi*10^6],; P( U, |7 P5 Y0 D& y9 ]
  30.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]8 p/ H( l' e, T9 Q
  31. Print["gm2=",gm2/.{Q 2.,W N[2*pi*10^6],/ u; b' W  G3 X0 p) T0 t' x3 _2 J
  32.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]! Y  S1 Y* X% ~* Y' I
  33. h=(Numerator[h1]/g)/(Simplify[Denominator[h1]/g])
    - e7 ~6 M# t. r8 X6 f
  34. PrintLabeledList[N[{Q,W (2*pi)}/.{Q 2.,W N[2*pi*10^6],
    9 [- }- U! g+ u4 ~5 r) [
  35.       c1 10.*10^(-12),c2 10*10^(-12)}//N],{"Qp","fp(Hz)"}];) F5 B% t3 N. S  c" l1 Q4 e
  36. Rexample=N[{c1*10^(12),c2*10^(12),gm1,gm2}/.{Q 2.,W N[2*pi*10^6],
    ) z. W7 |3 B- u+ i) {1 p
  37.       c1 10.*10^(-12),c2 10*10^(-12)}//N];/ j6 |2 m9 ]" m
  38. PrintLabeledList[Rexample,{"C1(pF)","C2(pF)","gm1","gm2"}];0 _. L4 g' x( R9 _) H& z
  39. Plot[{Abs[h]/.s I*2*pi*f*10^6},{f,0.01,8}
    " Y1 l; U8 D) d# V; w
  40. ,PlotRange All
    & M* G; q* v7 q: J9 |- i
  41. ,AxesLabel {"f(MHz)","M(f)"}]
复制代码
这是调整完的程序,麻烦大神们帮忙看看吧2 \8 D' M2 p' P! h) ~; _1 H' C

作者: 山林隐逸    时间: 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文件穿上去了,望指教% K$ |* [7 l; T" h) ~# S9 c





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