Re: [問題] 變數轉換 (2000P)已回收

看板MATLAB作者 (大頭)時間14年前 (2010/06/22 19:42), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《kuoyfu (大頭)》之銘言: : 小弟目前有一個問題 : 我有一個變數 x 而 N 與 M 都為 x 的函數 : 舉例來說可能我假設 N=x^6+1 M=x^5+1 : 一個R值 R=N/M : 我對R微分 diff(R)之後 : 我希望看到的是類似 (N'*M-N*M')/M^2 : 而不是看到已經變成x的微分函數 6*x^5/(x^5+1)-5*(x^6+1)/(x^5+1)^2*x^4 : 目的主要是因為我知道的資料是 N' 與 M' 的數值 而不清楚x的值 : 現在我有想過是不是等得x的微分函數後 : 再想辦法把 6*x^5 取代成 N' 5*x^4 取代成 M' : 不過似乎...................異想天開嗎XD : 不知道有沒有版大有人做過類似的資料運算 : 感謝解惑!!! : ===================================================================== : 我下午有嘗試如果我 N=sym('N(x)'); M=sym('M(x)'); : 那我使用微分後diff(R)=diff(N(x),x)/M(x)-N(x)/M(x)^2*diff(M(x),x) : 感覺起來是有符合我想要的意思 : 不過我還是無法將diff(N(x),x)與diff(M(x),x)用數值代換掉=_= : 好像是白做工的囧....... : 不知道是不是這樣做讓大家有靈感了捏?! 小弟在花了一堆時間後最後還是用了很笨的方法 沒錯 我假設 N=sym('N(x)'); M=sym('M(x)'); R=N/M; 然後 diff(R,1) 得 diff(N(x),x)/M(x)-N(x)/M(x)^2*diff(M(x),x) DR=diff(R,1); str=char(DR); 之後是一堆 str=strrep(str,'/','./'); str=strrep(str,'*','.*'); str=strrep(str,'^','.^'); str=strrep(str,'diff(N(x),x)','DN');........................ 因為DN是已知值 之後再用eval(str)答案就出來了 有版大說可以使用subs下去代換掉diff(N(x),x) 不過其實我有試過了 可能因為一開始變數假設的關係 不能用耶 或許是我沒有了解DIGI大的想法 如果DIGI大能說明一下我想會輕鬆很多 那目前這個方式可以微很多次啦 只不過在strrep的過程需要一些觀察 看那些變數需要取代 像是 diff(N(x),$(x,2)) 變成char之後 diff(N(x),'$'(x,2)) 蠻特別的 今天也花了很多時間再找文章 就是在找變數假設的問題 怎樣去假設出一個變數為另一個變數的函數呢 就像是這次例子的 N 是 x 的函數一樣 N=sym('N(x)') 這個打法是我誤打誤撞弄出來的 結果似乎是有這個意思 看了HELP其實也沒發現這種例子 不知道有沒有版大可以說明或是有其他做法呢??? 阿其實我這個問題主要是想要寫 Rational B-spline 不知道是不是有其他對於曲線很有興趣的朋友也曾經撰寫過呢?? 來分享一下寫法吧~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.59.19

06/22 21:13, , 1F
怪我囉?  ̄▽ ̄
06/22 21:13, 1F

06/22 21:19, , 2F
呵 上面那句開玩笑 晚點有空回再一篇比較完整的好了
06/22 21:19, 2F

06/22 22:49, , 3F
酷斃了好耶!!!
06/22 22:49, 3F
文章代碼(AID): #1C8A725w (MATLAB)
文章代碼(AID): #1C8A725w (MATLAB)