数学建模社区-数学中国

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

作者: 小洋洋    时间: 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)"}]
7 g( x' ?1 L; @0 t# E# n, T! m' p# r+ X4 S+ y5 d

; }8 Q" X2 S7 }( _, Q; _4 e
作者: 平凡之不凡    时间: 2014-5-14 16:06
我建议楼主把问题格式调整一下,重发一次,有人会给你解决的
作者: 小洋洋    时间: 2014-5-14 19:03
本帖最后由 wangzheng3056 于 2014-5-16 19:40 编辑 - c1 ~6 L/ H( J; L2 c5 U( @
  1. CircuitEquations={Ii (1+gm1/s/c1+gm1*gm2/s/c1/s/c2)Ig,
    * W% t! ^' x# `2 T! V* e
  2.    Io (gm1*gm2/s/c1/s/c2)*Ig};
    ) L6 K. o: ^7 e4 @0 b
  3. Current={Ii,Io};
    ' V" {+ e& ~, T6 I* S2 a
  4. CircuitRespones=Together[Flatten[Solve[CircuitEquations,Current]]];, S. ], }* c3 r; d- {$ ]
  5. H=Io/Ii/.CircuitRespones//Together//Simplify;
    2 s5 Y* o1 K, v
  6. Print["H(S)=",H]- x6 y" P2 B+ ?/ Z
  7. PoleQpole[H,s]:=Module[{den,fp,Qp},
    9 B! `* A3 h' k9 M
  8.    den=Denominator[H];2 D4 U/ E' h& v
  9.    fp=Sqrt[Coefficient[den,s,0]/Coefficient[den,s,2]]/(2 pi);
    9 b. c& g/ S/ P% c$ ?
  10.    Qp=1/(Coefficient[den,s,1]/Coefficient[den,s,2]/(2pi fp));9 s" `' L8 V* x
  11.    Simplify[{fp,Qp}]];+ K, T8 _* f1 K' |6 q3 V
  12. ZeroQzero[H,s]:=Module[{fz,num,Qz0},+ Q: J, g  p1 j% m  Y& Q
  13.    num=Numerator[H];6 l6 J' m- `: J' K: V9 @
  14.    Qz0=(Coefficient[num,s,2]/Coefficient[num,s,1]);  G+ N" {5 N0 b- v. M
  15.    fz=Sqrt[Coefficient[num,s,0]/Coefficient[num,s,2]]/(2 pi);1 B6 ?$ Z0 R5 |$ ?. y# ~
  16.    Simplify[{fz,Qz0 fz}]];
    7 l9 w) M- m$ h9 G8 N
  17. {fp,Qp}=Simplify[PoleQpole[H,s]];
    5 f5 r6 S  [7 \/ ]
  18. Klp=H/.s 0;
    % \' E" x$ M# w
  19. PrintLabeledList[{fp,Qp},{"fp","Qp"}];3 C  z2 L5 k- r" B) j
  20. DesignOTA1[Qp_,Wp_,C1_,C2_]:=Module[{gm1,gm2},8 N1 k& S4 n- Z& H
  21.    gm1=C1*Wp/Qp;
    / ?% j8 I8 y4 c# {" _$ i- E
  22.    gm2=C2*Wp*Qp;
    # E2 T* ^# w9 K* X) @3 a1 I
  23.    {C1,C2,gm1,gm2}];; L' Q3 ?. g6 [, T  \9 x. B
  24. {C1,C2,gm1,gm2}=Together[DesignOTA1[Q,W,c1,c2]];
    # j7 y# a6 B5 d: G( T4 h
  25. PrintLabeledList[{C1,C2,gm1,gm2},{"C1","C2","gm1","gm2"}];- U* I; W) q% ~# g+ \  O
  26. Simplify[H]
    4 j+ F- D6 m4 h' N7 ^+ l, y. Y
  27. h1=Together[H/.{Q 2.,W N[2*pi*10^6],
    ! G/ C# V9 y, B6 b, \) f: f* s. j
  28.       c1 10.*10^(-12),c2 10*10^(-12)}//N];1 c& H& Z3 m& t) o  s7 t
  29. Print["gm1=",gm1/.{Q 2.,W N[2*pi*10^6],
    " k! J4 A; ^& R+ W5 H3 i
  30.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]! i. \0 f  d# V! t( ^
  31. Print["gm2=",gm2/.{Q 2.,W N[2*pi*10^6],- ~1 g! P7 r4 _0 x9 u! R5 {! |
  32.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]1 I2 y- x6 m: V7 f
  33. h=(Numerator[h1]/g)/(Simplify[Denominator[h1]/g])2 i( c$ j% |  T! P- g. I6 t
  34. PrintLabeledList[N[{Q,W (2*pi)}/.{Q 2.,W N[2*pi*10^6],0 Z' D6 D6 ~3 H+ ^9 f% W
  35.       c1 10.*10^(-12),c2 10*10^(-12)}//N],{"Qp","fp(Hz)"}];
    ; n6 ?' z# U- X8 y. Y" t. Z6 z" I. J
  36. Rexample=N[{c1*10^(12),c2*10^(12),gm1,gm2}/.{Q 2.,W N[2*pi*10^6],1 p; U* j5 a0 c6 ~& H5 U
  37.       c1 10.*10^(-12),c2 10*10^(-12)}//N];
    $ O* ^2 Q$ O4 V- B
  38. PrintLabeledList[Rexample,{"C1(pF)","C2(pF)","gm1","gm2"}];
    + a% X6 n" t8 R! v+ G
  39. Plot[{Abs[h]/.s I*2*pi*f*10^6},{f,0.01,8}
    8 z, N/ E2 P: x1 P' r: x7 V, F
  40. ,PlotRange All' u5 [4 y3 b( [$ x/ Z3 ^$ X
  41. ,AxesLabel {"f(MHz)","M(f)"}]
复制代码
这是调整完的程序,麻烦大神们帮忙看看吧
3 {2 a: A2 F1 R* B4 P1 R- ~' C8 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文件穿上去了,望指教. P, \1 a5 o! K2 ?: v2 ?





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