Re: [問題] 解微分方程式迴圈已回收

看板MATLAB作者 (eji)時間15年前 (2010/09/25 11:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
使用num2str及eval num2str是將數字轉為字串 eval則是將字串視為matlab指令執行 eval也可以將dsolve解出後原本是符號型態的解轉成double型態 k=0; wn=sqrt(50); for dr=0.0096:0.0001:0.01 k=k+1; c=dr*2*wn; eval(['eq=''D2u+',num2str(c),'*Du+50*u=0'';']) %修改 int='u(0)=0.2,Du(0)=0'; so(k)=dsolve(eq,int,'s'); l=0; %修改 for s=0.005:0.005:10 l=l+1; dis(k,l)=eval(so(k)); %修改 end end 我看了一下執行結果 你的l=0應該要放在第一層迴圈 ※ 引述《tarepanda275 (趴趴熊)》之銘言: : 我想解一個迴圈找出這回圈裡的所有方程式 : 程式碼為 : k=0; : l=0; : wn=sqrt(50); : for dr=0.0096:0.0001:0.01 : k=k+1; : c=dr*2*wn : eq='D2u+c*Du+50*u=0'; : int='u(0)=0.2,Du(0)=0'; : so(k)=dsolve(eq,int,'s') : for s=0.005:0.005:10 : l=l+1; : dis(k,l)=so(k); : end : end : 結果他跑不出我想要的dis所有的值 : 查了一下,他並沒有幫我把c跟s這兩個變數用我上面寫的 : c=dr*2*wn : 以及 : s=0.005:0.005:10 : 代換掉 : 請問我該怎麼修呢,感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.9.113 ※ 編輯: ejialan 來自: 111.250.9.113 (09/25 11:33)
文章代碼(AID): #1CdMllSY (MATLAB)
文章代碼(AID): #1CdMllSY (MATLAB)