数学建模社区-数学中国

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

作者: 小洋洋    时间: 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)"}]' u( P0 p5 ^6 ?' X! j/ }( q

1 P* P% x, b5 Q8 S" M! b; s4 |# N/ `$ p  }* ^3 V' N1 @" {! t

作者: 平凡之不凡    时间: 2014-5-14 16:06
我建议楼主把问题格式调整一下,重发一次,有人会给你解决的
作者: 小洋洋    时间: 2014-5-14 19:03
本帖最后由 wangzheng3056 于 2014-5-16 19:40 编辑 ' o1 r& b- x* w- |' I* P2 y
  1. CircuitEquations={Ii (1+gm1/s/c1+gm1*gm2/s/c1/s/c2)Ig,
    + p' R" R" W( F" ?$ j2 ~
  2.    Io (gm1*gm2/s/c1/s/c2)*Ig};
    ( w! g" f/ u$ e: `. v, p5 N
  3. Current={Ii,Io};7 x( u4 A. o' F, M+ J1 L( _2 S
  4. CircuitRespones=Together[Flatten[Solve[CircuitEquations,Current]]];  I# a2 L+ l  v0 U+ o6 L
  5. H=Io/Ii/.CircuitRespones//Together//Simplify;
    8 A3 O8 p0 N" d
  6. Print["H(S)=",H]
    5 r. t' A+ x  L' [' B/ d( V/ F1 u
  7. PoleQpole[H,s]:=Module[{den,fp,Qp},; x$ A: ^4 _; o% C/ u8 [) ~
  8.    den=Denominator[H];
    4 ~4 i" f1 ^; {% m: ?; q
  9.    fp=Sqrt[Coefficient[den,s,0]/Coefficient[den,s,2]]/(2 pi);/ t' e" Q! j& t) n2 R
  10.    Qp=1/(Coefficient[den,s,1]/Coefficient[den,s,2]/(2pi fp));0 {& g9 z+ X( P0 X0 j4 s5 W2 D
  11.    Simplify[{fp,Qp}]];! V7 `1 ]: A* v& N7 d" A. n0 G
  12. ZeroQzero[H,s]:=Module[{fz,num,Qz0},6 {" c/ a& P+ T9 r' n; ?1 u
  13.    num=Numerator[H];
    7 m5 ?, C9 B. ?: ]  P/ }
  14.    Qz0=(Coefficient[num,s,2]/Coefficient[num,s,1]);3 I# M( C; F5 N0 m
  15.    fz=Sqrt[Coefficient[num,s,0]/Coefficient[num,s,2]]/(2 pi);( d. f! j5 T. K6 {0 d& W! H
  16.    Simplify[{fz,Qz0 fz}]];, K2 G- N& z8 h* f
  17. {fp,Qp}=Simplify[PoleQpole[H,s]];
    % T, ^  [7 W8 Y" Y
  18. Klp=H/.s 0;
    % `5 z$ m2 ^/ t" I+ _7 P, M, l
  19. PrintLabeledList[{fp,Qp},{"fp","Qp"}];
    " m) E0 x' k( y+ d
  20. DesignOTA1[Qp_,Wp_,C1_,C2_]:=Module[{gm1,gm2},8 O3 P( x" G' p4 O" V5 b/ U3 N
  21.    gm1=C1*Wp/Qp;
    6 n5 k; ?& ?" z
  22.    gm2=C2*Wp*Qp;$ u/ F: _  m- Z: ]& h
  23.    {C1,C2,gm1,gm2}];
    8 n+ I7 i! n+ s/ Z8 o% F! a
  24. {C1,C2,gm1,gm2}=Together[DesignOTA1[Q,W,c1,c2]];0 n: H# ?% [# k, r. X
  25. PrintLabeledList[{C1,C2,gm1,gm2},{"C1","C2","gm1","gm2"}];
    - G! s* [/ F2 ^) X9 X/ q% c
  26. Simplify[H]- i0 q. D8 b) w0 t
  27. h1=Together[H/.{Q 2.,W N[2*pi*10^6],
    7 O6 \9 @0 ~7 \$ ]9 P1 N! W
  28.       c1 10.*10^(-12),c2 10*10^(-12)}//N];5 R( Y# m+ c% S$ q& S
  29. Print["gm1=",gm1/.{Q 2.,W N[2*pi*10^6],
    , d1 |8 Y! ?* x7 G( [
  30.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]
    7 H5 s" q. O9 I7 j
  31. Print["gm2=",gm2/.{Q 2.,W N[2*pi*10^6],5 z" s) H/ R3 Q( C" a" Z+ P% j
  32.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]
    ; G0 t. [8 {2 P6 _
  33. h=(Numerator[h1]/g)/(Simplify[Denominator[h1]/g])
    ( k  O* D# h" n4 ~  S$ @
  34. PrintLabeledList[N[{Q,W (2*pi)}/.{Q 2.,W N[2*pi*10^6],
    ; Z3 b* e% c+ i7 K3 K0 v& t
  35.       c1 10.*10^(-12),c2 10*10^(-12)}//N],{"Qp","fp(Hz)"}];
    " n5 i; u- T1 ?1 Z0 e
  36. Rexample=N[{c1*10^(12),c2*10^(12),gm1,gm2}/.{Q 2.,W N[2*pi*10^6],
    ! F% P: B9 ]2 W+ r3 s- d
  37.       c1 10.*10^(-12),c2 10*10^(-12)}//N];- Q& ?4 _" @2 ?7 Q7 k+ I( W$ H, l
  38. PrintLabeledList[Rexample,{"C1(pF)","C2(pF)","gm1","gm2"}];
    5 `+ ], a3 k) p! e! J* ]" s5 B5 V1 w
  39. Plot[{Abs[h]/.s I*2*pi*f*10^6},{f,0.01,8}& X" ?3 w9 [/ L7 h. ]8 u5 {
  40. ,PlotRange All. C6 c7 i; t0 Z2 P
  41. ,AxesLabel {"f(MHz)","M(f)"}]
复制代码
这是调整完的程序,麻烦大神们帮忙看看吧0 R6 X0 q+ r8 s; c8 G& A! o: y

作者: 山林隐逸    时间: 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文件穿上去了,望指教
! ]7 Y6 {2 u6 O& W$ K$ s6 M0 X2 g$ K




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