MATLAB求解方程与方程组

一.solve()方法

(1)单变量方程 f(x)=0

solve()方法可以求解较为简单的方程和方程组。

1)符号方程

所谓符号方程就是求得方程的解的解析式而不是具体的数值解,比如当参数未知时求得的解。

eg:ax2 + bx + c = 0

syms a b c x;
f = a*x^2+b*x+c; 
solve(f,x) %求解结果如下
%结果
ans =
 
 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)

注意: 将solve()方法的第二个参数表示以该字母作为变量

solve(f,a) %求解结果如下
%结果
ans =
 
-(c + b*x)/x^2
2)数值方程

系数都为常数,最终求得数值解。

eg:x3 + 2x2 = x - 1

syms x;
f = x^3+2*x^2-x+1;
s = solve(f); %求解结果如下
double(s)
%结果
ans =

   0.2734 - 0.5638i
   0.2734 + 0.5638i
  -2.5468 + 0.0000i
3)超越方程

带有三角函数、指数对数等的一些函数方程式

eg:tan(x)-sin(x)=0

syms x;
f = tan(x)-sin(x);
s = solve(f) %求解结果如下
%结果
s =
 
0

注意: 使用solve求解超越函数只能得到一个解!

(2)方程组

如果有多个变量将多个变量放入一个中括号内接受返回结果

eg:
x2 + y2 - 1 = 0
0.75*x3 - y +0.9=0

syms x y;
f1 = x^2 + y^2 - 1;
f2 = 0.75*x^3 - y + 0.9;
[x,y] = solve(f1,f2); %求解结果如下
x = double(x)
y = double(y)
%结果
x =

  -0.9817 + 0.0000i
   0.3570 + 0.0000i
  -0.5540 - 0.3547i
  -0.5540 + 0.3547i
   0.8663 - 1.2154i
   0.8663 + 1.2154i


y =

   0.1904 + 0.0000i
   0.9341 + 0.0000i
   0.9293 - 0.2114i
   0.9293 + 0.2114i
  -1.4916 - 0.7059i
  -1.4916 + 0.7059i

二.fsolve()方法

(1)数值求解

需要建立方程组的m函数文件,也可以使用匿名函数(比较方便),该方法需要给出初值,然后进行迭代求解!

eg:
2x1 - x2 = e-x1
-x1 + 2x2 = e-x2

%函数m文件
function eq = func(x)

eq(1) = 2*x(1) - x(2) - exp(-x(1));
eq(2) = -x(1) + 2*x(2) - exp(-x(2));
end

%在命令行窗口输入
[x,fv] = fsolve(@func,[0,0])
%x为方程组的解,fv为解对应的函数值
%结果
x =

    0.5671    0.5671


fv =

   1.0e-06 *

   -0.1965   -0.1965

三.fzero()方法

(1)求解方程

该方法需要给出变量的范围

eg:x3 - 3x + 1 = 0, (-2<=x<=0)

在这里插入代码片syms x ;
f = inline('x^3 - 3*x + 1');
fzero(f,[-2,0]) %求解结果如下
%结果
ans =

   -1.8794

四.roots()方法

(1) 求解多项式方程

eg: x9 + x8 +1 = 0

p=[1,1,0,0,0,0,0,0,0,1];  %括号里的数为多项式对应的系数
roots(p)
%结果
ans =

  -1.2131 + 0.0000i
  -0.9017 + 0.5753i
  -0.9017 - 0.5753i
  -0.2694 + 0.9406i
  -0.2694 - 0.9406i
   0.4168 + 0.8419i
   0.4168 - 0.8419i
   0.8608 + 0.3344i
   0.8608 - 0.3344i

注意: roots方法可以找出全部的根

五.求解线性方程组

AX = b, A是m×n阶矩阵,b是m维向量

eg:AX = b

%方法一
A = [1 2 11;
     4 5 13;
     7 8 9];
b = [6; 14; -3];
x=A\b

%方法2
x=inv(a)*b
%结果
x =

   39.6111
  -39.7222
    4.1667

注意: 只能求得一个特解

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡咻飞兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值