1、解方程、方程组

x^2-4=12,求x:

syms x;

f=x^2-4-12;

solve(f)

最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:
(1)x=inv(A)*b — 采用求逆运算解方程组;

(2)x=A\B — 采用左除运算解方程组

PS:使用左除的运算效率要比求逆矩阵的效率高很多~

例:
x1+2x2=8
2x1+3x2=13
>>A=[1,2;2,3];b=[8;13];
>>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 ...;
第二步:求解[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;
>>[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。
二元二次方程组,共4个实数根;

还有的同学问,如何用matlab解高次方程组(非符号方程组)?举个例子好吗?
解答如下:
基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组成的方程组,求解变量分别v1,v2,…,vn。
具体例子如下:
x^2 + x*y + y = 3
x^2 - 4*x + 3 = 0
解法:
>> [x,y] = solve('x^2 + x*y + y =3','x^2 - 4*x + 3 = 0')
运行结果为
x =
1 3
y =
1 -3/2

即x等于1和3;y等于1和-1.5


>>[x,y] = solve('x^2 + x*y + y =3','x^2 - 4*x + 3= 0','x','y')
x =
1 3
y =
1 -3/2
结果一样,二元二方程都是4个实根。

通过这三个例子可以看出,用matlab解各类方程组都是可以的,方法也有多种,只是用到解方程组的函数,注意正确书写参数就可以了,非常方便。

citefrom:http://bbs.seu.edu.cn/pc/pccon.php?id=950&nid=14498&tid=0

2、变参数非线性方程组的求解
对于求解非线性方程组一般用fsolve命令就可以了,但是对于方程组中某一系数是变化的,该怎么求呢?

%定义方程组如下,其中k为变量
function F = myfun(x,k)
H=0.32;
Pc0=0.23;W=0.18;
F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);
x(1)-k*sqrt(x(2))];

%求解过程
H=0.32;
Pc0=0.23;W=0.18;
x0 = [2*W; Pc0+2*H]; % 取初值
options = optimset('Display','off');
k=0:0.01:1; % 变量取值范围[0 1]
for i=1:1:length(k)
kk=k(i);
x = fsolve(@(x) myfun(x,kk), x0, options);%求解非线性方程组
x1(i)=x(1);
x2(i)=x(2);
end
plot(k,x1,'-b',k,x2,'-r');
xlabel('k')
legend('x1','x2')

cite from:http://forum.simwe.com/archiver/tid-836299.html

3、非线性方程数值求解

matlab里solve如何使用,是否有别的函数可以代替它.

matlab里我解y=9/17*exp(-1/2*t)*17^(1/2)*sin(1/2*17^(1/2)*t)=0这样的方程为什么只得到0这一个解,如何可以的到1/2*17^(1/2)*t=n*(pi)这样一族解??

在matlab里面solve命令主要是用来求解代数方程(即多项式)的解,但是也不是说其它方程一个也不能解,不过求解非代数方程的能力相当有限,通常只能给出很特殊的实数解。(该问题给出的方程就是典型的超越方程,非代数方程)

从计算机的编程实现角度讲,如今的任何算法都无法准确的给出任意非代数方程的所有解,但是我们有很多成熟的算法来实现求解在某点附近的解。matlab也不例外,它也只能给出任意非代数方程在某点附近的解,函数有两个:fzero和fsolve,具体用法请用help或doc命令查询吧。如果还是不行,你还可以将问题转化为非线性最优化问题,求解非线性最优化问题的最优解,可以用的命令有:fminbnd,fminsearch, fmincon等等。

*非线性方程数值求解

*单变量非线性方程求解

在MATLAB中提供了一个fzero函数,可以用来求单变量非线性方程的根。该函数的调用格式为:

z=fzero('fname',x0,tol,trace)

其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,缺省时取tol=eps,trace�指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0。

例 求f(x)=x-10x+2=0在x0=0.5附近的根。

步骤如下:

(1) 建立函数文件funx.m。

function fx=funx(x)

fx=x-10.^x+2;

(2) 调用fzero函数求根。

z=fzero('funx',0.5)

z =

0.3758

**非线性方程组的求解

对于非线性方程组F(X)=0,用fsolve函数求其数值解。fsolve函数的调用格式为:

X=fsolve('fun',X0,option)

其中X为返回的解,fun是用于定义需求解的非线性方程组的函数文件名,X0是求根过程的初值,option为最优化工具箱的选项设定。最优化工具箱提供了20多个选项,用户可以使用optimset命令将它们显示出来。如果想改变其中某个选项,则可以调用optimset()函数来完成。例如,Display选项决定函数调用时中间结果的显示方式,其中‘off’为不显示,‘iter’表示每步都显示,‘final’只显示最终结果。optimset(‘Display’,‘off’)将设定Display选项为‘off’。

例 求下列非线性方程组在(0.5,0.5) 附近的数值解。

(1) 建立函数文件myfun.m。

function q=myfun(p)

x=p(1);

y=p(2);

q(1)=x-0.6*sin(x)-0.3*cos(y);

q(2)=y-0.6*cos(x)+0.3*sin(y);

(2) 在给定的初值x0=0.5,y0=0.5下,调用fsolve函数求方程的根。

