![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() ![]() |
|
主題工具 | 顯示模式 |
![]() |
#1 |
註冊會員
|
![]() 我是matlab新手,最近卡一個東西卡很久~麻煩各位大大解救一下!
程式碼如下: function dx=calcs(t,x) % let x=x(1) z=x(2) V=x(3) a=x(4) m=x(5) c=0.000294; g=9.81; S=49.24; e=0.310828; L=x(5)*g; C_L=L/0.5/e/x(3).^2/S C_D=0.012+0.179*C_L.^2; D=0.5*e*x(3).^2*S*C_D; T=D;dx=[x(3)*cos(x(4)); x(3)*sin(x(4)); 1/(x(5))*(T-D)-g*sin(x(4)); L/(x(5)*x(3))-(g*cos(x(4)))/x(3); -(c/g)*T]; soultion:ta=0:0.1:3600; tol=1e-6; options=odeset('RelTol',tol,'AbsTol',tol); x1=[0,120000,190,0,16967]; [tca,xa]=ode45(@calcs,ta,x1,options) 其中,假如我想列出其他數值的3600個點出來看,要如何加指令?如C_L或T值的3600個點。我現在只是將其後面的冒號去掉,但他印出來的只有115個點,該如何與時間0:0.1;360一起搭配印出3600個點? 另外,再請教,如果程式裡我要在加進一些條件來控制C_L,C_D,k值: 0 <= M <= 0.6, c = 1.06, 0.6<= M <=2.1, c = 1.06 + 0.42145 *(M - 0.6)^2 -0.31783 *(M - 0.6)^3 + 0.46069 *(M -0.6 )^4 -0.16431 *(M - 0.6)^5 , 0 <= M <= 0.6, C_D = 0.012, 0.6 <= M <= 0.95 C_D = 0.012 + (0.0098604*( M -0.6)^2)/(0.987257-M)^0.566955 , 0.95 <= M <= 1.05 C_D = 0.0198 + 0.16326 *(M - 0.95) + 2.2349 *(M-0.95)^2 - 48.525* (M - 0.95)^3 + 200.61 *(M - 0.95)^4 , 1.05 <= M <= 2.1, C_D = 0.028 - 0.037568 *(M - 1.1) + 0.053113 *(M - 1.1)^2 - 0.026352*(M -1.1)^3 , 0 <= M <= 0.6, k =0.179 , 0.6 <= M <=1.3 k =0.179 + 0.093512 *(M - 0.6)^2 -0.15917 *(M - 0.6)^3+0.23231*(M - 0.6)^4 , 1.3 <= M <= 2.1. k=0.226 + 0.21566 *(M -1.3) +0.042555 *(M - 1.3)^2 +0.17071 *(M - 1.3)^3 - 0.12491 *(M - 1.3)^4 , 0 <= M <= 0.6, C_L=0.95 , 0.6 <= M <= 1 C_L=0.95 -14.68752 *(M - 0.6)^2 + 32.81276 *(M -0.6)^3 -15.62537 *(M - 0.6)^4 , M =>1 C_L=0.30 + 1.35694 *(M - 1.0)^2 -2.03241 *(M -1.0)^3 + 0.77546 * (M - 1.0)^4 , 在麻煩各位高手幫忙一下了,小弟非常感激!! |
![]() |
送花文章: 0,
![]() |
向 lekia1212 送花的會員:
|