首頁>Club>
6
回覆列表
  • 1 # 林夕禾曰1

    sym函式用於建立符號數字、符號變數、符號物件。符號物件的型別是sym,可以透過class(S)來驗證,這裡S是一個符號物件

  • 2 # 使用者9364829108098

    sym

    sym函式用於建立符號數字、符號變數、符號物件。符號物件的型別是sym,可以透過class(S)來驗證,這裡S是一個符號物件。

    基本資訊

    外文名

    sym

    類別

    建立符號數字、符號變數、符號物件

    相關語言

    C語言

    相關

    x = sym('x')

    函式簡介

    函式功能:在MATLAB中,該符號變數的優點是,使用符號變數運算得到的只是一個解析解,例如,在符號變數運算過程π就用π表示,而不是具體的近似數值3.14或3.14159。使用符號變數進行運算能最大限度減少運算過程中因舍入造成的誤差。符號變數也便於進行運算過程的演示。

    語法格式:

    S = sym(A)將非符號物件(如,數字,表示式,變數等)A轉換為符號物件,並存儲在符號變數S中。

    x = sym('x')

    建立符號變數x,其名字是'x'。示例:alpha = sym('alpha')

    x = sym('x', 'real')

    這裡假設x是實數,因此有x的共軛conj(x)等於x。示例:r = sym('Rho','real')

    k = sym('k', 'positive')

    這裡建立一個正的(實數)符號變數。

    x = sym('x', 'clear')

    建立一個沒有額外屬性的純形式上的符號變數x(例如,建立符號變數x,但是並沒指定它是正的或它是一個實數)。為了相容舊的MATLAB版本,x = sym('x','unreal')的功能和x = sym('x', 'clear')一樣。

    S = sym(A, flag)

    把一個數值標量或矩陣轉換為符號型的物件。這裡flag引數的值可以是:'r', 'd', 'e', or 'f',它指定了對浮點數進行轉換時的規則:

    'f':表示“floating-point”。這樣,所有的數值都用N*2^e或-N*2^e這種形式表示。N和e都為整數,且N不小於0。例如,sym(1/10, 'f')被轉換為3602879701896397/36028797018963968。

    'r':表示“rational”(有理數形式)。這裡,所有的浮點數都被表示成形如p/q(分數形式)、p*pi/q、2^q、10^q、sqrt(p)等形式(p、q都是符號型的有理數)。這種表示方法減少了表示式中因舍入造成的誤差。但有時候這種方法並不能準確表示一個值。如果找不到最逼近的有理數來表示一個浮點數,這個數就會被表示成p*2^q(其中p、q都是較大的整數)這種形式,以期來準確的表示它的值。例如,sym(4/3,'r')將產生符號量'4/3',但sym(1+sqrt(5),'r')將被表示成7286977268806824*2^(-51)。

    'e':表示“estimate error”。這種形式會在'r'的基礎上新增一個由包含eps的符號表達式表示的誤差值。這個誤差值表示一個有理數的理論值和用浮點數形式表示的實際值之間的誤差。例如,sym(3*pi/4,'e')將被表示成3*pi/4*(1+3143276*eps/65)。

    'd':表示“decimal”(十進位制)。我們知道,在實際生活中我們習慣用十進位制,但計算機中則用二進位制,一個簡單的十進位制浮點數3.14用二進位制表示便不能準確的表示。因此,更好的減少誤差的方法便是在計算機中引入十進位制來表示一個數。這種情況下,數字都取自呼叫vpa函式後產生的數字集合。雖然用16位有時候並不能準確表示一個浮點數,但大多數情況下,我們也許並不希望用超過16位數字來表示一個浮點數。例如,透過呼叫digits(10),我們得到的浮點數都由10位數字構成,sym(4/3,'d')將產生1.333333333這個符號數字。雖然呼叫digits(20)後我們可以使用20位數字來表示一個浮點數, 這樣sym(4/3,'d')就是 1.3333333333333332593,但是我們看到只有前16位數值是準確的,後面的幾位數值已經產生了誤差,因此大多數情況下用超過16位的數字來表示一個浮點數是不必要的。

    相關函式:syms、eps、vpa、digits、findsym、symvar

    程式示例

    >> PI = sym(pi);

    >> R = sym(5);

    >> areas = PI * R ^ 2

    areas = 25*pi

    >> class(areas)

    ans =sym

    >> sym(1/3)

    ans =1/3

    >> sym(sqrt(5))

    ans =5^(1/2)

    >> sym(sqrt(5) + 1)

    ans =910872158600853/281474976710656

    >> sym(1)/sym(3) + sym(1)

    ans =4/3

    >> y = sin(sym('x'))

    y =sin(x)

    >> diff(y)

    ans = cos(x)

    >> diff(y,2)

    ans =-sin(x)

    >> z = sym('x') ^ 2 + sin(sym('y'))

    z =x^2 + sin(y)

    >> diff(z,'x')

    ans =2*x

    >> diff(z,'y')

    ans =cos(y)

  • 中秋節和大豐收的關聯?
  • 30歲以後必須明白的十件事?