Re: [問題] 指定變值

看板Mathematica作者 (養花種魚數月亮賞星星)時間13年前 (2011/12/01 21:15), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串1/1
※ 引述《qoodeva (發呆的花枝)》之銘言: : 依邊界條件而改變的材料變數 : 第一組 : ω=6; : λ=10; : x=0.41; : 第二組 : ω=7; : λ=128; : x=0.2; : 第三組 : ω=9; : λ=4800; : x=0.1; : =========(主程式部分)========================================= : eqn1=6ωa x+7λb ; : eqn2=8λa +12ωb x ; : 將eqn1,eqn2的a,b排成係數矩陣 : 6ω x 7λ : BB= ( ) : 8λ 12ω x : Eigensystem[BB][[1]] (特徵值) : {0.08,0,004} : Eigensystem[BB][[2]] (特徵向量) : 特徵值對應到的特徵向量 : ╔════════╗ : ↓ ↓ : {{0.008,0.004},{{0.811,0.841},{0.647,0.881}}} : ↑ ↑ : ╚════════════╝ : 選取Eigensystem[BB][[1]]中最小值, : 所對應到Eigensystem[BB][[2]]之特徵向量即為a,b之值。 : a=Eigensystem[BB][[2,2,1]]; : b=Eigensystem[BB][[2,2,2]]; : 再將得到的a,b值反帶回eqn1可得一條function[x]的函數xop。 : xop=eqn1/.{a->a,b->b} : ============================================================================== : 現在我每次改變材料變數時都可以得到一條f[x]的函數, : 並利用這個函數作圖,最後將這三組所得到的圖形繪製一起。 : 我想請問版上高手 : 1.我只能一次一次的改變數值去得到這三條方程式, : 是否有什麼特殊指令可以更簡潔的計算一次得到這三組函數, : 一開始有想到用map可是它是取矩陣中的元素去運算, : 我的目的是像Do迴圈這樣,可是我的值是只能選取特定的值。 eqn1=6\[Omega]*a*x+7\[Lambda]*b; eqn2=8\[Lambda]*a+12\[Omega]*bx; test[fun1_,fun2_,w_,l_,xx_]:= Block[{a,b,BB,BE,coa,cob,eqn1temp,\[Omega],\[Lambda],x,y, eqn11,eqn22}, eqn1temp=fun1/.x->y; \[Omega]=w;\[Lambda]=l;x=xx; eqn11=fun1;eqn22=fun2; BB={Coefficient[eqn11,#]&/@{a,b}, Coefficient[eqn22,#]&/@{a,b}}; BE=Eigensystem[BB]; {coa,cob}=Sort[Transpose@BE][[1,2]]; eqn1temp/.{a->coa,b->cob} ] data = {{6, 10, 0.41}, {7, 128, 0.2}, {9, 4800, 0.1}}; Plot[test[eqn1, eqn2, #[[1]], #[[2]], #[[3]]] & /@ data, {y, 0, 1}] : 2.選取Eigensystem[BB][[1]]中最小值, : 所對應到Eigensystem[BB][[2]]之特徵向量即為a,b之值。 : 要怎麼自動選取最小特徵值所對應到的特徵向量, : 用Min[]選結果都是選到{}內最小的值=_= 先轉置,在用Sort排序,第一個就是 : 3.另外請教一下,當我使用Do迴圈所得到的大量數據, : 是否能用成表格表示?? 只有想不到,沒有做不到 myresult={#[[1]],#[[2]],#[[3]], test[eqn1,eqn2,#[[1]],#[[2]],#[[3]]]}&/@data TableForm[myresult,TableHeadings->{Range[Length@myresult],{"\[Omega]", "\[Lambda]","x","xop"}}] -- 養花種魚數月亮賞星星 http://chungyuandye.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.131.111

12/01 21:19, , 1F
謝謝老師,實在太厲害了@@
12/01 21:19, 1F

12/01 23:10, , 2F
老師請教一下,當中的eqn11是指eqn1嗎??
12/01 23:10, 2F

12/02 00:22, , 3F
不是的 仔細看 Block 裡有宣告 eqn11 和 eqn22 為暫時變數
12/02 00:22, 3F
文章代碼(AID): #1ErttlPj (Mathematica)
文章代碼(AID): #1ErttlPj (Mathematica)