matlab solve函式使用解析,適合初學者

2021-08-18 18:03:19 字數 1161 閱讀 6899

其實怎麼說呢……這個函式你要是寫不對函式其實是非常難用的。很多人幻想著用它來求解析解……只要你的函式複雜點,很多可能就gg了。

1.solve輸入形式,一般用兩種,要不你加'',要麼你乙個都不加。

例如:

syms x y  %建立符號變數x,y

q='x+y=3'; %構建x和y的公式

w = solve(q,'x') %解函式q,關於x的解析解

這種寫的話,y的值就沒辦法傳入了,不過可以在後面加上

y=3;  %給變數y賦值

subs(w); %求解析解w在新的變數更新後的解

不加''的寫法

syms x y

z=3; %這裡可以直接引入變數的值,而用引號建立的函式是無法直接引入的

q1=x+y+z==5;

q2=x+2*y==3;

solve([q1,q2],[x,y]); %這種情況下,是求滿足等式組的變數的解析解(或直接為數值解)。

2.在solve中你要是想求解析解,最好不要用cosd,sind之類的,親試,很難使用的,甚至是不能使用。

syms x y  %建立符號變數x,y

q='sin(x)+cos(y)+sin(y)=2'; %構建x和y的公式

w = solve(q,'x') %解函式q,關於x的解析解

這個方程比較好解,但是如果遇到多個sin,cos的疊加和巢狀,求解會非常困難

這時求帶有sin,cos的時候,也可以化成

aa,sqrt(1-aa^2);這樣需要在最前面加上,assume(aa>-1&aa<1);這個就相當於規定了aa在(-1,1)範圍內。

syms bb aa  %建立符號變數,用bb代替sinx,用aa代替cos(y),用sqrt(1-aa^2)代替sin(y)

assume(aa>-1&aa<1);

assume(bb>-1&bb<1);

q='bb+aa+sqrt(1-aa^2)=2'; %構建x和y的公式

w = solve(q,'bb') %解函式q,關於x的解析解

3.求解析解的時候一定要檢查清楚到底有沒有解,這個很關鍵。要不你自己寫錯了公式還怪matlab解不出來就尷尬了。

函式 使用函式指標操作函式

設計乙個名為calculate 的函式,他接受兩個double 值和乙個指向函式的指標,而被指向的函式接受兩個double引數,並返回乙個double值 calculate 函式的型別也是double,並返回被指向的函式值用calculate 的兩個double引數計算得到的值。例如,假設add 函...

eval函式 php PHP eval函式使用介紹

eval echo hello world 上邊 等同於下邊的 echo hello world 在瀏覽器中都輸出 hello world 運用eval 要注意幾點 1.eval函式的引數的字串末尾一定要有分號,在最後還要另加乙個分號 這個分號是php限制 2.注意單引號,雙引號和反斜槓的運用。如果...

函式 函式使用效能

以便 defer 能在合適時機執行 錯誤的例子 func example 這地方有個問題,example 函式是乙個加鎖操作。m.unlock 只有在 example 函式結束的時候才執行,那麼每次迴圈實際上是執行m.lock 語句,這個時候解鎖操作會被延遲到函式結束。很顯然這個邏輯並不是我們想要的...