分享好文,中學生要學電腦嗎?
作者:創新工場CTO、人工智慧工程院執行院長 王詠剛
文章来自半轻人微信公众号(ban-qing-ren)
………………………………
朋友的孩子高中剛畢業,已拿到美國頂尖大學(非電腦專業)的錄取通知。疫情影響,不知何時才能去學校報到。孩子想抓緊學習一下程式設計,為大學打好基礎。這孩子找我聊了一個多小時,從如何學程式設計,聊到非電腦專業和電腦專業的路徑差異,又聊到如何從不同角度認識電腦與程式設計。聊得比較寬泛,不知是否對這孩子有用。
回想我自己的高中時代:那時雖迷戀程式設計,卻完全沒有懂行的人指導。在我們那個四線城市的廠礦中學裡,開設電腦興趣課的老師知道的資訊還沒我多。我高一時跑到北京中關村逛街,卻完全沒意識到中國第一代頂尖程式師當時就在我身邊的低矮辦公樓裡寫代碼(這話說得並不準確,比如求伯君那年就主要是在珠海做開發),鼎鼎大名的UCDOS、WPS、CCED就出自他們之手……我在當時街邊的一家書店(位置似乎就在今天的鼎好大廈對面)買到了許多種印刷品質極低劣的電腦圖書。用今天的標準看,那就是一批盜版影印或未授權翻譯的國外圖書。可那批書竟成了我高中時代最寶貴的程式設計知識來源。
顯然,我在高中時根本就是野路子學電腦。現在後悔也沒用,當時我的眼界或能觸及的資源就那麼多。如果能穿越回30年前,我該對喜歡程式設計的自己說些什麼呢?這些年,我與世界上最好的一批程式師合作過,也參與過世界上最有價值的軟體系統研發——我所積累的一些粗淺經驗裡,有哪些可以分享給一個愛程式設計的中學生?
【問題1】中學生要不要學電腦?
當然要!
每個中學生都要學。只不過——建議大部分中學生使用“休閒模式”,小部分(不超過10%)中學生使用“探險模式”。
啊?兩個模式?那我該進入哪個模式?⟹請跳轉至【問題2】
【問題2】選哪個模式?
你癡迷電腦嗎?比如,你玩遊戲時會特別想知道這遊戲背後的代碼是如何編寫的嗎?再比如,就算老師家長不同意你學電腦,甚至當著你的面把電腦砸了,你也要堅持學電腦嗎?如果是,恭喜你進入“探險模式”⟹請跳轉至【問題200】
你對數學有興趣嗎?比如,你看到街邊建築的曲線,就會在腦子裡琢磨曲線對應的函數或方程嗎?每當手裡攥著幾粒骰子,你就會不由自主地計算概率嗎?如果是,歡迎進入“探險模式”⟹請跳轉至【問題200】;當然,如果有些猶豫,也可以先進入“休閒模式”⟹請跳轉至【問題100】
即便你對電腦和數學興趣不大,家長、老師還是強烈建議你學電腦嗎?就算你一百個沒時間一千個不願意,家長、老師還是會逼著你學電腦嗎?如果是,建議你主動進入“休閒模式”並向家長、老師彙報說“我已經按照前谷歌資深軟體工程師的專業建議在認真學程式設計了”⟹請跳轉至【問題100】
其他情況,一律進入“休閒模式”。⟹請跳轉至【問題100】
【問題100】休閒模式 | 主要學什麼?
“休閒模式”將電腦視為我們生活、工作中的必備工具,主要學習如何聰明、高效、優雅地使用計算設備。這裡說的計算設備,包括所有形式的電腦、手機、遊戲機、智慧家電以及未來一定會進入生活的自動駕駛汽車。
什麼什麼?你已經會用電腦、會玩手機、會打遊戲了?別著急,慢慢往下看。
【問題101】休閒模式 | 我會用搜尋引擎嗎?
我知道你會用百度搜習題答案。但,習題答案不是知識。你會用搜尋引擎來搜索和梳理知識嗎?請試著用電腦和你喜歡的搜尋引擎來解決如下兩個問題:
(1)圓周率𝜋的計算方法有多少種?每種不同的計算方法分別是由什麼人在什麼時代提出的?借助電腦,今天人們可以將圓周率𝜋計算到小數點後多少位?將圓周率𝜋計算到小數點這麼多位元,一次大概需要花掉多少度電?
(2)全球大約有多少個廁所?在發展程度不同的國家,分別有多少比例的人可以享用安裝了抽水馬桶的衛生廁所?為什麼比爾·蓋茨曾大力推動一個設計新型馬桶的研發專案?比爾·蓋茨的公益組織在這個專案上大約花費了多少資金,最終收到了多大的效果?
如果你沒法快速得到上述問題的全部答案,那就給自己設一個小目標:一個月內,學會用搜尋引擎系統地獲取、梳理一組知識點的全部技巧。
【問題102】休閒模式 | 接下來學什麼?
建議學好典型的工具軟體。比如,我知道你會用Office了,但用Office和用Office是很不一樣的。對生活、學習、工作來說,學好、學透一個工具軟體比鑽研程式設計技巧更實用。
你會用Excel來管理班級公益基金的預算和實際收支情況嗎?
你會用Excel做出過去20年裡全球大學排名的演變趨勢圖嗎?
你會用Word排版一篇中學生論文嗎?論文中的圖表和最後的參考文獻部分該如何排版?
你會用Word編排一份班級刊物,包含封面、扉頁、目錄、插圖頁、附錄、封底等部分,可以在列印後直接裝訂成冊嗎?
PowerPoint呢?你有沒有研究過蘋果公司發佈會上那些幻燈片的設計?當約伯斯(多年以前)或蒂姆·庫克站在幻燈片前的時候,他們的演講思路是如何與幻燈片完美結合的?
還有哦,別忘了學學如何為數碼照片做後期,如何用電腦或手機剪視頻,如何為剪輯好的視頻配字幕,如何將照片、音樂、視頻等素材結合起來,做出一段吸引人的快手/抖音短視頻。
最後,抽空玩玩那些設計精妙的遊戲吧,比如《紀念碑穀》、《塞爾達傳說:曠野之息》之類;同時,遠離那些滿屏廣告,或者一心騙你在遊戲裡充值花錢的垃圾。
【問題103】休閒模式 | 不學學知識嗎?
當然要學知識。下面每種實用的電腦知識都夠大家學一陣子了。
(1)色彩知識:你知道同一張數碼照片在不同品牌的手機螢幕上、不同的電腦螢幕上、不同的智慧電視上顯示時,為什麼經常有較大色差嗎?你知道有一些色彩只適合螢幕顯示,不適合列印輸出嗎?你知道軟體工具裡常用的RGB、HSL之類的色彩空間都是什麼意思嗎?如何在設計PowerPoint幻燈片時選擇一組和諧美觀的色彩?
(2)字體知識:你知道什麼是襯線字體,什麼是無襯線字體嗎?你知道網頁中常用的英文字體都有哪些嗎?你知道商務演講時最適用于幻燈片的英文字體有哪些嗎?你知道電腦和手機常用的黑體、宋體、仿宋體、楷體等中文字體分別適合哪些實際應用場合嗎?你會將不同字體混排成一個美觀的頁面嗎?
(3)網路知識:你知道5G是什麼嗎?你知道5G和4G在通信頻寬、通信距離上的具體區別嗎?你知道什麼是路由器,什麼是防火牆嗎?你知道如何配置路由器,如何配置防火牆嗎?微信或QQ聊天時,對方發的文字、語音或視頻是如何傳送到你的手機上的?
(4)應用知識:淘寶中搜索得到的商品資訊是從哪裡來的?商品是按什麼方式排序的?為什麼購物APP經常會推薦給你一些曾經買過、看過的商品?你知道如何為自己建立個人網站嗎?你知道如何管理微信公眾號嗎?
(5)安全知識:你知道網路上的釣魚攻擊是怎麼回事兒嗎?你知道什麼是電腦漏洞嗎?你知道駭客為什麼想把一大批受攻擊的電腦變成可以遠端操控的傀儡機嗎?你知道為什麼現在很多手機APP都要通過短信發送驗證碼嗎?如果驗證碼被壞人截獲,你會面臨哪些風險?
這裡只是舉例。實用的電腦知識還有很多。大家可以自己發掘。
【問題104】休閒模式 | 我需要學程式設計嗎?
可以學,但不是必須。即便學,也只需要根據自己的需要,學那些最能幫你解決現實問題的部分。
【問題105】休閒模式 | 我該學什麼程式設計語言?
在“休閒模式”裡,電腦就是工具,程式設計也是工具,夠用就好。學什麼程式設計語言,完全看你想要電腦幫你做什麼。
• 如果你想對資料處理有更多自主權,那不妨學學Python;
• 如果你想做簡單的交互演示程式,那就先把JavaScript學起來;
• 如果你想更好、更快地寫論文,那不妨學學LaTeX(什麼什麼,LaTeX不是程式設計語言?你太小看LaTeX了);
• 如果你想學做簡單的手機APP,那麼,Android手機就學Java,蘋果手機就學Swift好了;
• 如果你只想知道程式設計是怎麼回事,那……從Python或JavaScript開始就行。其實,跟五六歲的小朋友一起學學Scratch圖形程式設計也不錯。
【問題106】休閒模式 | 我需要學人工智慧嗎?
在“休閒模式”裡,最需要學的不是“人工智慧的實現原理”,而是“什麼是人工智慧”,以及“人工智慧能做什麼,不能做什麼”。
• 在手機上試一試,人工智慧做語音辨識時能做到什麼水準?哪些話容易識別,哪些話不容易識別?
• 打開機器翻譯軟體,試一試哪些資訊翻譯得好,哪些資訊翻譯得不好?
• 手機上的拍照軟體一般都有人臉識別功能。試一試人臉識別在什麼場景下做得好,什麼場景下做得不好?
• 找一部講人工智慧的科幻電影,用自己的判斷解讀一下,電影裡哪些技術有可能成為現實,哪些技術存在邏輯矛盾。
【問題107】休閒模式 | 推薦什麼參考書、參考文獻?
書不重要,豆瓣評分7分以上的電腦應用、程式設計甚至科普類圖書都可以拿來翻翻。
直接在知乎裡搜索你想瞭解或學習的知識點可能更有效率。
如果你意猶未盡,覺得自己剛活動開筋骨,還想挑戰更高層次,歡迎進入“探險模式”。⟹請跳轉至【問題200】
否則,“休閒模式”到此結束。⟹請離開此問答
【問題200】探險模式 | 主要學什麼?
“探險模式”需要有挑戰精神。電腦科學的世界技術演進快,脈絡複雜,要想在探索時不迷路,你得通過有順序、有系統地學習電腦知識,慢慢構建出一張可以在未來幫你走得更遠的思維地圖來。
在“探險模式”裡,電腦就不止是一件能快速計算的工具了。電腦更像是我們大腦的一種延伸。這既包括認知能力的延伸,也包括認知邏輯的延伸。隨著學習深入,大家會逐漸體會到電腦所具有的多維度能力:
電腦是一種可以表示不同類型資訊(數、符號、文字、語音、圖像、視頻、虛擬空間、抽象邏輯)的“資訊管理機”;
同時,電腦也是一種可以連續執行指令以完成特定的資訊處理任務的“指令處理機”;
同時,電腦還是一種可以在知識與邏輯層面完成特定推理任務的“知識推理機”;
同時,電腦也是一種可以從人類給定的資料或自我生成的資料中總結規律,建立模型,自主完成某些決策的“智慧學習機”。
“探險模式”的目標就是盡可能準確地認識電腦,掌握有關電腦運行的最基本規律。有了這些基礎。未來在大學期間或工作中,你就能更容易地設計電腦軟硬體系統,或是設計出碳基大腦(人類)與矽基大腦(機器智慧)之間的最佳協作方案。
【問題201】探險模式 | 我的英語水準足夠嗎?
蘋果每年秋季的新品發佈會,不加字幕的話,你能聽懂多少?
能聽懂大部分:建議在學習電腦的過程中,盡可能使用英文教材、英文文檔。
能聽懂小部分:建議將原來準備學電腦的時間,分出一部分來學英語。
只能聽懂“你好”“再見”之類:⟹請離開此問答。然後,把原來準備學電腦的時間用於學英語,六個月後再回來。
【問題202】探險模式 | 我的數學水準足夠嗎?
如果你是數學和數學應用小能手——較複雜的數學問題總能快速找到核心思路,或快速簡化為簡單問題;很容易就能將抽象概念映射到具體的數學圖形,或將數學問題與相應的現實問題關聯在一起:請繼續探險之旅。
如果你應付正常數學課程感到吃力:建議將原來準備學電腦的時間,分出一部分來學數學。
如果你還搞不清楚什麼是方程、函數、集合、概率……:⟹請離開此問答。然後,把原來準備學電腦的時間用於學數學,六個月後再回來。
【問題203】探險模式 | 為什麼強調英語和數學?
(1)統計上說,最好的電腦參考資料大都是英文寫的,最好的電腦課程大都是用英文講的,最新的電腦論文大都是用英文發表的。
(2)函數、方程、坐標系、標量、向量、排列組合、概率這些中學數學裡會初步學習到的數學知識,是電腦科學的基礎。
【問題204】探險模式 | 電腦知識那麼多,正確的學習順序是什麼?
最重要的順序有兩個。建議先從順序一開始,學有餘力時兼顧兩個順序。
順序一:自底向上,即,自底層原理向上層應用拓展的順序。
電腦原理的基礎知識:
為什麼每台電腦(包括手機)都有CPU、記憶體和外部設備?
(馮·諾依曼體系結構的)記憶體中為什麼既可以存儲資料,也可以存儲指令?
CPU是如何完成一次加法運算的?
程式設計語言的基礎知識:
資料類型,值,變數,作用域……
語句,流程控制語句……
過程、方法或函數,類,模組,程式,服務……
編譯系統的基本概念:
電腦程式是如何被解釋或編譯成目標代碼的?
演算法和資料結構的基礎知識:
陣列,向量,鏈表,堆,棧,二叉樹,樹和圖……
遞迴演算法,排序演算法,二叉樹搜索演算法,圖搜索演算法……
應用層的基礎知識:
為什麼電腦需要作業系統?設備驅動程式是做什麼的?
網路通信的基本原理是什麼?流覽器是怎麼找到並顯示一個網頁的?
資料庫是做什麼用的?
虛擬機器是怎麼回事?
人工智慧系統的基礎知識:
先熟悉些線性代數、概率和數學優化的基礎知識。
什麼是機器學習?從簡單的線性回歸中體會機器學習的基本概念、基本思路。
什麼是神經網路?什麼是深度神經網路?為什麼神經網路可以完成機器學習任務?
如何使用PyTorch或TensorFlow實現簡單的深度學習功能?
順序二:自頂向下,即,自頂層抽象邏輯向下層具體邏輯拓展的順序。
• 電腦的本質是什麼?
• 什麼是圖靈機?什麼是通用圖靈機?
• 什麼是讀取﹣求值﹣輸出迴圈(Read–eval–print Loop,REPL)?
如何用自頂向下的方式理解(解析、解釋、編譯)一段程式碼?
• 靜態語言和動態語言的區別?
如何理解變數與資料類型之間的綁定關係?
• 什麼是函數式程式設計?
程式設計語言中,函數的本質是什麼?
函數為什麼可以像一個值一樣被表示、存儲、傳遞和處理?
• 什麼是物件導向?
類的本質是什麼?
如何用物件導向的方式定義個功能介面?
如何依據介面實現具體功能?
• 什麼是事件驅動?
什麼是事件?事件如何分發到接收者?
如何在事件驅動的環境中理解代碼的狀態和執行順序?
【問題205】探險模式 | 如何提高程式設計水準?
在掌握基本知識體系的基礎上,學好程式設計只有一條路:多程式設計,多參加程式設計比賽,多做程式設計題,多做實驗項目,多找實習機會——其中,能參與真實專案是最有價值的。
【問題206】探險模式 | 該從哪一門程式設計語言學起?
我個人推薦的程式設計入門語言(可根據情況任選):
Python
Java
Swift
C#
JavaScript / TypeScript
Ruby
……
可能不適合入門,但適合後續深入學習的語言:
C
C++
Go
Objective-C
組合語言
機器語言(CPU指令集)
Shell Script
Lua
Haskell
OCaml
R
Julia
Erlang
MATLAB
……
【問題207】探險模式 | 如何選參考書和參考資料?
(1)強烈推薦的參考書和參考資料:
• MIT、Stanford、CMU、UC Berkeley這四所大學中任何一個電腦專業方向使用的教學參考書或參考資料。網上可以查到這些學校電腦專業方向的課程體系,有的學校甚至公開了課程視頻。其中往往會列舉參考書和參考資料連結。
• 維琪百科(英文)上的數學、電腦科學相關條目。
• Github上star數在1000以上的開原始程式碼和開來源文件。
(2)強烈推薦但須小心辨別的參考資料:
知乎上的數學、電腦科學相關條目。使用時需要格外注意三件事:
儘量只看高贊答案或高贊文章;
辨別並避開廣告軟文;
辨別並避開純抖機靈的故事或段子。
Stack Overflow上的程式設計問題解答:
自己動手實驗,辨別解答是否有效。
CSDN上的程式設計問題解答:
自己動手實驗,辨別解答是否有效。
(3)其他推薦的參考書和參考資料:
國內專業作者寫作的專業技術書籍(豆瓣評分7分以上的)。
大廠(Google、Facebook、Microsoft、Amazon、阿裡、騰訊、百度、頭條等)資深工程師的技術公號、專欄、博客等。
著名圖書系列:如O’Reilly的動物封面的系列圖書(請注意最新版本和時效性)。
國內翻譯的著名技術圖書(譯本在豆瓣評分7分以上的)。
(4)儘量避免的參考書和參考資料:
• 已經過時的圖書或參考資料。
• 作者或譯者人數比章節數還多的專業圖書。
• 百度百科上的數學或電腦科學相關資料。
什麼什麼?你這篇問答居然沒有推薦一本具體的圖書?是,沒錯。如果你覺得即便有了上面的線索,自己還是找不到好書好資料,那也許你還是適合“休閒模式”⟹請跳轉至【問題100】
latex 怎麼 打 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
在 🦄 Uniswap v2 到來之前徹底了解 v1 的設計與演算法!
Image source: https://uniswap.org/
Outline
一. 前言二. 恆定乘積做市商模型 Constant Product Market Maker Model 1. 計入手續費 2. 程式碼結構 3. 演算法核心與實作 4. 段落小結三. 流動性 Liquidity 1. 第一筆流動性注入、決定k值 2. 除了第一筆以外的情況四. 結語
一. 前言
暨上一篇開始接觸了 Vyper 後,我找了 Uniswap 的程式碼來更加熟悉 Vyper 的實作方法,順便研究了其演算法,然後就又寫了一篇 xD
類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做
Uniswap 是以太坊上非常成功的自動做市商 Automated Market Maker (AMM)。本次我將用的 Uniswap 的程式碼搭配由 Runtime Verification 這家審計公司對 Uniswap 所做的形式化驗證結果來解釋恆定乘積做市商模型的 Vyper 實作 (2018 審計時 Uniswap 就已經是用 Vyper 而非 Solidity 了):
智能合約程式碼:https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_exchange.vy
合約審計結果:https://github.com/runtimeverification/verified-smart-contracts/blob/master/uniswap/x-y-k.pdf
本文將以講解實作概念及數學推導為重點,程式碼的部分只是輔助。審計結果將恆定乘積做市商模型演算法的數學推導寫得非常清楚而有趣(?),建議有興趣者可以整份看過一遍,相信得到很多收穫!
至於更多 Uniswap 的介紹有興趣者可以參考 吳冠融 Roger Wu 所撰寫的簡介與使用流程:
解析 DeFi 項目《Uniswap》(一)Uniswap 是什麼?
解析 DeFi 項目《Uniswap》(二)Uniswap 如何使用?
在開始前的最後,先預告本文頗長,所以來播個被 Youtube 推薦的歌吧:
二. 恆定乘積做市商模型 Constant Product Market Maker Model
交易所如果要去中心化、也不使用掛單 order book,就需要靠演算法自動算出交易標的的數量與價格,而 Uniswap 使用名為恆定乘積的演算法,其來源可追溯自 Vitalik 的這篇文章:點我。
公式非常的簡單:x * y = k。令交易的兩虛擬貨幣為 X 和 Y,各自數量為 x 和 y,兩貨幣數量的乘積 x * y 恆等於 k,k 值是由第一筆注入的流動性所決定 (於 三. 流動性 Liquidity 解釋)。
因此,用 ∆x 數量的 X 幣來購買 Y 幣所能得到的數量 ∆y、或是為了購買 ∆y 需要付出的 ∆x 數量,依照此公式進行計算:(x+∆x)(y-∆y) = k,而交易的價格就是兩幣量 ∆x 和 ∆y 的比。
以下公式用 α = ∆x / x 和 β = ∆y / y 來表示 ∆x 和 ∆y 及 X Y 兩幣在交易發生後的新均衡數量:
圖一
1. 計入手續費
在 Uniswap 進行的每一筆交易都會被收取 ρ = 0.003 / 0.3% 的手續費回饋給流動性提供者 liquidity provider ,因此要將手續費納入公式的考量:
圖二
上圖的公式或許不太直覺,我建議不要從 x’ρ 及 y’ρ 開始理解,而是從 ∆x 和 ∆y 兩值開始:手續費 ρ = 0.3% 的意思是會從付款中扣掉 0.3 %,也就是從 ∆x 扣。在有手續費的情況下 ∆x 就變成了 (1-ρ)∆x ,若令 γ = 1-ρ 則為 γ∆x。因此,將圖一中的 ∆x 換成 γ∆x,就會得到以下式子:
source: https://www.codecogs.com/latex/eqneditor.php
將等號左方的 γ 移到右方後就得到了圖二中的 ∆x。同理,由於 ∆y 中的 α = ∆x / x ,用 γ∆x 代換 ∆x 就會得到圖二中的 ∆y (有 α 的地方乘上 γ )。而 x’ 還有 y’ 就可以由 ∆x 和 ∆y 推出來了!
然而,將圖二中得到的 x’ 和 y’ 相乘,會得到:
source: https://www.codecogs.com/latex/eqneditor.php
也就是說,當有手續費使得 γ != 1 /ρ != 0,x’ρ * y’ρ 的值其實會稍微和 xy = k 不同:在實作上 γ = 0.997 / ρ = 0.003,因此 1/γ-1 ≒ 0.003。β = ∆y / y 代表的是換得的 Y 幣佔總量的比例,即使最大值為 1,誤差也只有 1 * 0.003,故可知手續費 = 0.3% 對於 k 值的影響極小。
2. 程式碼結構
了解了基本的公式後,就可以開始研究程式碼是怎麼撰寫的。首先來看各個函式的功能:
addLiquidity() 及 removeLiquidity():轉入與轉出資金,留到 三. 流動性 Liquidity 中說明
getInputPrice() 及 getOutputPrice():最主要的函式,用以計算給 ∆x 所能換得的 ∆y 數量、以及為了得到 ∆y 所要支付 ∆x 的數量。此兩函式會被其他負責進行交易、匯幣的函式使用
三組 (eth->Token, Token->eth, Token->Token) 的 swap() 及 transfer():swap() 的收幣人就是付款人、transfer() 的收幣人不是付款人而是指定的對象。基本上這兩函式就是呼叫 getInputPrice() 或是 getOutputPrice() 後進行匯幣的動作,因此不再多做解釋
3. 演算法核心與實作
在研讀程式碼前,先回顧一下 ∆x 和 ∆y 的公式:
首先我們考慮用 ∆x 所能購買到的 ∆y 的 getInputPrice():
什麼…就這幾行程式碼?是的。
以上的程式碼和公式表達方式不同,因此先將 α = ∆x / x 和 β = ∆y / y 代換回來並將上下同乘 x:
source: https://www.codecogs.com/latex/eqneditor.php
由於 γ = 0.003,可以將上下同乘 1000 後得到:
source: https://www.codecogs.com/latex/eqneditor.php
接著就能來對照程式碼了:
(109行) numerator: input_amount 是欲支付的 X 幣數量 ∆x、output_reserve 是 Y 幣數量 y,再乘上 997 後就是等式右邊的上方 (= 997∆xy)
(110行) denominator: input_reserve 是 X 幣的數量,乘上 1000 再加上剛剛算過的 997∆x,就得到了等式右邊的下方 (= 1000x + 997∆x)
此處要注意的是 Vyper 的除法是無條件捨去,等同於 floor() 函式。這會不會造成嚴重的影響呢?如果熟悉 ERC20 的人應該記得,在發幣時輸入的四個參數中有一個參數代表小數點的位數,如同下方程式碼中的 2 代表最後兩位在小數點後。舉例來說,當 getInputPrice() 收到 1234567 為這個幣的 input_amount 時,代表使用者擁有的幣的數目實際上是 12345.67。因此,即使將結果捨去 0.67 後的數字,影響真的不大,況且如果不捨去而選擇無條件進位,那代表交易所反而要虧損一點點啦,太佛心了吧 xD 有興趣者可以看看審計報告的內容,有更詳細地去定義這些誤差所影響的範圍!
再來我們看若要購買 ∆y 需要付出多少 ∆x 的 getOutputPrice()。
一樣先將 α = ∆x / x 、β = ∆y / y 和 γ = 0.003 代換並上下同乘 1000y 得到:
source: https://www.codecogs.com/latex/eqneditor.php
我們已經看過 getInputPrice() 一次了,所以應該能發現第 122–124 行得出的結果和上式相同。要注意的是這邊的結果反而是無條件捨去後直接 +1,因為這是在計算使用者要付多少 ∆x 才能購買到 ∆y,為了不讓交易所虧只能選擇請使用者多付一點點。
4. 段落小結
以上就是撇除匯幣等函示,恆定乘積做市商的 Vyper 實作,沒錯就這樣而已!Uniswap 之所以可以做到低 gas 消耗就是因為這個演算法本身就非常簡單,所需的運算也就是兩三次乘除法而已!
不過我們還沒結束,接下來要談談如何投入資金/注入流動性,而這部分也包含了決定 k 值的精妙機制!
三. 流動性 Liquidity
流動性指的是交易市場中能夠交易的資金/標的物的量。使用自動做市商 (AMM) 而非掛單的最大好處就是市場一定會有流動性,而缺點就是如果交易量越大就會造成越大的滑點 Slippage,意思就是交易價格變動會越大、得到的價格越差 。
source: https://ethresear.ch/t/improving-front-running-resistance-of-x-y-k-market-makers/1281
我們可以用上面提到的 V 文章中的圖片來迅速帶過,畢竟有關注 Uniswap 的讀者大概都已經看過這圖很多次了。
當要兌換的幣的數量越大/占比越重,例如:20% Y 幣的流動性,就會造成要付出比兌換少量時極為不對稱的高額 X 幣。
接著我們要來探討注入流動性的原則,依照市場是否已經有流動性而區分為兩種情形:
1. 第一筆流動性注入、決定 k 值
以下程式碼是 addLiquidity() 函式中 46-48, 51, 及 64-74 行。當市場上還沒有任何流動性時,不會滿足第 51 行而是進入 64 行的 else。
在第 65 行我們可以看到 msg.value ≥ 10¹⁰,以及在 67 行 token_amount 就是其中一個輸入值 max_tokens。這邊代表的是第一個注入流動性的使用者可以自行決定要注入多少 Ether (≥ 10¹⁰) (= x) 以及相應的幣的數量 (= y),也就是上方提到的 k 值 (= x* y),在本例的 X 幣就是 Ether。(本處先不解釋剩餘的程式碼,留到 2. 除了第一筆以外的情況)
那麼問題來了:第一個注入流動性的人要怎麼決定提供各自多少的兩種幣呢?最好的辦法是依照當時兩幣的市價比,讓兩者的價值 (數量 * 價格) 相同,例如:當 1 Ether 的價格為 100 Dai,注入 1 Ether 以及 100 Dai 是最好的,因為兩種幣的總價值是一樣的,以下舉例說明原因。
當 1 Ether 市價為 100 Dai 時,假設第一人決定注入 1 Ether 和 50 Dai (k = 50),總價值為 150 Dai,我們考慮兩種兌換方法:
Ether -> Dai:用 0.1 Ether 來購買 Dai,依照上方公式 (1+0.1)(50-y) = 50 可得 y ≒ 4.55,也就是說得到的價格是 0.1 Ether = 4.55 Dai,遠低於市價 0.1 Ether = 10 Dai,相信沒有人這麼傻~
Dai -> Ether:用 2 Dai 來購買 Ether,依照上方公式 (1-x)(50+2) = 50 可得 x ≒ 0.038,也就是說得到的價格是 2 Dai = 0.038 Ether,高於市價 2 Dai = 0.02 Ether,那麼眼尖的人就會立刻衝來套利了xD
那麼即使如此,第一人有所損失嗎?當然有!假設路人 A 手上有 30 Dai (= 0.3 Ether),A 看到機會後就把 30 Dai 全換成 Ether:(1-x)(50+30) = 50 可得 x = 0.375,大於原本持有的 Dai 的價值 0.3 Ether。此時,第一人即使立刻抽出現存的全部資金 Ether = 0.625 及 Dai = 80,總價值也只剩下 142.5 Dai,比起原本的 150 Dai 還少。以上的計算還有手續費沒有納入考量,但也只有 30 Dai 的 0.3% = 0.09 Dai。
由上例可知,第一位提供流動性的人為了避免自己的損失,確實得依照當時兩幣的市價比去提供相應的數量。傑克,這真是太神奇了0…0
2. 除了第一筆以外的情況
如果市場已經有流動性,使用 addLiquidity() 來注入流動性就會進入第 51 行的 if。
source: https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_exchange.vy
(53行) eth_reserve: 由於使用者已經透過函式 addLiquidity() 將錢匯入了合約,因此將合約所擁有的 Ether 數量 self.balance (= x + ∆x) 減去使用者匯入的錢 msg.value (= ∆x),得到使用者匯錢之前合約內所擁有的 Ether 數量 (= x)
(54行) token_reserve: self.token 是一個餵入幣地址的 ERC20 instance;透過呼叫 ERC20 的函式 balanceOf() 即可查出合約所擁有的 Y 幣的數量 (= y)
(55行) token_amount: 透過將合約所擁有的 Y 幣的數量 token_reserve (= y) 乘上使用者匯入的錢 msg.value (= ∆x) 對合約原本擁有的Ether 數量 eth_reserve (= x) 的比例,代表使用者應該相應地注入多少 Y 幣 (∆y = y * ∆x / x)。除法一樣是無條件捨去
(56行) liquidity_minted: 將原本交易所中的總流動性 total_liquidity 乘上增加的比率 msg.value / eth_reserve (= ∆x / x) ,代表增加的流動性,隨後會在第 58 行記錄下來
(60行) transferFrom() 函式將使用者應付的 Y 幣數量 token_amount (= ∆y) 匯入當前合約,就完成了流動性的注入。小提示:智能合約中的 assert() 會確保函式內的條件如果失敗就整筆交易 transaction 直接取消,因此只要傳入的參數已經被計算好,於 60 行再進行 transferFrom() 其實與放在前面並沒有太大的差別
以上就是注入流動性的大致實作內容。取出資金 removeLiquidity() 其實與 addLiquidity() 的做法大同小異,因此就不再贅述。
四. 結語
呼,真的累。恆定乘積做市商模型的概念雖然簡單,但解釋起來還是挺複雜的!其實本文並未著墨於審計報告中的主要議題:評估因為整數除法 (不使用浮點數) 而造成的誤差範圍,因為講起來非常複雜、也不是真的這麼需要知道。不過,恰巧就是這些程式碼的細節有可能讓程式產生預期之外的結果!因此,對於有興趣了解該如何去分析智能合約整數除法的讀者,可以研究一下;而 Uniswap 的程式碼因為是用 Vyper 實作,可讀性非常高、同時也不難,因此也非常值得打開來看看、甚至動手實作自己的版本!
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
latex 怎麼 打 在 台灣溫太在大馬 Facebook 的最佳解答
#下週統一出貨
嬰兒界明星商品
📣現貨大馬台灣同時開賣!
夜半啼哭哄兒神物,口慾強寶寶的媽媽救星
✨飛利普香草奶嘴 Philips Soothie ®✨
(補上現貨美照在留言處,文末小禮物唷!)
今日文宣:
專治上車尖叫,半夜哭鬧。
想睡在歡,嘴癢戀乳。
提早凖備,一塞見效。
溫太妳別囉嗦我早就等著搶了!
台灣讀者搶先購買下單👇🏻
https://goo.gl/bBEKHJ
馬來西亞讀者搶先購買下單👇🏻
https://goo.gl/forms/Yp3TK47XCLIyXeFW2
(馬來西亞讀者如果不熟悉這種填單團購的方式,有任何問題請直接問我吧!)
(請注意有二頁,匯款後記得填寫第二頁的寄件資料才送出)
終於輪到它!大名鼎鼎的哄兒神物,好萊塢港台兩地明星寶寶愛用加持的"飛利普香草奶嘴 Philips Soothie®"
❤詳細產品介紹❤
取自官網說明:
✔️醫療級矽膠
✔️不含乳膠、不含雙酚A、不含塑化劑
✔️One-Piece一體成形特殊結構
✔️獨特仿照媽咪乳頭設計
✔️美國學院AAP指定推廣
✔️懷孕週數大於 34 週新生兒即可使用
女兒出生時,我還沒拿定主意要不要給她吃奶嘴,所以只帶了一個買奶瓶附贈的小奶嘴去月子中心。
結果小溫小姐眾望所歸,得到新生兒室盃尖叫哭鬧冠軍,不到三天,嬰兒室護士來敲門:
"Madden, your baby really need soothie lah!Every night She crying too loudly and never stop, all the babies wake up and cry cry lah!"
看著馬來籍小護士像熊貓一樣的黑眼圈,我罪惡感深重地趕快拿出小奶嘴應付。但小溫小姐並不是很喜歡,常常咬沒二下又吐出來。
回家後她仍然天天上演半夜大哭的戲碼,換了好幾種,終於比較買單乾媽送的日本品牌夜光奶嘴。一次半夜哭的聲嘶力竭,偏偏夜光奶嘴不知滾到哪裡去了。
心慌意亂手足無措的媽媽,突然想起抽屜裡有一個朋友送的香草奶嘴,號稱打遍嬰兒界無敵手,趕快找出來塞進小溫小姐的嘴裡。
說也奇怪,還真對了女兒的胃,成功度過了這一場半夜劫難,從此她就只吃這一顆奶嘴了。
以下是我實際觀察香草奶嘴特出的地方:
1. 帶有淡淡的香草味,接近奶味所以很多寶寶都很喜歡。
2. 一體成型沒有溝縫,容易清洗不會藏污納垢。
3. 材質柔軟,睡覺壓在臉下也不會留下深刻痕跡。
4. 醫療級材質,採用醫療頂級矽膠及 latex-free 材質製造,美國兒童醫療協會和APP(American Academy of Pediatrics)推廣及美國新生兒病房NICU指定專用,安全可靠。
5. 形狀是圓筒形,而且材質半透明,可以觀賞寶寶的嘴巴一開一合好像鯉魚。
(好了這一項純粹是媽媽無聊變態)
6. 價格便宜,比起動輒馬幣4-50,台幣300的各大品牌奶嘴,真是實惠。
唯一缺憾,它沒有適合穿奶嘴鍊的孔洞。但這一點其實很容易解決,買個大一點的打洞機打一下就好了,我是在daiso大創買到一個合適的打洞機。
除了朋友送的那個,回台北時又買了一個預備。小妞七個月大時出外弄掉了一個,所以只剩下僅存的一枚,為此我焦慮不已,要是再掉了可怎麼辦!
遍尋了馬來西亞的母嬰商店都沒有進口,向台灣訂購郵費又很驚人。
煩惱的媽媽於是詢問美國總公司,直接訂貨(我知道市面上有很多仿冒品,但我良心很大顆,絕對原廠正品請勿擔心)
並決定把好物分享給大家,在此提供團購。正尋找這款奶嘴的媽媽讀者們,快來快來!
*注意,販售的是醫院嬰兒室版本,無紙盒,是原廠塑膠袋密封包裝。取出熱水燙過即可使用,奶嘴和紙盒版是同一款。
⭐️Philips Soothie ®媽媽救星台灣現貨團⭐️
Philips Soothie ®圓型香草味奶嘴。
(小溫小姐使用款)
台灣讀者請按此連結,獲取詳細購買資訊下單👇🏻
https://goo.gl/bBEKHJ
⭐️Philips Soothie ®媽媽救星大馬現貨團⭐️
Philips Soothie ®圓型香草味奶嘴。
(小溫小姐使用款)
第一批現貨大馬只有30個,數滿收單,請按此連結得到匯款訊息下單👇🏻
https://goo.gl/forms/Yp3TK47XCLIyXeFW2
(請注意有二頁,匯款後記得填寫第二頁的寄件資料才送出)
馬來西亞團購資訊:
【團購價格】
Rm29/個(已含國際運費)+
國內運費西馬Rm8,東馬RM11
三個或以上免國內運費。
(寄送地址僅限馬來西亞國內)
在此真心建議一次購買兩個以上,因為奶嘴有時會神秘消失,尤其是半夜嬰兒哭鬧的時候⋯⋯妳絕對會慶幸抽屜裡還有另外一個!
【團購時間】
即日起至 9月16日(星期日)PM11:59 準時收單。
*第一批現貨大馬只有30個,數滿收單*
請在9月17日(星期一)PM3:00前匯款並回傳收件資料。
【跟團方式】
1. 點聯結獲得詳細購買表單。
2. 匯款後填單並回傳,如有問題請PM。
*以匯款順序為出貨順序*
3. 統一出貨會在社團發文通知,請注意。
【最後匯款時間】
9月17日(星期一)PM3:00前匯款並回傳收件資料。逾期請勿再匯款,訂單自動取消,不另行通知。
【出貨時間】
收單後一週內出貨。
拿到貨就被親友劫去三分之一,數量有限!初次販售價格優惠,下一批可能會調整價格, 請各位媽媽周知海涵。
圖片是不知為何把奶嘴擺在臉上睡覺,大約八個月大的小溫小姐,媽媽覺得她這張照片姿勢莫名優雅氣質啊!(尢其是那蓮花指)
Google了一下,這奶嘴簡直是東西方明星聯名推薦款式啊!圖在留言處。妳家也有飛利浦香草奶嘴寶寶嗎?歡迎曬圖😎
馬來西亞團購以後都會使用填單方式方便對帳,有任何問題歡迎問我哦!
#Angrylababy
#跟著溫太買好貨
附記:
女兒本來就只有睡覺前會吃,在二歲前幾天她把奶嘴搞丟了,一起翻遍全家都沒有,順勢告訴她找不到沒有了。她也沒什麼特別哭鬧,竟然就這樣接受了!只是那幾天哄睡和半夜哭鬧時變得比較辛苦一點。
過了三四天,她竟然在玩具箱挖到奶嘴,舉著過來給我看,立馬告訴她髒死了不能要了丟進垃圾桶。虛驚一場,差點功虧一簣!
我有後悔給她吃奶嘴嗎?答案是完全沒有。有些孩子就是需要多一點安全感,如果是口腔欲強烈的寶寶,給好品質的奶嘴,孩子情緒容易穩定,媽媽也不用太累,何樂不為呢?
::::::::::::::::::::::::
🎁溫太社團團員專享小禮物🎁
這次台灣和馬來西亞讀者都能參加哦!各有兩顆送出!詳情請加入社團👇🏻
✨Angrylababy’s shop✨
https://www.facebook.com/groups/angrylababyshop/
🙋🏻♀️溫太溫太,我常看不到新貼文?
💡從追蹤中改成搶先看就比較容易看到喔!
🙋🏻♀️溫太溫太,發新文可以通知我嗎?
💡追蹤中打開"接收通知",再到編輯通知設定中把"貼文"打勾即可收到新文通知!
latex 怎麼 打 在 常用的LaTeX 符号公式 的推薦與評價
常用的LaTeX 符号公式 · 希腊字符 · 空格 · 删除线 · 乘号 · 除号divide · 下标上标 · 根号 · 不等于not equal to. ... <看更多>
latex 怎麼 打 在 LaTeX 快速入門(3):常見LaTeX 符號表 - YouTube 的推薦與評價
Comments · 在GoogleDocs 用TeX 語法輸入數學式 · 【2023兔年】手把手帶你打造書桌風水|幫助學業考試大進步|施三昧老師 · AMC08 2022 填充28 捐款分配的 ... ... <看更多>
latex 怎麼 打 在 [問題] 數學符號的粗體怎麼打- 精華區LaTeX - 批踢踢實業坊 的推薦與評價
請問各位LATEX高手,
我在使用LATEX的時候,
要將這個數學符號 \nu 變粗體的時候,
要怎麼打阿...
我試過{\bf \nu} 與\mathbf{\nu} 都無效,
請教一下各位有遇過這樣的問題ㄇ?
還有要怎麼解決ㄋ?
感激不盡....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.7.140
> -------------------------------------------------------------------------- <
發信人: [email protected] (蒙古大夫), 看板: LaTeX
標 題: Re: [問題] 數學符號的粗體怎麼打
發信站: SayYA 資訊站 (Wed Nov 1 21:21:48 2006)
轉信站: ptt!ctu-reader!news.nctu!SayYa
※ 引述《[email protected] (環遊世界)》之銘言:
> 請問各位LATEX高手,
> 我在使用LATEX的時候,
> 要將這個數學符號 \nu 變粗體的時候,
> 要怎麼打阿...
> 我試過{\bf \nu} 與\mathbf{\nu} 都無效,
> 請教一下各位有遇過這樣的問題ㄇ?
> 還有要怎麼解決ㄋ?
> 感激不盡....
https://blog.bs2.to/post/EdwardLee/4203
--
故萬物一也,是其所美者為神奇,其所惡者為臭腐;
臭腐復化為神奇,神奇復化為臭腐。(莊子.知北遊)
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: edt1023.sayya.org
> -------------------------------------------------------------------------- <
發信人: [email protected] (), 看板: LaTeX
標 題: Re: [問題] 數學符號的粗體怎麼打
發信站: 無名小站 (Wed Nov 1 21:53:01 2006)
轉信站: ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!wretch
※ 引述《[email protected] (環遊世界)》之銘言:
> 請問各位LATEX高手,
> 我在使用LATEX的時候,
> 要將這個數學符號 \nu 變粗體的時候,
> 要怎麼打阿...
> 我試過{\bf \nu} 與\mathbf{\nu} 都無效,
> 請教一下各位有遇過這樣的問題ㄇ?
> 還有要怎麼解決ㄋ?
> 感激不盡....
試試看 $\bm{\nu}$
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在 140.128.104.147海
> -------------------------------------------------------------------------- <
作者: arqua (環遊世界) 看板: LaTeX
標題: Re: [問題] 數學符號的粗體怎麼打
時間: Fri Nov 3 11:09:32 2006
※ 引述《[email protected] ()》之銘言:
: ※ 引述《[email protected] (環遊世界)》之銘言:
: > 請問各位LATEX高手,
: > 我在使用LATEX的時候,
: > 要將這個數學符號 \nu 變粗體的時候,
: > 要怎麼打阿...
: > 我試過{\bf \nu} 與\mathbf{\nu} 都無效,
: > 請教一下各位有遇過這樣的問題ㄇ?
: > 還有要怎麼解決ㄋ?
: > 感激不盡....
: 試試看 $\bm{\nu}$
解決了, 感謝兩位, 不過要使用的是\boldsymbol這個方法..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.6.208
> -------------------------------------------------------------------------- <
作者: goldstein (狗的豕蛋) 看板: LaTeX
標題: Re: [問題] 數學符號的粗體怎麼打
時間: Mon Apr 16 22:41:00 2007
※ 引述《arqua (環遊世界)》之銘言:
: ※ 引述《[email protected] ()》之銘言:
: : 試試看 $\bm{\nu}$
: 解決了, 感謝兩位, 不過要使用的是\boldsymbol這個方法..
(1)
我用 \mathbf{\theta} 但是 \theta 完全沒變粗
而用 \bm{\theta} 那個 \theta 整個不見
用了 \boldmath{\theta} 更是出現亂碼?
怎麼會這樣呢? 謝謝大家解惑
(2)
想在箭頭下方寫字,用了 \stackref{\rightarrow}{G}
但是箭頭沒有在該行數學式的中間,即箭頭太高,G也跑太上來了
請問一下有啥解決方法呢? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.20.183
> -------------------------------------------------------------------------- <
作者: guteres () 看板: LaTeX
標題: Re: [問題] 數學符號的粗體怎麼打
時間: Tue Apr 17 03:25:45 2007
※ 引述《goldstein (狗的豕蛋)》之銘言:
: ※ 引述《arqua (環遊世界)》之銘言:
: : 解決了, 感謝兩位, 不過要使用的是\boldsymbol這個方法..
: (1)
: 我用 \mathbf{\theta} 但是 \theta 完全沒變粗
: 而用 \bm{\theta} 那個 \theta 整個不見
: 用了 \boldmath{\theta} 更是出現亂碼?
: 怎麼會這樣呢? 謝謝大家解惑
: (2)
: 想在箭頭下方寫字,用了 \stackref{\rightarrow}{G}
: 但是箭頭沒有在該行數學式的中間,即箭頭太高,G也跑太上來了
: 請問一下有啥解決方法呢? 謝謝
1. \mathbf 是沒問題的,不過不適用將greek變粗體
\bm 是用在將文字變粗體
\boldmath 只能用在文字模式下所以你要改成\boldmath{$\theta$}
如果要在數學環境下就在外面用\mbox包起來放到數學環
環境下
2. 首先你po文指令打錯了應該是\stackrel{}{}
再來,請用amsmath這個package提供的\xrightarrow或\xleftarrow指令來做
EX:
\xrightarrow[G]{}====>畫一個右箭頭,G在箭頭下面
↑ ↑
│ └── 要寫在箭頭上方的字或符號
└──── 要寫在箭頭下方的之或算號
PS:不要寫字的話請保持空白,即[]和{}還是要打,還有要注意的是參數的括號
一個是“[]”,一個是“{}”
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.13.62.55
> -------------------------------------------------------------------------- <
作者: arqua (環遊世界) 看板: LaTeX
標題: Re: [問題] 數學符號的粗體怎麼打
時間: Wed Apr 18 23:31:39 2007
※ 引述《guteres ()》之銘言:
首先你要引用 amsmath package
然後打\boldsymbol{\theta}
這樣應該就可以了
: ※ 引述《goldstein (狗的豕蛋)》之銘言:
: : (1)
: : 我用 \mathbf{\theta} 但是 \theta 完全沒變粗
: : 而用 \bm{\theta} 那個 \theta 整個不見
: : 用了 \boldmath{\theta} 更是出現亂碼?
: : 怎麼會這樣呢? 謝謝大家解惑
: : (2)
: : 想在箭頭下方寫字,用了 \stackref{\rightarrow}{G}
: : 但是箭頭沒有在該行數學式的中間,即箭頭太高,G也跑太上來了
: : 請問一下有啥解決方法呢? 謝謝
: 1. \mathbf 是沒問題的,不過不適用將greek變粗體
: \bm 是用在將文字變粗體
: \boldmath 只能用在文字模式下所以你要改成\boldmath{$\theta$}
: 如果要在數學環境下就在外面用\mbox包起來放到數學環
: 環境下
: 2. 首先你po文指令打錯了應該是\stackrel{}{}
: 再來,請用amsmath這個package提供的\xrightarrow或\xleftarrow指令來做
: EX:
: \xrightarrow[G]{}====>畫一個右箭頭,G在箭頭下面
: ↑ ↑
: │ └── 要寫在箭頭上方的字或符號
: └──── 要寫在箭頭下方的之或算號
: PS:不要寫字的話請保持空白,即[]和{}還是要打,還有要注意的是參數的括號
: 一個是“[]”,一個是“{}”
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.20.236
... <看更多>