MATLAB之方程式求根

2021-09-27 11:51:10 字數 2324 閱讀 9085

1.syms x--標明變數x是乙個符號變數

2.solve(y,x)--求y=0時,x的取值,預設的自變數為x

)1.解單個方程(係數已知):

>> syms s

>> y = s*sin(s)-s;

>> solve(y,s)

ans =

0pi/2

>> y = cos(s).^2 - sin(s).^2

>> solve(y)

ans =

pi/4

)2.解聯立方程(係數已知):

syms x y;

fun1 = x - 2*y - 5;

fun2 = x + y - 6;

a = solve(fun1,fun2,x,y);

a.xa.y

ans = 17/3

ans =1/3

)3.解單個方程(係數未知):

>> syms a b x;

>> y = a*x.^2 - b;

>> solve(y)

ans =

b^(1/2)/a^(1/2)

-b^(1/2)/a^(1/2)

)4.將別的引數當成自變數,在solve中設定

>> syms x y a b r

z = (x - a)^2 +(y - b)^2 - r^2;

solve(z,a)

ans =

x + (b + r - y)^(1/2)*(r - b + y)^(1/2)

x - (b + r - y)^(1/2)*(r - b + y)^(1/2)

3.syms,diff--求微分

若diff(),括號裡的元素為向量,那麼前乙個減後乙個即為diff後的結果;

若diff(),傳入連續符號函式的話,就是求導

>> syms x

>> y = 4*x^5;

>> yprime = diff(y)

yprime =20*x^4

4.subs()替換函式

)1.將變數x替換為數值1: subs(s,x,1)

>> syms x y z

>> s = x^2+y;

>> subs(s,x,1)

ans = y + 1

)2.將變數x替換為變數z: subs(s,x,z)

>> subs(s,x,z)

ans =z^2 + y

)3.同時將變數x和y分別替換為1和z:subs(s,,)

>> subs(s,,)

ans =z + 1

)4.將單變數替換為陣列:subs(s,x,[1 2;3 4])

>> subs(s,x,[1 2;3 4])

ans =

[ y + 1, y + 4]

[ y + 9, y + 16]

5.int(f,v,a,b)--求符號函式的定積分,其中,a、b分別表示定積分的下限和上限。

)1.求x^2e^x的不定積分

>> syms x;

>> y = x^2*exp(x);

>> z = int(y)

z =exp(x)*(x^2 - 2*x + 2)

>> z = z-subs(z,x,0)---減去x=0的情況

z =exp(x)*(x^2 - 2*x + 2) - 2

)2.求(x^2-x+2)/(x+3) 下限為0,上限為10的定積分

>> z = (x^2 - x + 1)/(x + 3);

>> int(z,0,10)

ans =log(302875106592253/1594323) + 10

6. @(x)(函式體)-- 用@設定匿名函式

fsolve來求解

)1.求解單個方程組

>> f = @(x)(1.2*x+0.3+x*sin(x));

>> fsolve(f,0)---0為初始值,隨便寫。

ans = -0.3500

)2.求解多個聯立的方程組--利用x(n)來表示不同的變數

>>f=@(x)[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];

x0=[-5;-5];

[x,fval]=fsolve(f,x0);

7.root() 求解多項式的解

f(x) = x^3 - 6*x^2 - 12*x + 81

>> a = [1 -6 -12 81];

>> roots(a)

ans =

-3.5969

5.5097

4.0872

(matlab系列)非線性方程求根

非線性方程在5次以上的時候沒有求根公式 根據高等代數的阿貝爾群的概念得知 所以直接求解比較麻煩,需要借助解析幾何的工具,結合圖形採用特殊的方法求解 逼近法。主要有二分法 迭代法 包括牛頓迭代和割線法 逼近法的本質就是先給乙個估計值 近似值 作為方程解,然後對這個估計值一步一步地修正,使得它越來越像真...

線性方程求根

c 版 1.二分法 include include include include includeusing namespace std int num 100 5 多項式係數 int n double ep double a,b double getval double k while abs b...

非線性方程求根

假設本金為2000元,分2個月還,每個月還1100,月利率為x,則 2000 1 x c 1 x c 0,令f x 2000 1 x c 1 x c,當f x 0時,說明月利率太高了 當f x 0時說明月利率正確 當f x 0時,月利率過低。結果要求輸出三位小數。include include in...