簡單的Matlab先符號運算再賦值問題

2021-03-30 15:22:06 字數 2786 閱讀 9208

1樓:真

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

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

2樓:我行我素

你程式中用到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 符號運算數值代替問題,符號識別並賦值。

3樓:匿名使用者

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

subs(f,,)

matlab符號運算與賦值

4樓:匿名使用者

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

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

matlab符號賦值運算問題

5樓:匿名使用者

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

f =x^2 + x

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

matlab符號表示式賦值問題!!!

6樓:匿名使用者

我這裡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 符號 運算 賦值 區別

7樓:匿名使用者

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

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

8樓:

前面一個

(即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畫圖怎麼將符號運算怎麼轉化為數值運算給變數賦值並畫出曲線圖形?

9樓:匿名使用者

將符號運算怎麼轉化為數值運算,可以用eval()函式。

>> syms t x

>> y=int(sin(t)/t,0,x);

>> x=0:pi/100:2*pi;

>> plot(x,eval(y))

執行結果

4052的運算順序先算什麼法再算什麼法

40 5 2的運算復 順序先算 除 法制再算 乘 法 40 5x2 8x2 16請採納正確答案,你們只提問,不採納正確答案,回答都沒有勁 謝謝管理員推薦採納 朋友,請 採納答案 您的採納是我答題的動力,如果沒有明白,請追問。謝謝。小紅在算18 2時弄錯了運算順序,先算了減法再算除法,結果得數是5。正...

matlab矩陣快速運算是怎麼實現的

任何一個矩陣進行上述操作後得到的都是 0,0,0 你直接生成n個0就行了,沒必要這樣折騰。怎麼用matlab實現兩個矩陣之間的運算 a 1 2 3 4 5 6 7 7 8 b 1 2 2 2 3 4 a prod a,2 b prod b,2 ma,n size a mb,n size b r ze...

關於導數的簡單計算,導數的簡單運算

求導的方法 1 求函式y f x 在x0處導數的步驟 求函式的增量 y f x0 x f x0 求平均變化率 取極限,得導數。2 幾種常見函式的導數公式 c 0 c為常數 x n nx n 1 n q sinx cosx cosx sinx e x e x a x a xina ln為自然對數 lo...