跳轉到內容

程式設計的科學/時光流逝

來自華夏公益教科書

在 CME 的第 8 章中,SPT 討論了牛頓如何使用變數上的一個點來表示微分,而萊布尼茨則使用了本書中的符號:. 萊布尼茨符號的優點是,它明確說明了在進行微分時應考慮哪個自變數(如果有多個自變數)。[1]

例如,如果

   

那麼

   

另一方面,關於 t 而不是 x 進行微分得到

   

因為 被視為相對於自變數 t 的常數。也就是說,無論你改變 t 的值多少, 的值都不會改變(因為你沒有改變 x,只是 t)。

到目前為止,我們一直在假設,自變數和我們求導的變數是同一個。

讓我們研究一下如果我們不做出這樣的假設,我們的程式碼可能是什麼樣子。

一個樸素的微分系統

[編輯 | 編輯原始碼]

根據我們對術語構造器的視覺化,我們一直假設自變數是 x,因為我們最終得到了像這樣的視覺化

   3x^2

如果我們不硬編碼自變數,我們將需要將其傳遞進來。以下是 term 的一個版本框架,其中自變數的名稱將被傳遞進來

   function term(a,iv,n)
       {
       function value(x) { ... }
       function toString() { ... }
       function diff(wrtv) { ... }
       this;
       }

新版 term 和舊版 term 之間的第一個主要區別在於,新版 term 有三個形式引數,而不是兩個。第二個形式引數 iv(代表independent variable,即自變數),表示自變數。我們假設它將繫結到諸如 xt 等符號。我們可以在基本 toString 方法(沒有簡化的那個)中看到這一點,它從

   function toString() { "" + a + "x^" + n; }

變為

   function toString() { "" + a + iv + "^" + n; }

注意,原始版本中的 x 是字串的一部分,因此是固定的。在第二個版本中,iv 是一個變數,它被(或更確切地說將被)繫結到一個符號。看一下視覺化將有助於我們理清思路

   var t = term(5,:w,3);
    
   sway> t . toString();
   STRING: 5w^3

第二個主要變化是,微分方法 diff 現在接受一個引數 wrtv,它代表with-respect-to variable(即關於哪個變數微分)。如果自變數和關於哪個變數微分的變數相同,則微分將像以前一樣進行。如果不相同,則會生成一個常數零

   function diff(wrtv)
       {
       if (wrtv == iv)
           {
           if(n == 0,term(0,iv,0),term(a * n,iv,n - 1));
           }
       else
           {
           constant(0); 
           }
       }

現在讓我們測試一下

   var a = t . diff(:w);   //iv and wrtv match
   var b = t . diff(:x);   //iv and wrtv do not match
    
   sway> t . toString();
   STRING: 5w^3
   sway> a . toString();
   STRING: 15w^2
   sway> b . toString();
   STRING: 0

此輸出假設 termtoString 方法執行了上一章中討論的簡化。

value 方法怎麼樣?

[編輯 | 編輯原始碼]

我們不需要更改術語的 value 方法。這是因為使用了自變數的,而不是它的名稱。換句話說,value 方法執行數值計算,而 diff 方法執行符號計算。因此,value 需要一個數字,而 diff 需要一個名稱。

由於 toStringdiff 都使用術語變數的名稱而不是值,因此它們都需要修改,因為名稱不再是硬編碼的。

1. 如果我們將形式引數 iv 重新命名為 x 並且將所有 iv 的出現替換為 x 會發生什麼?解釋一下。

2. 重新定義簡化的 term 構造器,使其不再假設自變數是 x

3. 重新定義簡化的 sum 構造器,使其不再假設自變數是 x

4. 完成樸素的微分系統(minustimesdiv)。

5. 使用 sway 做 p. 92 上的 2。

6. 使用 sway 做 p. 92 上的 4 和 5。

7. 我們正在玩一個把沙包扔進垃圾桶的遊戲,我們想正確地模擬物理現象。水平位移為 ,垂直位移為 xz 關於 t 的變化是什麼?令 ,並且 。繪製 xz 以及 xz 方向上的速度與時間的關係圖,時間範圍為 0 到 10。

  1. 正如 SPT 指出的那樣,點符號是在假設關於時間 t 進行微分的情況下使用的。因此,本章的名稱。


泡沫、沖洗、重複 · 在連鎖幫派中工作

華夏公益教科書