⑴ matlab的solve用法
在matlab裡面solve命令主要是用來求解代數方程(即多項式)的解,但是也不是說其它方程一個也不能解,不過求解非代數方程的能力相當有限,通常只能給出很特殊的實數解。(該問題給出的方程就是典型的超越方程,非代數方程)
1、solve 這個命令用來求解符號方程、方程組等。
x=solve('eqn1','eqn2',...,'var1','var2',...)
例子:
解方程組:x^2+y-6=0;y^2+x-6=0
程序設計:[x,y]=solve('x^2+y-6','y^2+x-6','x','y')
2、subs可以把符號表達式裡面的符號變數替換為新的變數
F=subs(f,old,new)
例子:
用符號表達式計算x^2+x-1在x=2時的值
程序設計:g=sym('x^2+x-1');
G=subs(g,'x',2)
3、從計算機的編程實現角度講,如今的任何演算法都無法准確的給出任意非代數方程的所有解,但是我們有很多成熟的演算法來實現求解在某點附近的解。
4、matlab也不例外,它也只能給出任意非代數方程在某點附近的解,函數有兩個:fzero和fsolve,具體用法請用help或doc命令查詢吧。
5、如果還是不行,你還可以將問題轉化為非線性最優化問題,求解非線性最優化問題的最優解,可以用的命令有:fminbnd, fminsearch, fmincon等等。
⑵ 求助MATLAB解方程組
用MATLAB解方程組的常用方法有:
1、如是線性方程組,可以①用矩陣除法
x=AB(或 x=inv(A)*B) %A為線性方程組系數矩陣,B為常數向量,inv(A)為系數矩陣的逆矩陣;
也可以②用solve()函數命令,得到解析值或數值解
solve(表達式1,表達式2,。。。,表達式n,未知變數1,未知變數2,。。。,未知變數n);
也可以③用數值分析法(如Gauss消元法,Jacobi迭代法等),得到數值解
2、如是非線性方程組,可以①用solve()函數命令,得到解析值或數值解;也可以②用fsolve()函數命令,得到數值解;也可以③用數值分析法(如Broyden消元法,Halley迭代法等),得到數值解。
⑶ matlab 解線性方程組的函數,及怎麼解a*x=b
解方程組用:fsolve
解方程用:solve
例子:
例一方程組
f=@(x)([x(1).^2+x(2).^2-1;x(1)-2*x(2)]);
x=fsolve(f,[1 1])
結果
x =
0.8944 0.4472
例二方程
[t]=solve('21.1+11.5*exp(0.11*t)=37')
結果:
t =
2.945200671427104
⑷ 求解一個方程組,能用matlab並把命令行展示出來最好
用vpaslove()函數可以直接求得t,x,y,z值。
syms x y z t
[t x y z]=vpasolve(y*cos(z)+x==350,y*cos(t*x)==-y*sin(z),1/tan(z)==-t*y*sin(t*x),y^4-(y^2-112.5)^2==y^2*t^2*(y^2-112.5)^2)
⑸ 用matlab解字母表示的方程組怎麼輸入命令
用solve函數,如:
[x,y]=solve('x+y=a','x=1')
-------------運行結果
x =
1
y =
a - 1
⑹ 如何用matlab解方程組
matlab中解方程組還是很方便的,例如,對於代數方程組Ax=b(A為系數矩陣,非奇異)的求解,MATLAB中有兩種方法:
(1)x=inv(A)*b — 採用求逆運算解方程組;
(2)x=A\B — 採用左除運算解方程組
PS:使用左除的運算效率要比求逆矩陣的效率高很多~
例:
x1+2x2=8
2x1+3x2=13
>>A=[1,2;2,3];b=[8;13];
>>x=inv(A)*b
x =
2.00
3.00
>>x=A\B
x =
2.00
3.00;
即二元一次方程組的解x1和x2分別是2和3。
對於同學問到的用matlab解多次的方程組,有符號解法,方法是:先解出符號解,然後用vpa(F,n)求出n位有效數字的數值解.具體步驟如下:
第一步:定義變數syms x y z ;
第二步:求解[x,y,z,]=solve('eqn1','eqn2',,'eqnN','var1','var2','varN');
第三步:求出n位有效數字的數值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);。
如:解二(多)元二(高)次方程組:
x^2+3*y+1=0
y^2+4*x+1=0
解法如下:
>>syms x y;
>>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0');
>>x=vpa(x,4);
>>y=vpa(y,4);
結果是:
x =
1.635+3.029*i
1.635-3.029*i
-.283
-2.987
y =
1.834-3.301*i
1.834+3.301*i
-.3600
-3.307。
二元二次方程組,共4個實數根;
解答如下:
基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表達式s1,s2,…,sn組成的方程組,求解變數分別v1,v2,…,vn。
具體例子如下:
x^2 + x*y + y = 3
x^2 - 4*x + 3 = 0
解法:
>> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
運行結果為
x =
1 3
y =
1 -3/2
即x等於1和3;y等於1和-1.5
或
>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3= 0','x','y')
x =
1 3
y =
1 -3/2
結果一樣,二元二方程都是4個實根。
通過這三個例子可以看出,用matlab解各類方程組都是可以的,方法也有多種,只是用到解方程組的函數,注意正確書寫參數就可以了,非常方便。
2、變參數非線性方程組的求解
對於求解非線性方程組一般用fsolve命令就可以了,但是對於方程組中某一系數是變化的,該怎麼求呢?
%定義方程組如下,其中k為變數
function F = myfun(x,k)
H=0.32;
Pc0=0.23;W=0.18;
F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);
x(1)-k*sqrt(x(2))];
%求解過程
H=0.32;
Pc0=0.23;W=0.18;
x0 = [2*W; Pc0+2*H]; % 取初值
options = optimset('Display','off');
k=0:0.01:1; % 變數取值范圍[0 1]
for i=1:1:length(k)
kk=k(i);
x = fsolve(@(x) myfun(x,kk), x0, options);%求解非線性方程組
x1(i)=x(1);
x2(i)=x(2);
end
plot(k,x1,'-b',k,x2,'-r');
xlabel('k')
legend('x1','x2')
⑺ matlab求解方程組
題主給出的復雜的分式方程組,可以用vpasolve()函數得到其數值解。
求解方法如下:
syms x y
eq1=x-(107.1+0.2*(4*y+3*x)*(3.83-107.1)/(4*y+3*3.83));
eq2=y-(83.7+y*(4*y+3*x)*(1.28-83.7)/(3*x*(3*y+2*1.28)+4*y*(2*y+3*1.28)));
[x,y]=vpasolve(eq1,eq2)
運行結果
⑻ 如何用Excel解方程組
假設方程組為:
a+b+2c+3d=1
3a-b-c-2d=-4
2a+3b-c-d=-6
a+2b+3c-d=-4
可按如下的步驟來解這個方程組:
1.打開Excel。
2.由於在本方程組中未知數有4個,所以預留4個可變單元格的位置A1-A4。
3.將活動單元格移至B1處,從鍵盤鍵入:=A1+A2+2*A3+3*A4:然後回車(此時B1顯示0)。即在B1處輸入方程組中第一個方程等號左邊的表達式。
4.在B2處從鍵盤鍵入:=3*A1-A2-A3-2*A4;然後回車(此時B2顯示0)。即在B2處輸入方程組中第二個方程等號左邊的表達式。
5.在B3處從鍵盤鍵入:=2*A1+3*A2-A3-A4;然後回車(此時B3顯示0)。即在B3處輸入方程組中第三個方程等號左邊的表達式。
6.在B4處從鍵盤鍵入:=A1+2*A2+3*A3-A4;然後回車(此時B4顯示0)。即在B4處輸入方程組中第四個方程等號左邊的表達式。
7.點擊工具 規劃求解,出現規劃求解參數對話框。
8.對話框中第一欄為:設置目標單元格,在相應的框中填入$B$1。
9.對話框中第二欄為:等於;後有三個選項,依次為最大值,最小值,值為。根據題意B1表示方程組中第一個方程等號左邊的表達式,它的值應為1,因此點擊值為前的圓圈,輸入1。
10.對話框中第三欄為:可變單元格;我們預留的可變單元格為A1-A4,所以在可變單元格框內鍵入 A 1: A 4。
11.對話框中最後一欄為:約束;首先點擊添加按鈕,屏幕出現添加約束對話框。
12.在添加約束對話框的單元格引用位置鍵入:B2;在中間的下拉式菜單中選取=;在約束值處鍵入:-4;然後按添加按鈕,屏幕出現空白的添加約束對話框。
13.在添加約束對話框的單元格引用位置鍵入:B3;在中間的下拉式菜單中選取=;在約束值處鍵入:-6;然後按添加按鈕,屏幕出現空白的添加約束對話框。
14.在添加約束對話框的單元格引用位置鍵入:B4;在中間的下拉式菜單中選取=;在約束值處鍵入:-4;然後按確定鍵,返回規劃求解參數對話框。特別注意在最後一個約束條件鍵入後,按確定鍵(而不是像前面一樣按添加鍵)。
15.按求解鍵,出現求解結果對話框。此時在A1-A4的位置依次為:-1,-1,0,1;這就是說,原方程組的解為:A=-1,B=-1,C=0,D=1。這樣我們就求出了方程組的解。
⑼ matlab怎麼計算方程組
1、對於比較簡單的方程組,可以用solve()函數命令求解。如方程組 x + y = 1 ; x- 11y = 5
>>[x,y]=solve('x + y = 1','x - 11*y = 5')
又如方程組 exp(x+1)-y²=10;ln(x)+3y=7
>>syms x y
>>[x,y]=solve(exp(x+1)-y^2-10,log(x)+3*y-7,'x','y')
⑽ MATLAB 如何解大型方程組
matlab中解方程組還是很方便的,例如,對於代數方程組Ax=b(A為系數矩陣,非奇異)的求解,MATLAB中有兩種方法:
(1)x=inv(A)*b — 採用求逆運算解方程組;
(2)x=A\B — 採用左除運算解方程組
PS:使用左除的運算效率要比求逆矩陣的效率高很多~
例:
x1+2x2=8
2x1+3x2=13
>>A=[1,2;2,3];b=[8;13];
>>x=inv(A)*b
x =
2.00
3.00
>>x=A\B
x =
2.00
3.00;
即二元一次方程組的解x1和x2分別是2和3。
對於同學問到的用matlab解多次的方程組,有符號解法,方法是:先解出符號解,然後用vpa(F,n)求出n位有效數字的數值解.具體步驟如下:
第一步:定義變數syms x y z ...;
第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN');
第三步:求出n位有效數字的數值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。
如:解二(多)元二(高)次方程組:
x^2+3*y+1=0
y^2+4*x+1=0
解法如下:
>>syms x y;
>>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0');
>>x=vpa(x,4);
>>y=vpa(y,4);
結果是:
x =
1.635+3.029*i
1.635-3.029*i
-.283
-2.987
y =
1.834-3.301*i
1.834+3.301*i
-.3600
-3.307。
二元二次方程組,共4個實數根;
解答如下:
基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表達式s1,s2,…,sn組成的方程組,求解變數分別v1,v2,…,vn。
具體例子如下:
x^2 + x*y + y = 3
x^2 - 4*x + 3 = 0
解法:
>> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
運行結果為
x =
1 3
y =
1 -3/2
即x等於1和3;y等於1和-1.5
或
>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3= 0','x','y')
x =
1 3
y =
1 -3/2
結果一樣,二元二方程都是4個實根。
通過這三個例子可以看出,用matlab解各類方程組都是可以的,方法也有多種,只是用到解方程組的函數,注意正確書寫參數就可以了,非常方便。
2、變參數非線性方程組的求解
對於求解非線性方程組一般用fsolve命令就可以了,但是對於方程組中某一系數是變化的,該怎麼求呢?
%定義方程組如下,其中k為變數
function F = myfun(x,k)
H=0.32;
Pc0=0.23;W=0.18;
F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);
x(1)-k*sqrt(x(2))];
%求解過程
H=0.32;
Pc0=0.23;W=0.18;
x0 = [2*W; Pc0+2*H]; % 取初值
options = optimset('Display','off');
k=0:0.01:1; % 變數取值范圍[0 1]
for i=1:1:length(k)
kk=k(i);
x = fsolve(@(x) myfun(x,kk), x0, options);%求解非線性方程組
x1(i)=x(1);
x2(i)=x(2);
end
plot(k,x1,'-b',k,x2,'-r');
xlabel('k')
legend('x1','x2')