1樓:匿名使用者
盛金公式判定
a=1;b=0;c=4;d=-4;e=-3;
d=-(3*b^2-8*a*c);
e=3*b^4+16*a^2*c^2-16*a*b*c+16*a^2*b*d-64*a^3*e;
f=-(b^3-4*a*b*c+8*a^2*d)^2;
a=d^2-3*e;
b=d*e-9*f;
c=e^2-3*d*f;
delta=b^2-4*a*c;
delta >0, 其餘均不為零,故根為四個,無重根實際上>> roots([1 0 4 -4 -3])ans =
-0.3523 + 2.2276i
-0.3523 - 2.2276i
1.1973
-0.4926
2樓:匿名使用者
直接用多項式的求根公式 roots
本題指令:
>> roots([1 0 4 -4 -3])ans =
-908/2577 + 597/268i-908/2577 - 597/268i2579/2154
-2467/5008
注,[1 0 4 -4 -3] 是多項式按降冪排列的係數。
此時有無重根可一目瞭然。
怎麼用matlab解含有字母系數的方程組的解,舉個簡單例子
3樓:大野瘦子
用法以這個為例:
x+a*y=10
x-b*y=1
其中x,y為變數,a,b為字母系數.
只要在matlab中輸入
syms x,y,a,b
[x y]=solve('x+a*y=10','x-b*y=1','x','y')
即可求出解
x =(a + 10*b)/(a + b)
y =9/(a + b)
對於函式solve的具體用法,可以通過輸入help solve來學習。
matlab中方程求解的基本命令
1.roots(p) %求多項式的根,其中p是多項式向量。
例求x3-x2+x-1=0的根
解:>>roots([1,-1,1,-1])
注: [1,-1,1,-1]在matlab中表示多項式 x3-x2+x-1
2.solve(fun) %求方程fun=0的符號解,如果不能求得精確的符號解,可以計算可變精度的數值解
例:用solve求方程x9+x8+1=0的根
解:>>solve(‘x^9+x^8+1’)
給出了方程的數值解(32位有效數字的符號量)
3.solve(fun,var) %對指定變數var求代數方程fun=0的符號解。
例:解方程 ax2+bx2+c=0
解:>>syms a b c x;
>>f=a*x^2+b*x+c;
>>solve(f)
如果不指明變數,系統預設為x,也可指定自變數,比如指定b為自變數
>>symsa b c x;
>> f=a*x^2+b*x+c;
>>solve(f,b)
4.fsolve(fun,x0) %求非線性方程fun=0在估計值x0附近的近似解。
例:用fsolve求方程x=e-x在0附近的根
解:>>fsolve(‘x-exp(-x)’,0)
5.fzero(fun,x0) %求函式fun在x0附近的零點
例:求方程x-10x+2=0在x0=0.5附近的根
解:>>fzero(‘x-10^x+2’,0.5)
4樓:匿名使用者
舉個簡單例子,解方程組
x+a*y=10
x-b*y=1
其中x,y為變數,a,b為字母系數。
只要在matlab中輸入
syms x,y,a,b
[x y]=solve('x+a*y=10','x-b*y=1','x','y')
即可求出解
x =(a + 10*b)/(a + b)y =9/(a + b)
對於函式solve的具體用法,可以通過輸入help solve來學習。
希望我的回答能夠解決您的疑問,謝謝。
5樓:匿名使用者
例:解方程組a*x+2*y=4,4*x+b*y=7matlab**:syms a b x y;
z=solve('a*x+2*y=4','4*x+b*y=7')即可。
matlab中怎麼求多項式的解
6樓:
用matlab解方程的三個例項
1、對於多項式p(x)=x3-6x2-72x-27,求多項式p(x)=0的根,可用多項式求根函式roots(p),其中p為多項式係數向量,即
>>p =
p =1.00 -6.00 -72.00 -27.00
p是多項式的matlab描述方法,我們可用poly2str(p,'x')函式 ,來顯示多項式的形式:
>>px=poly2str(p,'x')
px =x^3 - 6 x^2 - 72 x - 27
多項式的根解法如下:
>> format rat %以有理數顯示
>> r=roots(p)
r =2170/179
-648/113
-769/1980
2、在matlab中,求解用符號表示式表示的代數方程可由函式solve實現,其呼叫格式為:solve(s,v):求解符號表示式s的代數方程,求解變數為v。
例如,求方程(x+2)x=2的解,解法如下:
>> x=solve('(x+2)^x=2','x')
x =.69829942170241042826920133106081
得到符號解,具有預設精度。如果需要指定精度的解,則:
>> x=vpa(x,3)
x =.698
3、使用fzero或fsolve函式 ,可以求解指定位置(如x0)的一個根,格式為:x=fzero(fun ,x0)或x=fsolve(fun,x0)。例如,求方程0.
8x+atan(x)-=0在x0=2附近一個根,解法如下:
>> fu=@(x)0.8*x+atan(x)-pi;
>> x=fzero(fu,2)
x =2.4482
或>> x=fsolve('0.8*x+atan(x)-pi',2)
x =2.4482
________________________________________
當然了,對於該方程也可以用第二種方法求解:
>> x=solve('0.8*x+atan(x)-pi','x')
x =2.4482183943587910343011460497668
對於第一個例子,也可以用第三種方法求解:
>> f=@(x)x^3-6*x^2-72*x-27
f =@(x)x^3-6*x^2-72*x-27
>> x=fzero(f,10)
x =12.1229
對於第二個例子,也可以用第三種方法:
>> fun=@(x)(x+2)^x-2
fun =
@(x)(x+2)^x-2
>> x=fzero(fun,1)
x =0.6983
最近有多人問如何用matlab解方程組的問題,其實在matlab中解方程組還是很方便的,例如,對於代數方程組ax=b(a為係數矩陣 ,非奇異)的求解,matlab中有兩種方法:
(1)x=inv(a)*b — 採用求逆運算解方程組;
(2)x=a\b — 採用左除運算解方程組。
例:x1+2x2=8
2x1+3x2=13
>>a=;b=;
>>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 ...;
第二步:求解=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;
>>=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。
怎樣有matlab解多項式方程
7樓:信玄居士
用matlab解方程的三個例項
1、對於多項式p(x)=x3-6x2-72x-27,求多項式p(x)=0的根,可用多項式求根函式roots(p),其中p為多項式係數向量,即
>>p =
p =1.00 -6.00 -72.00 -27.00
p是多項式的matlab描述方法,我們可用poly2str(p,'x')函式 ,來顯示多項式的形式:
>>px=poly2str(p,'x')
px =x^3 - 6 x^2 - 72 x - 27
多項式的根解法如下:
>> format rat %以有理數顯示
>> r=roots(p)
r =2170/179
-648/113
-769/1980
2、在matlab中,求解用符號表示式表示的代數方程可由函式solve實現,其呼叫格式為:solve(s,v):求解符號表示式s的代數方程,求解變數為v。
例如,求方程(x+2)x=2的解,解法如下:
>> x=solve('(x+2)^x=2','x')
x =.69829942170241042826920133106081
得到符號解,具有預設精度。如果需要指定精度的解,則:
>> x=vpa(x,3)
x =.698
3、使用fzero或fsolve函式 ,可以求解指定位置(如x0)的一個根,格式為:x=fzero(fun ,x0)或x=fsolve(fun,x0)。例如,求方程0.
8x+atan(x)-=0在x0=2附近一個根,解法如下:
>> fu=@(x)0.8*x+atan(x)-pi;
>> x=fzero(fu,2)
x =2.4482
或>> x=fsolve('0.8*x+atan(x)-pi',2)
x =2.4482
________________________________________
當然了,對於該方程也可以用第二種方法求解:
>> x=solve('0.8*x+atan(x)-pi','x')
x =2.4482183943587910343011460497668
對於第一個例子,也可以用第三種方法求解:
>> f=@(x)x^3-6*x^2-72*x-27
f =@(x)x^3-6*x^2-72*x-27
>> x=fzero(f,10)
x =12.1229
對於第二個例子,也可以用第三種方法:
>> fun=@(x)(x+2)^x-2
fun =
@(x)(x+2)^x-2
>> x=fzero(fun,1)
x =0.6983
最近有多人問如何用matlab解方程組的問題,其實在matlab中解方程組還是很方便的,例如,對於代數方程組ax=b(a為係數矩陣 ,非奇異)的求解,matlab中有兩種方法:
(1)x=inv(a)*b — 採用求逆運算解方程組;
(2)x=a\b — 採用左除運算解方程組。
例:x1+2x2=8
2x1+3x2=13
>>a=;b=;
>>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 ...;
第二步:求解=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;
>>=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。
matlab求解多元非線性方程組
建立 myfun.m 檔案 function f myfun x,a e a 1 i a 2 r0 a 3 r1 a 4 t a 5 a a 6 v a 7 rho a 8 f t rho a v 2 sin x 3 x 1 t cos x 3 rho a v 2 rho a v 2 cos x 3...
複數方程求解,求解複數方程組
首先,把方程化簡為z z 3 2 0 解得z 0 或 z 3 2所以在實數範圍內可解得z 0或z 3次根號2在複數範圍內,有兩種解法,具體如下 高中方法 2 2 cos360 isin360 其中i為虛數單位 把360 三等分,得0 120 240 所以z 3 2有三個解 z1 3次根號2 cos0...
求解方程組
b c 2 b 2 c 2 2bc 13 2 4 21可得b c 常數 繼而b 常數 c 將b帶入bc 4 就是乙個一元二次方程了 根據一元二次求解公式就可以得出結果了 ps b c若未知正負,自己判斷下就ok了 不會判斷就用假設法。解由b c 13 即b c 2bc 13 2bc 即 b c 13...