[問題] Transfer fnction值與Matlab轉換語言問題

看板Mathematica作者 (泰瑞獸)時間2年前 (2022/04/20 19:01), 2年前編輯推噓3(3012)
留言15則, 4人參與, 1年前最新討論串1/1
各位前輩們好,我最近因數值過大的原因要從Matlab轉換到Mathematica進行計算,但在編寫程式時遇到了以下的問題 https://i.imgur.com/plWcqQv.jpg
以上的圖片是在Matlab所編寫的程式碼 簡單來說我需要經過迴圈相加過後的transfer function並取出方程的分子與分母的係數,但我的數值有點大Matlab計算不出來,因此想請教各位前輩要怎麼在Mathematica 進行迴圈內有transfer function的編寫。 謝謝各位的幫忙! ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.94.95 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Mathematica/M.1650452480.A.585.html

04/20 19:13, 2年前 , 1F
有原始數學式嗎?
04/20 19:13, 1F
非常謝謝你的幫忙!我先試看看你說的方法!原始數學式有些複雜,這是在做RC電路的Foster轉換成Cauer模型的轉換

04/20 19:13, 2年前 , 2F
一般來說這種迴圈在 Mathematica 是使用 Do[]
04/20 19:13, 2F

04/20 19:16, 2年前 , 3F
然後看起來 s 是多項式變數, 那其實就直接寫出來就好
04/20 19:16, 3F

04/20 19:18, 2年前 , 4F
所以應該會像是下面這樣
04/20 19:18, 4F

04/20 19:18, 2年前 , 5F
h=0;Do[h=h+R[[i]]/(1+R[[i]]*C[[i]]*s),{i,1,Length[R]}];
04/20 19:18, 5F

04/20 19:19, 2年前 , 6F
取分子分母可以使用 Numerator[] 及 Denominator[]
04/20 19:19, 6F

04/20 19:19, 2年前 , 7F
然後再使用 CoefficientList[...,s] 取出係數陣列
04/20 19:19, 7F

04/20 19:20, 2年前 , 8F
那還有就是求和迴圈在 Mathematica 可以寫成類似數學式的
04/20 19:20, 8F

04/20 19:21, 2年前 , 9F
Sum[加總項, {i,1,Length[R]}] 這樣, 就不用額外寫 Do 加了
04/20 19:21, 9F
※ 編輯: larry78930 (101.10.94.95 臺灣), 04/20/2022 19:28:51

04/23 03:53, 2年前 , 10F
MATLAB應該不至於算不出來吧?
04/23 03:53, 10F
還在研究Mathematica要怎麼算很小的數

04/23 21:33, 2年前 , 11F
我的數值大到10^100,小到10^-400,Matlab不是NaN就是
04/23 21:33, 11F
10^1000

04/23 21:33, 2年前 , 12F
inf QQ
04/23 21:33, 12F
※ 編輯: larry78930 (101.10.45.238 臺灣), 04/23/2022 21:33:28 ※ 編輯: larry78930 (101.10.45.238 臺灣), 04/23/2022 21:36:09

04/24 08:50, 2年前 , 13F
電路通常應該可以取LOG或者單位取kM之類的
04/24 08:50, 13F

06/24 15:07, 1年前 , 14F
我記得 Matlab 有提供 vpa
06/24 15:07, 14F

06/24 15:07, 1年前 , 15F
文章代碼(AID): #1YN-W0M5 (Mathematica)
文章代碼(AID): #1YN-W0M5 (Mathematica)