Matlab:符號變量、符號函數、泰勒級數

2021-03-02 無距書鄉

點擊上方藍字關注 無距書鄉 獲取即時更新

今天介紹一個新內容——符號變量及其函數,再展示一下符號函數的應用,多項式操作和Taylor級數展開。

符號變量

在介紹matlab一文中,我們寫道在matlab中使用變量時不需要預先定義,但是在特殊情況下我們是需要先定義變量然後才能使用的,這種情況就是符號變量。在matlab中用 syms 聲明一個符號變量。聲明了符號變量後就可以構造一個函數了,然後可以在基礎上應用,例如簡單的函數求值。示例如下:

在matlab 中使用subs命令獲取函數在某點的值,subs 是substitute 的簡寫,意為將x的值代入函數中。

符號函數

有了符號變量之後,我們就可以對符號函數表達式做各種操作了。例如因式分解和因式展開等。在matlab中使用factor做因式分解,使用expand做因式展開。示例如下:

對於多項式做完因式分解後,可以很容易看出來它的根。如果你還記得,上述表達式就是上一篇中我們使用過的求根的方程的等號左邊項。

對於一個連乘的表達式,matlab也是可以做多項式展開的,還是以上面的表達式為例,示例如下:

可以看到fx 做因式分解後再做展開後得到的表達式與fx是相同的。

再看看三角函數的情形。

在符號函數的情形下,也可以做多項式簡化和合併同類項。在matlab中使用simplify 來做多項式簡化;使用collect 來做同類項合併。簡述述如下:

多項式簡化:

多項式合併:

符號函數方程求解

首先我們通過符號變量來構建一個一元二次方程的符號函數,再用上一篇我們說到的solve命令來求解這個方程,可以預見答案應該是一元二次方程的求根公式。示例如下:

 對於一元三次方程也是可以的,但是解的表達形式比較複雜,這裡貼一下。

解的完整形式如下:

                                                                                                                                                                                                                                                                                                                        (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) - b/(3*a) - (- b^2/(9*a^2) + c/(3*a))/(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) (- b^2/(9*a^2) + c/(3*a))/(2*(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)) + (3^(1/2)*((- b^2/(9*a^2) + c/(3*a))/(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) + (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3))*i)/2 - b/(3*a) - (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)/2 (- b^2/(9*a^2) + c/(3*a))/(2*(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)) - (3^(1/2)*((- b^2/(9*a^2) + c/(3*a))/(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) + (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3))*i)/2 - b/(3*a) - (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)/2

這就是一元三次方程的求根公式,仔細觀察會發現上篇中我們解一元三次方程時給出的結果就是用的這個公式。

泰勒級數

這是本篇比較重要的部分,也是讀者朋友們平時接觸到的比較多的一個知識點。這個公式的重要性想必學習過的讀者們是十分有感受的,必考知識點,畢竟沒有什麼函數是不能用Taylor級數來解決的。在後面的科學計算中也會大量使用Taylor展開做近似計算。既然Taylor級數這麼重要,那我們就來看看在matlab 中怎樣做Taylor級數展開。在matlab中用taylor()命令做Taylor級數展開。

首先,我們來查看一下Taylor級數的幫助說明。

根據說明文件,我們可看到taylor方法有3種基本調用形式:

 taylor(f),默認做五階展開,在x=0處展開,就是常用的麥克勞林級數;

taylor(f,x),默認做五階展開,在x=0處展開,x可以是一個向量,也就是多元函數的情形;

taylor(f,x,a),默認做五階展開,在x=a處展開,x可以是一個向量,a也可以是一個向量,也是多元函數的情形。

下面來看看常見函數的Taylor級數吧。

sin(x):

例如,上圖中我們對sin(x)做Taylor展開,默認展開到5階。我們可以通過關鍵字『Order』來說明展開到幾階。

cos(x):

exp(x):

ln(x):

sqrt(1+x):

