1樓:匿名使用者
就sym('3')與sym(3)而言,二者沒有區別:
>> sym('3')==sym(3)
ans =
1但如果不是整數,結果可能不一樣:
>> sym('sqrt(2)-1')
ans =
sqrt(2)-1
>> sym(sqrt(2)-1)
ans =
7461808180621108*2^(-54)前者以字串的形式傳給符號運算核心,可以保留完整的精度;而後者經過浮點數運算之後再轉換為符號型別,存在精度損失。
2樓:匿名使用者
sym('3')與sym(3)在輸出結果上是沒有區別的。但是,如果你嘗試更多位數的數字,如sym('12345678901234567890')與sym(12345678901234567890)你就會發現輸出結果是不一樣的。前者會原樣輸出,後者則會輸出12345678901234567168,和我們的期望是不一樣的。
說明這樣的形式是不可以正確的把數字輸入到計算機的。
原因是:sym(12345678901234567890)這樣一種寫法是先把資料以雙精度形式輸入給計算機,然後在轉換為符號型,而這樣的轉換時存在偏差的。
而sym('12345678901234567890')是先把輸入的資料用字串表示出來,然後再把資料完整的輸入給計算機。
這部分知識是屬於matlab資料結構裡面的知識,matlab預設是雙精度浮點,最高表示有效數字是15位
matlab中sym 的用法
3樓:幻翼高達
matlab中sym有6種用法,「sym x;」是不正確的用法。
1、s = sym(a)
將非符號物件(如,數字,表示式,變數等)a轉換為符號物件,並儲存在符號變數s中。
2、x = sym('x')
建立符號變數x,其名字是'x'。示例:alpha = sym('alpha')。
3、x = sym('x', 'real')
這裡假設x是實數,因此有x的共軛conj(x)等於x。示例:r = sym('rho','real')。
4、k = sym('k', 'positive')
這裡建立一個正的(實數)符號變數。
5、x = sym('x', 'clear')
建立一個沒有額外屬性的純形式上的符號變數x(例如,建立符號變數x,但是並沒指定它是正的或它是一個實數)。
6、s = sym(a, flag)
把一個數值標量或矩陣轉換為符號型的物件。這裡flag引數的值可以是:'r', 'd', 'e', or 'f',它指定了對浮點數進行轉換時的規則。
擴充套件資料:
matlab常用函式:
1、zeros
(1)zeros(n):n*n 全零矩陣。
(2)zeros(m,n):m*n全零矩陣。
(3)zeros(d1,d2,d3……dn):生成 d1*d2*d3*……*dn 全零矩陣或陣列。
(4)zeros(size(a)):生成與矩陣a大小相同的全零矩陣。
2、ones
(1)ones(n):n*n 全1矩陣。
(2)ones(m,n):m*n全1矩陣。
(3)ones(d1,d2,d3……dn):生成d1*d2*d3*……*dn的全1矩陣或陣列。
(4)ones(size(a)):生成與矩陣a大小相同的全1矩陣。
3、size
(1)size(a):對於矩陣a,函式size(a)返回一行向量。
該行向量的第一個元素表示矩陣的行,第二個元素表示矩陣的列。
(2)size(a, 1):表示獲取矩陣a的行數。
(3)size(a, 2):表示獲取矩陣a的列數。
4樓:柒月黑瞳
1、在matlab中,sym用於建立符號數字、符號變數、符號物件。
2、符號物件的型別是sym,可以通過class(s)來驗證,這裡s是一個符號物件。
3、符號變數的優點是,使用符號變數運算得到的只是一個解析解,例如,在符號變數運算過程中pi就用pi表示,而不是具體的近似數值3.14或3.14159。
4、使用符號變數進行運算能最大限度減少運算過程中因舍入造成的誤差。符號變數也便於進行運算過程的演示。
5、語法格式:
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位的數字來表示一個浮點數是不必要的。
5樓:匿名使用者
>> sym('x')
ans =
x>> sym x
ans =
xsym('x')與sym x等同
6樓:沉淪街角的寂寞
sym 定義符號量的
sym 定義一個符號變數
syms 定義多個符號變數
matlab中sym的用法Matlab中sym的用法
matlab中sym有6種用法,sym x 是不正確的用法。1 s sym a 將非符號物件 如,數字,表示式,變數等 a轉換為符號物件,並儲存在符號變數s中。2 x sym x 建立符號變數x,其名字是 x 示例 alpha sym alpha 3 x sym x real 這裡假設x是實數,因此...
matlab中a b與a b的區別
a b,是a作為矩陣整體b次方,即a a a.a a.b,是a中每個元素b次方,形成的新矩陣 區別 a.b前面是bai點乘,要求兩個變數du的元素個數zhi相等,排列方式相同dao,如回都是行向量或都是列矢答量或都矩陣。a b後者是矩陣乘法,要求內維相同。用例項來說明matlab中這兩種乘法c a....
MATLAB中a2rand3是什麼意思
rand 3 建立一個3 3隨機矩陣 a 2 rand 3 把這個3 3的隨機矩陣賦值給三維矩專陣a的第二塊。最終生成的是一屬個3 3 2的矩陣 a 2 rand 3 a 1 0 0 0 0 0 0 0 0 0 a 2 0.4186 0.2026 0.01960.8462 0.6721 0.6813...