matlab符號運算賦值區別,matlab符號賦值運算問題

2021-03-23 10:07:38 字數 4120 閱讀 6603

1樓:匿名使用者

符號運算主要是為了簡便表示式以提供給程式設計師更好的邏輯思維: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

顯然,假如你遇到程式設計問題時,你需要的不是下面的數值解,而是上面的表示式解析解

2樓:

前面一個

(即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符號賦值運算問題

3樓:匿名使用者

可以使用subs來賦值,比如:>> syms x>> f = x^2 + x

f =x^2 + x

>> subs(f, x, 2)ans = 6>>

matlab中符號運算和數值運算的區別是什麼?

4樓: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符號運算與賦值

5樓:匿名使用者

你這其實是三個問題,請把上述問題所涉及到的測試**貼出來(如果受字數限制,可打包傳到網盤)。不然為了回答你這個問題,還需要做上好半天無價值的文字錄入工作。

當然,我也可以不做測試,只把思路大致說明一下,但你未必能看明白。

matlab 符號運算數值代替問題,符號識別並賦值。

6樓:匿名使用者

x1,x2已經是符號變數了吧,那麼可以直接用subs函式代入麼?

subs(f,,)

一個簡單的matlab先符號運算再賦值問題

7樓:真

符號計算的話一般pi會被保留,所以fc中有pis中沒有是因為s不是符號變數,是一般的數值型變數nt中沒有是因為該表示式先計算括號內的pi*rw^2,這個計算是也是按數值型別計算的。如果改為nt=0.85*(r2-r1)*lm/pi/rw^2,pi就會被保留了

subs賦值錯誤是因為r2的第一個元素50e-3代入後分母為0所以報錯

8樓:我行我素

你程式中用到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符號表示式賦值問題!!!

9樓:匿名使用者

我這裡matlab試的bai時候,a(1:3,1:3)=a(1:3,1:3)+b;也不能實現du

。zhi

原因是daoa是double型別

專的,而b是sym型別的。

a沒能夠實現強制轉換。

可以屬這樣:

a1= a(1:3,1:3);

a1=b;

a1=a1+b;

大家好!matlab中符號運算和數值運算的區別是什麼?

10樓:戢安艾融雪

符號計算

存放的是

精確資料

,耗儲存空間

,執行速度

慢,但結果精度高;

數值計算則是以一定精度來計算的,計算結果有誤差,但是執行速度快。

左移賦值有符號右移賦值無符號右移賦值分別什麼意思?請舉

有符號數和無符號數,主要是將資料轉成2進位制後,第一位的意義,有符號數第一位為符號位,1表示負數,0表示整數。無符號數第一位都是0 左移位賦值與右移位賦值有何計算規律?左移一位等於乘2,右移一位等於除2。左移2位等於乘2的2次方,右移一位等於除2的2次方。左移n位等於乘2的n次方,右移一位等於除2的...

MATLAB符號運算大家好matlab中符號運算和數值運算的區別是什麼

把解出來的結果賦值給t,然後直專接屬subs n dsolve dn r n 1 n nm n t0 n0 t t solve diff n,2 t log n0 nm n0 r t0 r subs n ans n0 nm exp r t0 n0 exp r t0 exp log n0 nm n0 ...

跪求matlab求導後賦值,matlab後賦值解方程,跪求大神幫忙

寫函式再抄調襲用 function out f n syms x y exp x x.3 dy diff y out subs dy,x,n 要是隻算i 1 50,用下面的就可以 syms x y exp x x.3 dy diff y for i 1 50 f i subs dy,x,i end ...