Thông báo

Collapse
No announcement yet.

[Solved] Ai giup mình xửa chương trình này được không ???help

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • [Solved] Ai giup mình xửa chương trình này được không ???help

    Code:
    function [a b gocdat]=hsdtheobk(U,R,landa,goctan)
    omega=U*landa/R;
    a(1)=0;
    b(1)=0;
    k=1;
    ss=1e-7;
    cl=0.8;
    cd=0.012;
    ha(1)=3;
    hb(1)=3;
    for x=0.1:0.05:1
          while ((ha(k)>ss)&(hb(k)>ss))
              phi(k+1)=atan((1-a(k))./((1+b(k))*landa*x));
              t=((0.3)./(2*phi(k+1)*x));
              Cx(k+1)=cl*cos(phi(k+1))+ cd*sin(phi(k+1));
              Cy(k+1)=cl*sin(phi(k+1))- cd*cos(phi(k+1));
              a(k+1)=1./(1+t*(Cx(k+1)-t*Cy(k+1)*Cy(k+1)./(4*sin(phi(k+1))*sin(phi(k+1))))./(4*sin(phi(k+1))*sin(phi(k+1))));
              b(k+1)=1./(4*sin(phi(k+1))*sin(phi(k+1))*Cx(k+1)./(t*Cy(k+1)*Cy(k+1))-1);
              ha(k+1)=a(k+1)-a(k);
               hb(k+1)=b(k+1)-b(k);
               k=k+1;
           end
           gocdat=(phi(end)-goctan)*180/pi;
           a=a(end);
           b=b(end);
    end
    đây là chương trình mình muốn lấy các giá trị gocdat, a, b theo tham số x ( thay đổi từ 0.1:1) nhưng lệnh for của mình có vấn đề. ai có thể xửa hộ minh được không.
    kết quả sau khi chạy :
    Code:
    >> U=9;
    >> R=1.5;
    >> landa=6;
    >> goctan=4*pi/180;
    >> [a b gocdat]=hsdtheobk(U,R,landa,goctan)
    a =
    
     -5.7224e-004
    
    
    b =
    
       -1.5842
    
    
    gocdat =
    
       -0.1912
    Last edited by ngohaibac; 01-05-2009, 21:11. Lý do: Thêm tag code

  • #2
    không ai giúp sao? đợi mãi. mình đã thử cho x=0.05*k + 0.05; rối cho k=1:20;
    rồi tính a(k) . nhưng không được. hic
    Sư huynh nào chỉnh dùm được không???

    Comment


    • #3
      Code:
      a = a(end);
      b = b(end);
      2 cái lệnh này luôn được thực hiện sau mỗi vòng lặp for. Bạn có hiểu ý nghĩa là gì không ?

      Điều này tức là a và b sẽ được gán giá trị của phần tử cuối cùng của vector a, b sau mỗi vòng lặp đó. Sau khi chạy xong tất cả các vòng lặp thì a, b là giá trị phần tử vector cuối cùng trong của vector a, b ứng với x = 1. Không tin thử lại mà xem.

      Góp ý thêm nhá, đừng đặt tiêu đề topic kiểu này, chẳng có ý nghĩa gì cả. Bạn là người hỏi, bạn không kiên nhẫn thì ai trả lời cho bạn. Bạn nhìn code bạn paste lên, nếu mình không cho vào tag code thì không hiểu dc bạn làm gì cả, rất khó cho người khác debug giúp bạn.

      Kinh nghiệm code với Matlab là kiểm tra từng bước một xem dữ liệu đưa ra dạng gì, size thế nào, ... bằng cách hiển thị giá trị của biến trong cửa sổ command.

      Cách fix code ở trên: Tìm cách kết hợp các phần tử cuối cùng hay là các vector sau khi tính toán vào với nhau. Kết hợp thế nào thì nó là kết hợp ma trận rồi, k có gì bàn cãi cả.

      Chúc bạn thành công.
      Technical sale at WT Microelectronics S'pore
      Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
      Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

      Comment

      Về tác giả

      Collapse

      g4t0 Tìm hiểu thêm về g4t0

      Bài viết mới nhất

      Collapse

      Đang tải...
      X