看板 Mathematica 關於我們 聯絡資訊
各位前輩們好,我最近因數值過大的原因要從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
LPH66: 有原始數學式嗎? 04/20 19:13
非常謝謝你的幫忙!我先試看看你說的方法!原始數學式有些複雜,這是在做RC電路的Foster轉換成Cauer模型的轉換
LPH66: 一般來說這種迴圈在 Mathematica 是使用 Do[] 04/20 19:13
LPH66: 然後看起來 s 是多項式變數, 那其實就直接寫出來就好 04/20 19:16
LPH66: 所以應該會像是下面這樣 04/20 19:18
LPH66: h=0;Do[h=h+R[[i]]/(1+R[[i]]*C[[i]]*s),{i,1,Length[R]}]; 04/20 19:18
LPH66: 取分子分母可以使用 Numerator[] 及 Denominator[] 04/20 19:19
LPH66: 然後再使用 CoefficientList[...,s] 取出係數陣列 04/20 19:19
LPH66: 那還有就是求和迴圈在 Mathematica 可以寫成類似數學式的 04/20 19:20
LPH66: Sum[加總項, {i,1,Length[R]}] 這樣, 就不用額外寫 Do 加了 04/20 19:21
※ 編輯: larry78930 (101.10.94.95 臺灣), 04/20/2022 19:28:51
Rasin: MATLAB應該不至於算不出來吧? 04/23 03:53
還在研究Mathematica要怎麼算很小的數
larry78930: 我的數值大到10^100,小到10^-400,Matlab不是NaN就是 04/23 21:33
10^1000
larry78930: inf QQ 04/23 21:33
※ 編輯: larry78930 (101.10.45.238 臺灣), 04/23/2022 21:33:28 ※ 編輯: larry78930 (101.10.45.238 臺灣), 04/23/2022 21:36:09
Rasin: 電路通常應該可以取LOG或者單位取kM之類的 04/24 08:50
Sanvean: 我記得 Matlab 有提供 vpa 06/24 15:07