MATLAB求解方程和多元方程組

2021-10-10 19:14:11 字數 2932 閱讀 6639

前面有兩篇博文分別介紹了:

matlab求常微分方程的解析解

matlab求常微分方程的數值解

為了形成乙個體系,我決定把普通方程組的求解也介紹一下。

本博文也是按照matlab的官方文件展開的(推薦大家多看官方文件)

一般形式s=solve(eqns,vars,name,value),其中:

eqns是需要求解的方程組;

vars是需要求解的變數;

name-value對用於指定求解的屬性(一般用不到);

s是結果,對應於vars中變數;

方程:sin(x)=1

**:

syms x; %定義x是乙個未知量

eqn=sin(x)==1; % 定義方程,eqn只是乙個代號,代表sin(x)==1

solx=solve(eqn,x) % 求方程eqn中的x,放入solx中

結果:

說明:matlab定義方程用的是 == 符號,就是這樣規定的哈。

注意:細心的同學應該發現了,本例的解實際上應該是 pi/2+2k*pi ,怎麼得到呢?

新增name-value對即可解決,輸入以下**:

syms x; %定義x是乙個未知量

eqn=sin(x)==1; % 定義方程,eqn只是乙個代號,代表sin(x)==1

[solx,params,cond]=solve(eqn,x,'returnconditions',true) % 求方程eqn中x的所有解,放入solx中,params是引數,cond儲存引數性質

得到理想結果:

方程:ax²+bx+c=0

**:

syms x a b c; %定義x a b c是未知量

eqn=a*x^2+b*x+c==0;% 定義方程

solx=solve(eqn,x) % 解方程

結果:

說明:這裡就簡單的把未知引數用syms宣告就可以了。

方程:

syms u v; % 定義u v 是未知量

eqns=[2*u+v==0,u-v==1]; % 定義方程組

vars=[u,v]; % 定義求解的未知量

[solu,solv]=solve(eqns,vars) % 求解eqns中的vars未知量,分別儲存

sol=solve(eqns,vars); % 求解eqns中的vars未知量,以結構體的形式儲存到sol中

solu1=sol.u % 從sol結構體中取出變數u的解

solv1=sol.v % 從sol結構體中取出變數v的解

結果:

說明:本例中有兩個求解的變數,有兩種儲存方式,已在**中介紹。

方程:sin(x)==x²-1

**:

syms x; % 定義x是未知量

fplot(sin(x),[-2,2]); % 繪製y=sin(x)的影象

hold on;

fplot(x^2-1,[-2,2]); % 繪製y=x^2-1的影象

hold off;

eqn=sin(x)==x^2-1; % 定義方程

solx=solve(eqn,x) % 直接求解,返回其找到的第乙個數值近似解

solx1=vpasolve(eqn,x,[0,2]) % vpa求解,返回其在範圍[0,2]內找到的第乙個數值近似解

結果:

說明:此例中無法求得精確解,slove會返回求得的第乙個數值近似解,vpasolve可以返回指定範圍內第乙個近似解

方程:

syms x; % 定義x是未知量

eqn=[3*x+2==0,3*x+1==0]; % 定義函式

solx=solve(eqn,x) % 求解

結果:

MATLAB 求解方程(組)

eg.解方程x 2 x 2 0 1.roots p 函式 此 matlab 函式 以列向量的形式返回 p 表示的多項式的根。輸入 p 是乙個包含 n 1 多項式係數的向量,以 xn 係數開頭。0係數表示方程中不存在的中間冪。p 1 1,2 x roots p 2.solve函式 利用solve函式求...

解方程及微分方程 MATLAB

x1,x2,x3,solve eq1 eq2 eq3 x1 x2 x3 s solve eq1 eq2 eq3 x1 x2 x3 第一種方式,對solve的括號中的x1,x2,x3的次序會有要求 與前面的一致 第二種無要求。eq都是等式,不是表示式。最好都打引號,不打引號也可以,但是一定要預先用sy...

求解方程 語言 c

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 用牛頓迭代法求方程2x 3 4x 2 3xsinx 6 0的根,要求誤差小於10的 6次方。輸入 乙個浮點數,表示起始點。輸出 乙個浮點數,為方程的根。輸入樣例 1.0輸出樣例 2.064076 include include...