最後,總結如下,今天我們學習了:

 符號變量的使用方法;

 符號函數的因式分解和展開,多項式的簡化和合併同類項;

 符號函數方程求解;

Taylor級數的方法。

這麼簡單實用的工具,不來用一下嗎!

長按識別二維碼關注我

點個讚,攜手共進

回復「ishare」加入社區

相關焦點

  • MATLAB符號計算(收藏版)
    MATLAB符號計算1 符號計算基礎1.1符號運算1.2 符號對象1.3 符號表達式中變量的確定2 符號導數及其應用3 符號積分4 級數符號求和1.2 符號對象sym函數sym函數用來建立單個符號量,例如,a=sym(『a』)建立符號變量a,此後用戶可在表達式中使用變量a進行各種運算。
  • matlab符號微積分及應用舉例
    符號函數的極限求符號函數極限的命令為limit ,其調用格式為:limit(f,x,a)即求函數f關於變量x在a點的極限。對於 limit函數,還有另一種調用格式,用來求單邊極限:limit(f,x,a,『right』)右極限;limit(f,x,a,『left』)左極限 例、求當n趨於無窮時,(1+1/n)^n的值。
  • MATLAB符號計算
    (1)sym函數    sym函數用來建立單個符號量,例如:符號變量名=sym(符號字符串)
  • matlab入門(四)-符號運算
    matlab符號運算1. 符號對象的建立:sym 和 symssyms 符號變量1 符號變量2 ...
  • MATLAB符號
    5.空格N/A空格作為分隔符,可以出現在變量與運算符之間,用於控制縮進,排版更美觀。A=B;A = B;% 上述兩式等價,但2式更美觀.空格在某些情況下,等價於逗號,具體場景包括:創建數組時分隔行元素;將函數的多個輸出參數分隔開(不能用於分隔輸入參數)。
  • matlab符號推導應用及相關技巧
    在戰略上手推公式,而在戰術上用matlab符號推導輔助和驗證可以大幅度減少出錯,並提高效率。1. 符號推導第一步,學會使用sym和syms    a.生成 單個符號變量    b.生成 單個符號變量   c.生成矩陣符號變量sym和syms的區別
  • Matlab基礎(三)
    目錄前言假如你是大學生(一)符號表達式函數求極限泰勒展開函數求導求不定積分求定積分前言上一篇實際上是一個小插曲符號表達式之前已經介紹過,利用符號表達式可以定義一個函數表達式,所有的符號表達式定義都從syms指令開始,比如你的表達式包含x,y兩個變量,那麼你要首先定義兩個符號變量:syms x y緊接著就可以寫出你的符號表達式
  • MATLAB符號計算(二)
    一、代數方程符號求解在MATLAB中,求解用符號表達式表示的代數方程可由函數solve()實現,其調用格式為:①solve(s):求解符號表達式s的代數方程式,求解變量為默認變量。②solve(s,v):求解符號表達式s代數方程,求解變量為v。③solve(s1,s2,..,sn,v1,v2,...
  • 泰勒級數的物理意義
    +an(x-a)^n ,然後從等式序列,g(a)=f(a),g'(a)=f'(a),...g'''''(a)=f'''''(a).就得到所有的 a0-an 的泰勒展示係數了。泰勒級數展開函數,能做什麼?對於特定的 x 取值,可以求它附近的函數。
  • 泰勒級數在高中導數中的應用
    (英語:Taylor series)用無限項連加式——級數來表示一個函數,這些相加的項由函數在某一點的導數求得。泰勒級數是以於1715年發表了泰勒公式的英國數學家布魯克·泰勒(Sir Brook Taylor)的名字來命名的。通過函數在自變量零點的導數求得的泰勒級數又叫做邁克勞林級數,以蘇格蘭數學家科林·麥克勞林的名字命名。泰勒級數在近似計算中有重要作用。
  • MATLAB符號計算(一)
    一、符號對象的建立(1)sym函數sym函數用於建立單個符號對象,其常用調用格式為:符號對象名=sym(A)將由A來建立符號對象。其中,A可以是一個數值常量、數值矩陣或數值表達式(不加單引號),此時符號對象為一個符號常量;A也可以是一個變量名(加單引號),這是符號對象為一個符號變量。
  • 漫談泰勒級數的物理意義
    +an(x-a)^n,然後從等式序 列,g(a)=f(a),g'(a)=f'(a),...g'''''(a)=f'''''(a)... ...就得到所有的a0-an的泰勒展示係數了。 --  泰勒級數展開函數,能做什麼?對於特定的x取值,可以求它附近的函數。
  • MATLAB中,你必須知道的!(二)
    符號運算無須事先的運算對象可以使沒有賦值的符號變量,可以獲得任意精度的解。 1·符號表達式可以代表數字、函數、算子、變量的matlab字符串。 2·建立單個符號量:符號量名 = sym(『符號表達式』)。
  • Matlab基礎(四)
    目錄前言上一篇向大家介紹了「Matlab在高等數學上冊中的主要應用,」可以說一旦掌握這些指令的用法,大部分一元函數求極限、泰勒展開、求導、求積分符號表達式首先還是要用到符號表達式,用來定義一個符號函數。
  • 漫談高數——泰勒級數的物理意義
    +an(x-a)^n,然後從等式序列, g(a)=f(a),g'(a)=f'(a),...g…"(a)=f…"(a).就得到所有的a0-an的泰勒展示係數了。泰勒級數展開函數,能做什麼?對於特定的x取值,可以求它附近的函數。
  • 漫談高數(泰勒級數的物理意義)
    +an(x-a)^n,然後從等式序列, g(a)=f(a),g'(a)=f'(a),...g…"(a)=f…"(a).就得到所有的a0-an的泰勒展示係數了。泰勒級數展開函數,能做什麼?對於特定的x取值,可以求它附近的函數。
  • 從泰勒級數說傅立葉級數
    通俗地講解,泰勒公式也稱泰勒展開式。是用一個函數在某點的信息,描述其附近取值的公式。如果函數足夠平滑,在已知函數在某一點的各階導數值的情況下,泰勒公式可以利用這些導數值來做係數,構建一個多項式近似函數,求得在這一點的鄰域中的值。
  • 看代碼寫結果,資深編程達人教你有符號變量與無符號變量值的轉換
    有符號變量與無符號變量的區別和聯繫如下所示:#include<stdio.h>char getChar(int x, int在函數體內,把參數x的值轉換為無符號整型後再與y相加,其結果與10進行比較,如果大於10,則函數返回1,否則返回2。在這裡,我們要注意:所有的操作數都自動轉換成無符號類型。因此,這裡由於a是無符號數,y值會首先自動轉換成無符號的整數,然後與a相加,最後再與10進行比較。以下是在main函數中各調用getChar()函數的分析。
  • 數學符號及讀法大全and數學運算符號及含義
    但通常對於數學符號的讀法卻一知半解,下面小編總結了數學符號及讀法大全,並解釋了運算符號含義。即 x = cot yasec xy,正割函數反函數在x處的值,即 x = sec yacsc xy,餘割函數反函數在x處的值,即 x = csc yθ角度的一個標準符號,不註明均指弧度,尤其用於表示atan x/y,當x、y、z用於表示空間中的點時i, j, k分別表示x、y、z方向上的單位向量
  • 用泰勒級數來估計函數的近似值
    在實際生活和工作中,我們經常希望用多項式來近似某點處的函數值,而泰勒級數就是幹這個的。不過在正式介紹泰勒級數之前,我們先來看看高階導數與函數的凹凸性。一階導我們表示的是函數值的變化率,那麼二階導就表示斜率的變化率。進一步,我們說,如果二階導大於0,說明斜率是在一直增加的,此時函數是個凸函數;同理,二階導小於0,斜率在一直減小,函數為凹函數。