matlab solve命令中解的順序問題

時間 2021-10-30 05:53:29

1樓:匿名使用者

在matlab裡面solve命令主要是用來求解代數方程(即多項式)的解,但是也不是說其它方程一個也不能解,不過求解非代數方程的能力相當有限,通常只能給出很特殊的實數解。(該問題給出的方程就是典型的超越方程,非代數方程)

從計算機的程式設計實現角度講,如今的任何演算法都無法準確的給出任意非代數方程的所有解,但是我們有很多成熟的演算法來實現求解在某點附近的解。matlab也不例外,它也只能給出任意非代數方程在某點附近的解,函式有兩個:fzero和fsolve,具體用法請用help或doc命令查詢吧。

如果還是不行,你還可以將問題轉化為非線性最優化問題,求解非線性最優化問題的最優解,可以用的命令有:fminbnd, fminsearch, fmincon等等。

x1=1;x2=2;w=3;f=4; %假設它們的值是這些

g=10;

y1=f*g;

y2=-f*g;

k=solve('-y2=(-8)*x2*w^2*(sin(k)+x1/(16*x2))^2+4*x2*w^2+((x1*w)^2)/(32*x2)','k')

k=subs(k)

執行結果:

k =asin(1/16/x2*(-x1*w+(x1^2*w^2+32*y2*x2+128*x2^2*w^2)^(1/2))/w)

asin(1/16/x2*(-x1*w-(x1^2*w^2+32*y2*x2+128*x2^2*w^2)^(1/2))/w)

k =0.4569

-0.5279

2樓:叢葉

直接用s=solve(eq1,eq2,eq3,.......eq12)求解,只會得出方程解的‘結構陣列’,即s(這種型別很像c語言裡面的結構體變數)。例如:

syms x y z

s=solve('y^2-x^2-z^2','y+z-1','x^2-2*x-3','x','y','z')

s.x %求解x

s.ys.z

顯然如果只需要知道某一個變數的值,而不是所有變數的值,用這個就比較方便

如果要直接顯示所有求解結果,[x1,x2,...xn]=solve('eqn1','eqn2',...,'eqnn','x1','x2',...,'xn'),前後引數一一對應

3樓:匿名使用者

syms x y; s = solve('x + y = 2','x-y = 4'); s = [s.x s.y]

syms x y; s = solve('y + x = 2','y-x = 4'); s = [s.x s.y]

4樓:日向淳正

【x1,x2,x3,....x12】=solve(eq1,eq2,eq3,.......eq12,x1,x2,x3,x4......xx12)試試

matlab中使用solve命令出現sym問題

5樓:

function y=func_nonlinear(x)

a=[0.2252 0.2453 -0.1968 -0.1834];

b=[0.1665 -0.1506 -0.1757 0.0798];

xw1=0;xw2=0;xw3=1;xw4=1;

yw1=0.6;yw2=0;yw3=0;yw4=0.6;

%s=solve('xw1*r11+yw1*r12+a(1)*xw1*r31+a(1)*yw1*r32+t1+a(1)*t3=0',...

%'xw1*r21+yw1*r22+b(1)*xw1*r31+b(1)*yw1*r32+t2+b(1)*t3=0',...

%'xw2*r11+yw2*r12+a(2)*xw2*r31+a(2)*yw2*r32+t1+a(2)*t3=0',...

%'xw2*r21+yw2*r22+b(2)*xw2*r31+b(2)*yw2*r32+t2+b(2)*t3=0',...

%'xw3*r11+yw3*r12+a(3)*xw3*r31+a(3)*yw3*r32+t1+a(3)*t3=0',...

%'xw3*r21+yw3*r22+b(3)*xw3*r31+b(3)*yw3*r32+t2+b(3)*t3=0',...

%'xw4*r11+yw4*r12+a(4)*xw4*r31+a(4)*yw4*r32+t1+a(4)*t3=0',...

%'xw4*r21+yw4*r22+b(4)*xw4*r31+b(4)*yw4*r32+t2+b(4)*t3=0',...

%'r11^2+r21^2+r31^2=1',...

%'r21^2+r22^2+r32^2=1',...

%'r11*r12+r21*r22+r31*r32=0');

%r11 r12 r21 r22 r31 r32 t1 t2 t3

%分別為x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9)

y(1)=xw1*x(1)+yw1*x(2)+a(1)*xw1*x(5)+a(1)*yw1*x(6)+x(7)+a(1)*x(9);

y(2)=xw1*x(3)+yw1*x(4)+b(1)*xw1*x(5)+b(1)*yw1*x(6)+x(8)+b(1)*x(9);

y(3)=xw2*x(1)+yw2*x(2)+a(2)*xw2*x(5)+a(2)*yw2*x(6)+x(7)+a(2)*x(9);

y(4)=xw2*x(3)+yw2*x(4)+b(2)*xw2*x(5)+b(2)*yw2*x(6)+x(8)+b(2)*x(9);

y(5)=xw3*x(1)+yw3*x(2)+a(3)*xw3*x(5)+a(3)*yw3*x(6)+x(7)+a(3)*x(9);

