怎樣有matlab解多項式方程用matlab如何解方程

2021-03-08 09:19:43 字數 5001 閱讀 8765

1樓:信玄居士

用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。

2樓:空**聖卿

其實不是錯誤,你計算的結果s1第二個數其實是不是零,只是一個很小的數,由於顯示精度的問題,就沒有顯示出來結果;當你用字串表示式時候,就用分式把第二個數表示出來了,這個分式除出來也就是s1第二個數的大小。

你可以使用vpa(p,4),可以看到x^2的係數為10-14次方,非常小。

用matlab如何解方程

3樓:匿名使用者

>> syms a % 定義 a 為符號變數

f=4*cos(a)-2*sin(a)-6*exp(-2*a); % 方程關係式

solve(f) % 解方程

ans =

.86889441616212189601300889832946+0.*i

4樓:素菁閭雨安

^定義m

函式fc:

function

y=fc(p)

a=p(1);

b=p(2);

k=p(3);

x=p(4);

y=[sqrt((a-1700)^2+(b-700)^2)-k*x;

sqrt((a-2900)^2+(b-900)^2)-k*x;sqrt((a-2500)^2+(b-1900)^2)-(k-1.37)*x

;sqrt((a-1400)^2+(b-2200)^2)-(k+1.14)*x;

];命令列輸入

fsolve('fc',[10

1010

10],optimset('tolcon',1e-15,'tolfun',1e-22,'maxiter',1e8,'maxfunevals',1e12,'tolx',1e-10));vpa(ans,4)

結果:ans

=-2509.

-1727.

.1150e7

.4911e-2

這是個數值解

,改變初值結果會有變化,這可能是因為

精度的問題。

沒辦法,這是

數值解法

的缺陷。

如何用matlab解方程組?

5樓:程順寬

s=solve('2*x*y=1,x+2=y+z,x+y-z=4','x,y,z'); %前面的參復

數是方程制組列表,後面是未知變數列bai表s.x %輸出未知數

dux的值

zhis.y %輸出未知數y的值

s.z %輸出未知數z的值

f=@(x)2*x; %定義一個匿名函式y=2x,其中@(x)表示x是匿名函式的

dao自變數

fplot(f,[-10,10]) %畫圖函式,第一個引數是函式名,第二引數要畫函式的區間[-10,10]

6樓:郯璇俟玟玉

沒有解抄析解,可bai

嘗試du數值解zhi

法dao

>>[a,b,c,d,e,f,g,h,k]=solve('g+4*k+8.314*log(a)=-19.3','2*k+h+8.

314*log(b)=192.6','g+h+8.314*log(c)=200.

6','g+2*h+8.314*log(d)=395.9','2*k+8.

314*log(e)=0','a+c+d-2*f^(-1)=0','4*a+2*b+2*e-14*f^(-1)=0','b+c+2*d-3*f^(-1)=0','a+b+c+d+e=1')

warning:

explicit

solution

could

notbe

found.

>insolve

at98a=

[empty

sym]b=

c=d=

e=f=

g=h=k=

7樓:老語開悅遠

>>symsa%

定義a為符號變數

f=4*cos(a)-2*sin(a)-6*exp(-2*a);

%方程內關係式

容solve(f)

%解方程

ans=

.86889441616212189601300889832946+0.*i

matlab裡面怎麼解方程?

8樓:高等數學答案

如果把你這個看成方程組的話,兩個未知數三個方程,解是求不出來的。

一個專一屬個的解了下:

>> solve('x^2-4=0')

ans =2-2

>> solve('3*x+8=0')

ans =

-8/3

>> solve('4*x+2*y=0')ans =

-1/2*y

9樓:匿名使用者

^用solve, 你在主視窗裡面打: help solve, 看看幫助就會了

專。比如屬:

[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')

x =[ 1]

[ 3]

y =[ 1]

[ -3/2]

matlab多項式p表示多項式,那麼怎麼用plot函式把這個多項式畫出圖來,x範圍都有,不用管

x 5 0.5 5 p 1 2 3 4 plot x,polyval p,x x 0 1 10 p 1 2 3 4 y polyval p,x plot x,y matlab中已知多項式係數如p 2 3 4 怎樣直接畫出在如 2 6 區間的函式影象 可以利用y0 polyval p,x0 可求得多項...

單項式,多項式,整式都是什麼意思?有什麼區別

1 單項式 表示數與字母的乘積的代數式,叫做單項式,單獨的一個數或一個字母也是單項式,如 2 r a,0 都是單項式。2 多項式 幾個單項式的和叫做多項式 3 整式 單項式和多項式統稱為整式,如 ab2,是整式.整式的概念 學習要求 會把一個多項式按某一個字母的升降冪排列。本節命題主要考查整式 單項...

怎樣實現一元多項式相加後輸出時按升序排列

一polycreate這個函式的引數有問題,在 中你都沒用到,所以不需要給他傳引數,改為 polynode polycreate 二scanf d d c,e if eexp 你這個地方是要給他排序嗎?問題是你第二個節點還沒有分配記憶體啊!怎麼排序?而且如果你輸入的情況是1 1,1 3,1 4然後有...