1樓:匿名使用者
你這其實是三個問題,請把上述問題所涉及到的測試**貼出來(如果受字數限制,可打包傳到網盤)。不然為了回答你這個問題,還需要做上好半天無價值的文字錄入工作。
當然,我也可以不做測試,只把思路大致說明一下,但你未必能看明白。
matlab中符號運算和數值運算的區別是什麼?
2樓:shine戚七七
兩者的根本區別是 : 數值計算的表示式、矩陣變數中不允許有未定義的自由變數 , 而符號計算可以含有未定義的符號變數。對於一般的程式設計軟體如 c, c + + 等語言實現數值計算還可以 , 但是實現符號計算並不是一件容易的事。
而 matlab 自帶有符號工具箱 symbolic math tooibox , 而且可以借助數學軟體 maple, 所以 matlab 也具有強大的符號運算功能。
一、 字串的定義
matlab 用單引號來定義字串。例如在指令視窗輸入:a= 』hello, this is a string』 ,則會輸出 a=hello, this is a string
二、 定義符號變數與符號表示式
在 matlab 指令視窗,輸入的數值變數必須提前賦值,否則會提示出錯。只有符號變數可以在沒有提前賦值的情況下合法地出現在表示式中,但是符號變數必須預先定義。
在 matlab 的資料型別中 , 字元型與符號型是兩種重要而又容易混淆的資料型別。
符號變數是利用指令 sym 和 syms 來建立 .
它們的使用格式為 :
s = sym( ′ a ′ ) 定義單個符號變數 s
syms a b c 定義多個符號變數 a, b, c
syms 命令的使用要比 sym 簡便 , 它一次可以定義多個符號變數 , 而且格式簡練。因此一般用 syms 來建立符號變數。注意各符號變數之間必須是空格隔開。
語句 syms x y z w
表示將 x,y,z 和 w 定義為符號變數。如果再輸入: p=sin(x)+cos+z+2*w, 是執行後 p 就表示表示式 sin(x)+cos(x)+z+2*w
三、 將數值表示式轉換為符號表示式
命令 sym 可將數值表示式轉成符號表示式,其語法為:
sym(『 數值表示式 』)
例如,在指令視窗輸入:
p=sym(『2+sqrt(5)』)
則得到輸出:
p=2+sqrt(5) ,此時p是乙個符號表示式,而不是乙個數值表示式。
四、 計算符號表示式的值
如果要計算前面的符號表示式p的值,則需要用 eval_r(p) 來計算p的近似值。即可輸入:
eval_r(p)
得到輸出: ans=4.2361
由於 p=sym(『2+sqrt(5)』) 實際上是乙個符號常數,所以也可以用 vpa 命令計算。
五、數值變數、符號變數、字元變數的相互轉化
數值變數、符號變數、字元變數的相互轉化在 matlab 工作空間中 , 數值、符號和字元是 3 種主要的資料型別。
matlab 可以利用命令來實現不同型別資料間的轉換。
matlab 符號 運算 賦值 區別
3樓:匿名使用者
符號運算主要是為了簡便表示式以提供給程式設計師更好的邏輯思維:u=sym('3*x^2+5*y+2*x*y+6') 這表示式如果x y取值假如是比較複雜的分數或者是無理數甚至是虛數時(有沒有虛數不大確定了),求解出的的結果是非常複雜的,如果加sym的話,則會保留分數,無理數。舉例:
>>
u=sym('3*x^2+5*y+2*x*y+6')
u =3*x^2+5*y+2*x*y+6
>>>> x=log(sym(3)),y=log(sym(5))
x =log(3)
y =log(5)
>> 3*x^2+5*y+2*x*y+6
ans =
5*log(5) + 2*log(3)*log(5) + 3*log(3)^2 + 6
>> double(ans)(這裡是將上面的符號表示式進行double雙精度浮點型運算)
ans =
21.2043
顯然,假如你遇到程式設計問題時,你需要的不是下面的數值解,而是上面的表示式解析解
4樓:
前面乙個
(即u=sym('3*x^2+5*y+2*x*y+6'))是定義了乙個符號表示式,u是乙個符號變數,後乙個(即v=3*x^2+5*y+2*x*y+6)是不能單獨成立的(直接執行會報錯),因為未定義x和y的具體的值。
u=sym('3*x^2+5*y+2*x*y+6') 等價於:
syms x y;
v=3*x^2+5*y+2*x*y+6
應該說上面2種等價的表示式都是可以的,而後一種更規範一些,所以也就更常用一些。
乙個簡單的matlab先符號運算再賦值問題
5樓:真
符號計算的話一般pi會被保留,所以fc中有pis中沒有是因為s不是符號變數,是一般的數值型變數nt中沒有是因為該表示式先計算括號內的pi*rw^2,這個計算是也是按數值型別計算的。如果改為nt=0.85*(r2-r1)*lm/pi/rw^2,pi就會被保留了
subs賦值錯誤是因為r2的第乙個元素50e-3代入後分母為0所以報錯
6樓:我行我素
你程式中用到sym,pi是sym類,一般在式子中不會變為小數,而是直接顯示為pi,須用vpa化為小數。你的程式有問題,可這樣改:
clc;clear
%%符號運算求出fc表示式
syms r2;
r1=50e-3;
i=3;
lm=25e-3;
rw=0.425e-3;
s=pi*0.425^2;
nt=0.85*(r2-r1)*lm/(pi*rw^2);
row=0.0175;
reff=(r1+r2)/2;
li=44.1*nt^2*reff^2/(6*reff+9*lm+10*(r2-r1));
r=nt*2*pi*reff*row/s;
fc=r/(2*pi*li);
%%對fc中變數r2賦值,畫圖fc-r2
%r2=50e-3:1e-3:200e-3;
r=51e-3:1e-3:200e-3;
%fcc=subs(fc,r2);
fcc=vpa(subs(fc,r2,r));
figure;
%plot(r2,fcc);
plot(r,fcc);
xlabel('outer radius r2(m)');
ylabel('-3db frequency (hz)');
matlab 符號運算數值代替問題,符號識別並賦值。
7樓:匿名使用者
x1,x2已經是符號變數了吧,那麼可以直接用subs函式代入麼?
subs(f,,)
matlab符號賦值運算問題
8樓:匿名使用者
可以使用subs來賦值,比如:>> syms x>> f = x^2 + x
f =x^2 + x
>> subs(f, x, 2)ans = 6>>
大家好matlab中符號運算和數值運算的區別是什麼
9樓:shine戚七七
兩者的根本區別是 : 數值計算的表示式、矩陣變數中不允許有未定義的自由變數 , 而符號計算可以含有未定義的符號變數。對於一般的程式設計軟體如 c, c + + 等語言實現數值計算還可以 , 但是實現符號計算並不是一件容易的事。
而 matlab 自帶有符號工具箱 symbolic math tooibox , 而且可以借助數學軟體 maple, 所以 matlab 也具有強大的符號運算功能。
一、 字串的定義
matlab 用單引號來定義字串。例如在指令視窗輸入:a= 』hello, this is a string』 ,則會輸出 a=hello, this is a string
二、 定義符號變數與符號表示式
在 matlab 指令視窗,輸入的數值變數必須提前賦值,否則會提示出錯。只有符號變數可以在沒有提前賦值的情況下合法地出現在表示式中,但是符號變數必須預先定義。
在 matlab 的資料型別中 , 字元型與符號型是兩種重要而又容易混淆的資料型別。
符號變數是利用指令 sym 和 syms 來建立 .
它們的使用格式為 :
s = sym( ′ a ′ ) 定義單個符號變數 s
syms a b c 定義多個符號變數 a, b, c
syms 命令的使用要比 sym 簡便 , 它一次可以定義多個符號變數 , 而且格式簡練。因此一般用 syms 來建立符號變數。注意各符號變數之間必須是空格隔開。
語句 syms x y z w
表示將 x,y,z 和 w 定義為符號變數。如果再輸入: p=sin(x)+cos+z+2*w, 是執行後 p 就表示表示式 sin(x)+cos(x)+z+2*w
三、 將數值表示式轉換為符號表示式
命令 sym 可將數值表示式轉成符號表示式,其語法為:
sym(『 數值表示式 』)
例如,在指令視窗輸入:
p=sym(『2+sqrt(5)』)
則得到輸出:
p=2+sqrt(5) ,此時p是乙個符號表示式,而不是乙個數值表示式。
四、 計算符號表示式的值
如果要計算前面的符號表示式p的值,則需要用 eval_r(p) 來計算p的近似值。即可輸入:
eval_r(p)
得到輸出: ans=4.2361
由於 p=sym(『2+sqrt(5)』) 實際上是乙個符號常數,所以也可以用 vpa 命令計算。
五、數值變數、符號變數、字元變數的相互轉化
數值變數、符號變數、字元變數的相互轉化在 matlab 工作空間中 , 數值、符號和字元是 3 種主要的資料型別。
matlab 可以利用命令來實現不同型別資料間的轉換。
10樓:刺忌輾
符號計算 存放的是精確資料,耗儲存空間 ,執行速度慢,但結果精度高; 數值計算則是以一定精度來計算的,計算結果有誤差,但是執行速度快。
11樓:匿名使用者
概念其實沒那麼複雜。
一般性講,數學計算包括數值計算(numerical calculation)和符號計算(symbolic calculation)。數值計算針對的是實際的數字,符號計算中包含數學符號,你也可以把符號計算理解為符號表示式及其推導,例如:
數值計算(numerical calculation):3x7+8x9-9x9 最後結果是12
符號計算(symbolic calculation):8x+3x-7x+666 最後結果是666+4x
matlab 怎麼給符號變數賦值
12樓:四捨**入
用subs(w)把符號表示式裡面的符
號量用當前工作區中的同名變數替換,也就是使用者所要的賦值了。
其實任何矩陣的元素都可以直接作為變數來使用,能否作為變數的唯一判斷標準就是它是否能夠放在賦值符號(=)的左邊。
matlab中subs()是符號計算函式,表示將符號表示式中的某些符號變數替換為指定的新的變數。
c 中的位運算符號,c 中位運算
一 位運算子c語言提供了六種位運算子 按位與 按位或 按位異或 取反 左移 右移 用法 1.按位與運算子 按位與運算子是雙目運算子,其功能是將參與運算的兩運算元各自對應的二進位制為進行於操作。只有對應的兩個二進位制位均為1 是,結果對應的二進位制位才為 1,否則為0.例如 表示式 21 18 的計算...
matlab怎樣給符號表示式中的變數賦值啊
subs s,t d p q是什麼啊?matlab 怎麼給符號變數賦值 用subs w 把符號表示式裡面的符 號量用當前工作區中的同名變數替換,也就是使用者所要的賦值了。其實任何矩陣的元素都可以直接作為變數來使用,能否作為變數的唯一判斷標準就是它是否能夠放在賦值符號 的左邊。matlab中subs ...
在式子中填上運算符號與小括號,使得數為
1 1 2 3 4 5 6 7 1 1 2 3 4 5 6 7 1 填上運算符號與小括號使得數都為1 7一6 1 6一5 1 5一4 4一3 3一2 1 2一1 1x2 3 4 5 6 7 1 在下面算式中填上適當的運算符號和括號,使等式成立 1 2 3 4 5 6 1 1 2 3 4 5 6 7 ...