[問題] 微分問題已回收

看板MATLAB作者 (water)時間14年前 (2010/07/16 15:00), 編輯推噓2(204)
留言6則, 1人參與, 最新討論串2/2 (看更多)
大家好 我剛接觸matlab不到一個禮拜,關於微分上有些疑問想要請教一下各位 我想要求 d(x^2)/dx 在不同點的值,有以下幾種方法 可能問的問題很簡單,但我還是想不太通(黃色字體為我的疑問) (法1) x=linspace(0,10,11); y=x.^2; dy=gradient(y,x) dy = 1 2 4 6 8 10 12 14 16 18 19 (這算出來的值好像怪怪的,d(x^2)/dx=2x,如果把0-10每個值帶入,應該結果是 0.2.4.6.8.10.12.14.16.18.20,電腦顯示的頭尾1.19是錯的) (法2) x=linspace(0,10,11); y=x.^2; dy=gradient(y,1) dy = 1 2 4 6 8 10 12 14 16 18 19 以上兩個結果同 如果我改成 (法3) x=linspace(0,10,11); y=x.^2; dy=gradient(y,2) %把原先的1改成2 dy = Columns 1 through 9 0.5000 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 Columns 10 through 11 9.0000 9.5000 結果就會和法1.2完全不一樣 _______________________________________________________________ (底下是我的第2個疑問,因為色碼一直跑掉,所以不用成黃色) 我想請問dy=gradient(y,2)中的2不是代表dx的間距嗎? 可是我已經先定義x是以1為間距,0-10的一組向量,如果間距可以被改成2, 那麼出來的值應該是x=0.2.4.6.8.10帶入2x中的結果,應該只有6個元素, 可是電腦卻還是顯示11個元素,不知道這11個元素是由哪些x帶入的結果? 因為正常來說,dy=gradient(y,1)這個1不是要搭配原先定義x間距值才對? 以上問題懇請各位賜教 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.7.59 ※ 編輯: Ertkkpoo 來自: 140.112.7.59 (07/16 15:02) ※ 編輯: Ertkkpoo 來自: 140.112.7.59 (07/16 15:03) ※ 編輯: Ertkkpoo 來自: 140.112.7.59 (07/16 15:03) ※ 編輯: Ertkkpoo 來自: 140.112.7.59 (07/16 15:05)

07/16 16:11, , 1F
help gradient 裡面有例子說明 也有詳盡解釋
07/16 16:11, 1F

07/16 16:55, , 2F
對不起 是我笨了 文章沒看仔細
07/16 16:55, 2F

07/16 17:03, , 3F
目前發現gradient前後會出現誤差值 誤差值大小與取樣間距一致
07/16 17:03, 3F

07/16 17:03, , 4F
若是要避免這問題 可以改用symbol的方式來運算
07/16 17:03, 4F

07/16 17:05, , 5F
或是事先算出誤差 再修正頭尾數值
07/16 17:05, 5F
文章代碼(AID): #1CG0E3ME (MATLAB)
文章代碼(AID): #1CG0E3ME (MATLAB)