x=fsolve('myfun',[0.5,0.5]',optimset('Display','off'))

x =

0.6354

0.3734

将求得的解代回原方程,可以检验结果是否正确,命令如下:

q=myfun(x)

q =

1.0e-009 *

0.2375 0.2957

可见得到了较高精度的结果。

citefrom:http://blog.sina.com.cn/s/blog_56ef652d0100ebew.html

4、fsolve函数解方程

[X,FVAL,EXITFLAG,OUTPUT,JACOB]=FSOLVE(FUN,X0,...) returns the
Jacobian of FUN at X.

Examples
FUN can be specified using @:
x = fsolve(@myfun,[2 3 4],optimset('Display','iter'))

where myfun is a MATLAB function such as:

function F = myfun(x)
F = sin(x);

FUN can also be an anonymous function:

x = fsolve(@(x) sin(3*x),[1 4],optimset('Display','off'))

If FUN is parameterized, you can use anonymous functions to capturethe
problem-dependent parameters. Suppose you want to solve the systemof
nonlinear equations given in the function myfun, which isparameterized
by its second argument c. Here myfun is an M-file function suchas

function F = myfun(x,c)
F = [ 2*x(1) - x(2) - exp(c*x(1))
-x(1) + 2*x(2) - exp(c*x(2))];

To solve the system of equations for a specific value of c, firstassign the
value to c. Then create a one-argument anonymous function thatcaptures
that value of c and calls myfun with two arguments. Finally, passthis anonymous
function to FSOLVE:

c = -1; % define parameter first
x = fsolve(@(x) myfun(x,c),[-5;-5])

cite from:

matlab解方程、方程组相关推荐

  1. matlab中solve解方程,怎么用Matlab解方程?

    Matlab是一款功能强大的数学软件,我们常常会使用它来解决一些数学难题,但是有时候我们刚装上这个软件的时候,就有一些问题不懂得怎么处理,比如说怎么用Matlab解方程,为了帮助大家解决这个问题,小编 ...

  2. 用matlab2018解方程,【2018年整理】MATLAB解方程的三个实例

    <[2018年整理]MATLAB解方程的三个实例>由会员分享,可在线阅读,更多相关<[2018年整理]MATLAB解方程的三个实例(4页珍藏版)>请在金锄头文库上搜索. 1.M ...

  3. matlab 解函数方程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值

    MATLAB程序设计教程(7)--MATLAB解方程与函数极值 第7章MATLAB解方程与函数极值 7.1  线性方程组求解 7.2  非线性方程数值求解 7.3  常微分方程初值问题的数值解法 7. ...

  4. matlab解方程教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值

    第7章 MATLAB解方程与函数极值 7.1 线性方程组求解 7.2 非线性方程数值求解 7.3 常微分方程初值问题的数值解法 7.4 函数极值 7.1 线性方程组求解 7.1.1 直接解法 1.利用 ...

  5. matlab求函数极值教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值

    MATLAB程序设计教程(7)--MATLAB解方程与函数极值 第7章MATLAB解方程与函数极值 7.1  线性方程组求解 7.2  非线性方程数值求解 7.3  常微分方程初值问题的数值解法 7. ...

  6. matlab解方程出现root,如何获得数值解

    matlab解方程出现root,如何获得数值解 运行以下代码 syms x eqn = 4xxx-2x-4==O; solx = solve(eqn.x) 得到: solx = root(z^3 - ...

  7. matlab解方程大于0的解,matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方...

    matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方 mip版  关注:130  答案:4  悬赏:40 解决时间 2021-01-25 20:34 已解 ...

  8. MATLAB怎么解方程解,怎么用Matlab解方程?

    工具/材料 matlab 2016a 打开matlab,首先定义变量x: syms x; matlab中solve函数的格式是solve(f(x), x),求解的是f(x) = 0的解. 第一个例子, ...

  9. matlab 0x1 sym,matlab解方程0x1sym

    (组)的 roots 命令 求方程f(x)=q(x)的根可以用MATLAB命令: >> x=solve('方程f(x)=q(x)','待求符号变量x') 求方程组fi(x1,-,xn)=q ...

最新文章

  1. Centos7上yum安装redis
  2. Xilinx FPGA全局时钟和第二全局时钟资源的使用方法
  3. javascript 传值给前端(ios 安卓)
  4. mysql弱口令加强_MySQL弱口令利用
  5. 验证视图状态 MAC 失败
  6. 大型网站的可伸缩性架构如何设计?
  7. go标准库的学习-encoding/json
  8. 万物皆可爬系列查看翻页翻到最后是什么
  9. VC编译器中混有.c文件时出现fatal error C1853错误(转)
  10. java 当前时间格式_JAVA中获取当前系统时间及格式转换
  11. [Project Euler] 来做欧拉项目练习题吧: 题目013
  12. C# Object.Equals方法深入研究
  13. itexpdf同一个段落不同文字,如何设置不同的格式
  14. Atitit onvif协议获取rtsp地址播放java语言attilx总结
  15. php 导出文件另行指定路径,生成excel文件到指定目录的函数php类库
  16. MAX30102学习笔记(下)
  17. 【数字IC基础知识1之数字芯片设计流程
  18. ABAP-SAP 账号批量创建分配权限程序
  19. 打开 CMD 的方式+常用的Dos命令
  20. 线性规划之二 —— 单纯形算法(详解)

热门文章

  1. Linux常见错误 “cp: omitting directory/ cp: :Permission denied”解决办法
  2. 主动降噪耳机什么牌子好?热门降噪耳机排行榜
  3. 大数据中台架构以及建设全流程二(Daas层设计)
  4. 数据结构李春葆第五版答案
  5. 张志华-统计机器学习-随机变量
  6. SpriteKit:模拟器中播放效果音有延时的解决办法
  7. openCV ROI
  8. MYSQL-mysql中的truncate的用法
  9. ThinkPHP5.0 中使用荣联云通讯
  10. java.net.ConnectException: Connection refused: no further information【已解决】