数学建模社区-数学中国

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

作者: 小洋洋    时间: 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 B3 }* t* ?" G! x; @
- p( g- H  D& F
' T" F- o/ I- b

作者: 平凡之不凡    时间: 2014-5-14 16:06
我建议楼主把问题格式调整一下,重发一次,有人会给你解决的
作者: 小洋洋    时间: 2014-5-14 19:03
本帖最后由 wangzheng3056 于 2014-5-16 19:40 编辑 - u( R; H8 V7 H
  1. CircuitEquations={Ii (1+gm1/s/c1+gm1*gm2/s/c1/s/c2)Ig,  Y' e- t9 a1 l) t# O& ]0 x6 r
  2.    Io (gm1*gm2/s/c1/s/c2)*Ig};
    0 p$ j' h' u- K# c5 C6 Y7 r
  3. Current={Ii,Io};0 G/ b2 s7 ?4 J$ h5 j# Z# R
  4. CircuitRespones=Together[Flatten[Solve[CircuitEquations,Current]]];
    $ H( K8 J+ K8 z8 H, [
  5. H=Io/Ii/.CircuitRespones//Together//Simplify;
    2 Y' z7 T3 n6 g+ a5 O
  6. Print["H(S)=",H]4 E- b+ ^# a: m* ]
  7. PoleQpole[H,s]:=Module[{den,fp,Qp},
    4 N- W) ~0 v+ S% j$ r
  8.    den=Denominator[H];. y! R$ X7 p* [7 Z% j* a" e$ x) ~9 d
  9.    fp=Sqrt[Coefficient[den,s,0]/Coefficient[den,s,2]]/(2 pi);
    - k0 }. e! q2 L" s+ F3 R
  10.    Qp=1/(Coefficient[den,s,1]/Coefficient[den,s,2]/(2pi fp));! J& e; C4 q7 V  S
  11.    Simplify[{fp,Qp}]];5 ?. r$ ~; W2 g- K
  12. ZeroQzero[H,s]:=Module[{fz,num,Qz0},
    7 E( o9 `. G  _% v+ z6 R/ {7 z
  13.    num=Numerator[H];; O# ]" e% x" ]& `
  14.    Qz0=(Coefficient[num,s,2]/Coefficient[num,s,1]);/ F0 ?4 ~: q; z6 n! t9 S7 c
  15.    fz=Sqrt[Coefficient[num,s,0]/Coefficient[num,s,2]]/(2 pi);- B, h6 l1 ]: w) u/ i- X
  16.    Simplify[{fz,Qz0 fz}]];
    ! U" k1 M# v2 X2 [' [# S9 U' S7 B
  17. {fp,Qp}=Simplify[PoleQpole[H,s]];
    . |$ I8 T9 t# O  `$ i# B
  18. Klp=H/.s 0;
    / n1 [4 a9 {+ m  v1 P% \
  19. PrintLabeledList[{fp,Qp},{"fp","Qp"}];
    " M( _1 ?' i3 X+ w1 _6 x4 r# R
  20. DesignOTA1[Qp_,Wp_,C1_,C2_]:=Module[{gm1,gm2},
    1 _- J8 C# ?( ^: @& u4 Z; v2 G: h
  21.    gm1=C1*Wp/Qp;
    ( S, `9 c7 N  \+ i4 Q) S& N
  22.    gm2=C2*Wp*Qp;
    7 Q4 p: t; h5 x; `. ~  Z  e
  23.    {C1,C2,gm1,gm2}];  e6 ^) D) U) ?# U3 _* O
  24. {C1,C2,gm1,gm2}=Together[DesignOTA1[Q,W,c1,c2]];
    ! b0 q( n2 J: o; Z/ C+ \( U) W9 n3 F
  25. PrintLabeledList[{C1,C2,gm1,gm2},{"C1","C2","gm1","gm2"}];+ f& J- i7 c, g6 a; h" n  d4 H
  26. Simplify[H]
    ; O+ G& L. j( N) o3 F, |( ]
  27. h1=Together[H/.{Q 2.,W N[2*pi*10^6],% t( V8 |8 W( e9 J0 F
  28.       c1 10.*10^(-12),c2 10*10^(-12)}//N];
    % C7 w/ e/ e( A, R
  29. Print["gm1=",gm1/.{Q 2.,W N[2*pi*10^6],
    % M. x. t3 Z7 u. @" e3 z& z
  30.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]
    " r- x, E& O# X% x9 R4 k
  31. Print["gm2=",gm2/.{Q 2.,W N[2*pi*10^6],) w# I4 d/ q) k; F0 e
  32.     c1 10.*10^(-12),c2 10*10^(-12)}//N,"mS"]9 s, j5 M9 |& K$ n
  33. h=(Numerator[h1]/g)/(Simplify[Denominator[h1]/g])
    7 ?; f; O$ y  s5 n( s
  34. PrintLabeledList[N[{Q,W (2*pi)}/.{Q 2.,W N[2*pi*10^6],
    2 t$ g+ D& @# B5 E+ d4 n+ n
  35.       c1 10.*10^(-12),c2 10*10^(-12)}//N],{"Qp","fp(Hz)"}];
    # \  @0 g" i% Q$ y9 Z# C+ g% O- R
  36. Rexample=N[{c1*10^(12),c2*10^(12),gm1,gm2}/.{Q 2.,W N[2*pi*10^6],
    % P! `- g( y1 t& W
  37.       c1 10.*10^(-12),c2 10*10^(-12)}//N];, Z, p0 z2 o* [$ S9 _
  38. PrintLabeledList[Rexample,{"C1(pF)","C2(pF)","gm1","gm2"}];
    : ]+ R# h4 G9 Q1 K9 A7 Z
  39. Plot[{Abs[h]/.s I*2*pi*f*10^6},{f,0.01,8}
    0 P! l2 M$ V4 q- G$ G4 ?5 b( ?
  40. ,PlotRange All6 }: `3 Y5 Q& D! I, v' c
  41. ,AxesLabel {"f(MHz)","M(f)"}]
复制代码
这是调整完的程序,麻烦大神们帮忙看看吧
, x! o% d6 Q, J1 f
作者: 山林隐逸    时间: 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文件穿上去了,望指教; ]3 u9 t8 G) P( ^





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