Re: [問題] mathematica求根已回收

看板MATLAB作者 (養花種魚數月亮賞星星)時間15年前 (2010/05/14 13:40), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《kjhtw (Panda)》之銘言: : wp = 132*10^14; : c = 3*10^8; : d = 10*10^-9; : ea = 1; : kp = wp/c; : em = 1 - 1/omega^2; : =========以上是我的相關參數設定====== : omega = 1.5 (我方程式有omega 和 K 兩個變數 固定一組omega去找K) : am = kp*(K^2 - em*omega^2)^0.5; : aa = kp*(K^2 - ea*omega^2)^0.5; : x = (Exp[aa*d]*(1 + ea*am/aa/em)^2 - Exp[-aa*d]*(1 - (ea*am/aa/em))^2); : FindRoot[x == 0, {K, 1}] : ============================================================ : 這是一組隱函數只有近似解 : 是否可以利用迴圈之類 取代掉我需要一組一組改變omega來尋找K這步驟 : 因為圖需要精確一點,總不能我把omega每組都人工代入吧... : 我有研究過help的do這指令,可是寫出來以後他不會動 : 我的omega區間落在0~1.5,K則是0~5 : ImplicitPlot這指令我也試過,可是就是沒出現圖... : matlab版問這問題真抱歉,找不到mathematica專版 Ans 1: wp=132*10^14; c=3*10^8; d=10*10^-9; ea=1; kp=wp/c; em:=1-1/omega^2; am:=kp*(k^2-em*omega^2)^0.5; aa:=kp*(k^2-ea*omega^2)^0.5; x:=(Exp[aa*d]*(1+ea*am/aa/em)^2- Exp[-aa*d]*(1-(ea*am/aa/em))^2); data=Re@{#,k}/.FindRoot[x/.omega->#,{k,1}]&/@Range[0.01,0.99,0.01]; ListPlot@data Ans 2: obj[k_,omega_]:=Evaluate@(Exp[aa*d]*(1+ea*am/aa/em)^2 -Exp[-aa*d]*(1-(ea*am/aa/em))^2); ContourPlot[Evaluate@obj[k, omega] == 0, {omega, 0, 1}, {k, 0, 10}] Mathematica在6.0之後ImplicitPlot就整併到ContourPlot囉! -- 養花種魚數月亮賞星星 http://cydye1069.blogspot.com -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.130.182

05/14 13:57, , 1F
好多 prefix... @.@"
05/14 13:57, 1F
文章代碼(AID): #1BxE90JP (MATLAB)
文章代碼(AID): #1BxE90JP (MATLAB)