y(6)=xw3*x(3)+yw3*x(4)+b(3)*xw3*x(5)+b(3)*yw3*x(6)+x(8)+b(3)*x(9);

y(7)=xw4*x(1)+yw4*x(2)+a(4)*xw4*x(5)+a(4)*yw4*x(6)+x(7)+a(4)*x(9);

y(8)=xw4*x(3)+yw4*x(4)+b(4)*xw4*x(5)+b(4)*yw4*x(6)+x(8)+b(4)*x(9);

y(9)=x(1)^2+x(3)^2+x(5)^2-1;

y(10)=x(3)^2+x(4)^2+x(6)^2-1;

y(11)=x(1)*x(2)+x(3)*x(4)+x(5)*x(6);

將該函式儲存成m檔案,檔名為func_nonlinear.m

在命令視窗中輸入:

x0=[0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5];

fsolve(@func_nonlinear,x0)

顯示結果為

ans =

columns 1 through 8

0.8617 -0.0013 0.

1270 -0.9599 0.4908 0.

2509 -0.4245 0.2616

column 9

1.7325

這就是9個變數的迭代數值解。

我的matlab版本是7.1的,不知道是否適合其他版本,呵呵

matlab中solve函式的問題

6樓:4終

1、首先開啟matlab,直接在命令列輸入solve函式,裡面加上方程式,如下圖所示,這裡是一個二元一次方程。

2、接著直接回車就可以得到結果了,如下圖所示。

3、然後solve函式中還可以寫兩個方程式,如下圖所示。

4、回車後會得到兩個未知數的解,如下圖所示。

5、還可以先宣告變數,然後編寫方程式,並在solve中填入變數和方程式。

6、最後直接用點的方式得到答案即可,如下圖所示。

7樓:寇開汲祺

這是由於matlab裡面有個關於預設自變數規定問題

一般情況下預設自變數為表示式中距離x最近的字母

你可以用這種方法來求解

[x0]=solve('2600*(z0+15)=(z0-24985)*x1')

[z0]=solve('2600*(z0+15)=(z0-24985)*x1')

由於上兩行行中只有x1與z0兩個變數,而且x1與x較近,所以是求解x1

為了求解z0,可以用

[z0]=solve('2600*(z0+15)=(z0-24985)*x1','z0')

這樣的話就沒問題了

建議你指定代求變數

相關函式

findsym

查詢自變數,比較有用

8樓:匿名使用者

實際上 solve 函式預設的都把變數當作sym來運算計算出來的結果都是sym物件。

為什麼呢? 追去更高的準確度。

譬如solve('x=32/3')計算出來的是32/3 而不是小數sym物件計算出來的是一個表示式, 而不是數值。

如果您想要得到數值結果的話,再用一個函式eval即可[x1,y1]=solve('(x-nodee(1,1))^2+(y-nodee(2,1))^2=distance(1)^2','(x-nodee(1,2))^2+(y-nodee(2,2))^2=distance(2)^2','x,y');

x1=eval([x1]);

y1=eval([y1]);

9樓:匿名使用者

用solve函式解方程所得到的解都是符號解。

那執行結果前加上一個double如何?

10樓:用新首熹

function

[x0,y0]=sss(a,b,c)

ifnargin

<1a=0.26;

b=0.02;

c=0.15;

endsyms

x;syms

y;temp1=(x-a)^2+(y-b)^2-c^2;

temp2=1+y^1.5-x;

[x0,y0]=solve(temp1,temp2);

x0=eval(x0);

y0=eval(y0);

11樓:簡葦唐雅愛

這樣用肯定是不行的

可以這樣用

symsab

t=a+b

[ab]=solve(t-4,'a-b=0')注意t-4沒有引號

cad命令中返回上命令快捷鍵,cad命令中返回上一個命令快捷鍵

杭德肥倩 lp,layerp 沒有快捷鍵可以自己編輯一個。開啟acad 記事本,複製上面的格式,編輯一個快捷鍵命令,儲存好,重新開啟cad就可以使用這個快捷鍵了。 亥蘭英閉己 ctrl z 常用ctrl快捷鍵 ctrl b 柵格捕捉模式控制 f9 ctrl c 將選擇的物件複製到剪下板上 ctrl ...

dos命令中「cd」命令怎麼用的

要當技術宅 需要準備的工具 電腦,windows 作業系統。1 首先,當我們開啟命令提示符視窗以後,如果想檢視 cd 命令的用法,可以鍵入以下命令 cd 2 回車之後,我們就可以看到 cd 命令的詳細用法了。下面,我們就來分別講述之。3 如果要進入的路徑在同乙個磁碟分割槽,則可以用以下語法 cd 路...

vfp中怎麼使用find,seek命令

rejoice臨江仙 一.find命令 格式 find 字串 說明 1 該命令用於已建立索引且索引已開啟的情況,執行該命令將使用索引檔案查詢與指定字串相匹配的第一條記錄,並把指標指向該記錄。2 find僅是記錄定位,找到後把記錄指標指向該記錄,並不顯示該記錄的內容 要顯示該記錄的內容,可使用disp...