Matlab解方程(方程组)
更新时间:2023-04-27 03:20:01 阅读量: 实用文档 文档下载
Matlab 解方程
这里系统的介绍一下关于使用Matlab求解方程的一系列问题,网络上关于Matlab求解方程的文章数不胜数,但是我大体浏览了一下,感觉很多文章都只是零散的介绍了一点,都只给出了一部分Matlab函数例子,以至于刚接触的人面对不同文章中的不同函数一脸茫然,都搞不清楚这些函数各自的用途,也不知道在什么样的情况下该选择哪个函数来求解方程,在使用Matlab解方程时会很纠结。不知道读者是否有这样的感觉,反正我刚开始接触时就是这样的感觉,面对网络搜索到一系列函数都好想知道他们之间是个什么关系。
所谓的方程就是含有未知数的等式,解方程就是找出使得等式成立时的未知数的数值。
求方程的解可以转换成不同形式,比如求函数的零点、多项式的根。方程分类很多,按照未知数个数分为一元、二元、多元方程;按照未知数组合形式分为线性方程和非线性方程;按照非零项次数是否一致分为齐次方程和非齐次方程。线性方程就是方程中未知数次数是一次的,未知数之间不存在指、对、2及以上幂次的关系,线性方程又分为一元线性方程,也就是一元一次方程;多元线性方程,也就是多元一次方程,多以线性方程组的形式出现(包括齐次线性方程组和非齐次线性方程组)。在Matlab中求解方程的函数主要有roots、solve、fzero、和fsolve函数等,接下来详细的介绍一下各个Matlab函数的使用方法和使用场合。
一、直接求解法(线性方程组)
直接求解法不需要借助任何的Matlab函数,主要用于求解线性方程组,也就是未知数次数是一次的方程组,包括齐次线性方程组合非齐次线性方程组。当然既然可以求解方程组自然也就可以求解单个方程。主要针对A x=b形式的方程,其中A是未知数系数矩阵,x是未知数列向量,b是常数列向量,当b=0时就是齐次线性方程组,b ≠0时是非齐次线性方程组。用左除法,
x=A\b
例:求解线性方程组的解
12341242341234251357926
640
x x x x x x x x x x x x x x +-+=??-+=-??+-=??+--=? 解:
即直接利用b 左除以A 。
运行得到结果:
二、roots 函数求多项式的根
多项式是指式中变量(未知数)就一个,未知数次数是一次及以上的式子,刑如:
110n n n p x p x p ++++=L
利用roots 函数求解此类方程(多项式)的根的格式是: x =roots(p )
其中p 是多项式系数,由高次到低次,缺的项用0表示(不能空缺),共n+1项。
例1:求解方程(多项式)的根
23240x x --=
解:
运行后得到结果:
例2:求解4次方程的根
410
x-=
解:
运行后得到结果:
关于roots函数还有两个函数经常和其一起使用,这就是poly2sym和sym2poly函数,其中poly2sym是将一个行向量(多项式系数)转化成一个多项式,而sym2poly是提取多项式系数,而且不要求这个多项式是按从高次到低次排列的。
poly2sym
例3:
运行以后到结果:
sym2poly
例4:
运行以后得到结果:
例5:
运行以后得到结果:
可见使用sym2poly提取多项式系数的时候不需要将多项式从高次到低次排列。
这样在求解方程(多项式)
452
++-+=
x x x x
29430
的根时就可以这样写程序:
运行以后就可得到结果
另外与roots 函数功能相反的一个函数是poly 函数,roots 函数是根据多项式系数求多项式的根,而poly 函数是根据多项式的根去求多项式系数,也可以用作求矩阵的特征多项式。使用时调用格式如:
p=poly(x )
p=poly(A)
其中p=poly(x)是用于根据根求多项式系数,x 是已知多项式根;p=poly(A)用于求矩阵的特征多项式。
例6:已知一个多项式的根是x 1=11.6219,x 2=-0.311+2.67i , x 3=-0.311-2.67i ,求该多项式的表达式是多少?
解:
运行以后得到结果:
即所需要的多项式表达式是:
3210.99990.001184.00030x x x ---=
例7:求一个矩阵的特征多项式,已知矩阵A 如下:
123456780A ????=??????
解:
运行以后得到结果:
故就可得到矩阵A 的特征多项式是:
32672270λλλ---=
这样再利用roots 函数输入特征多项式系数p 就可以求得矩阵A 的特征值。
三、求方程的符号解(solve 函数)
solve 函数可用于求解线性方程的根,也可以用于求解非线性方程的根,也可以用于求解带有符号常数方程的根。具体调用格式如下: ① x=solve(eqn,var)
② [x,y]=solve(eqn1,enq2,var1,var2)
③ [x,params,conds]=solve(eqns,vars ,‘ReturnConditions ’,true)
其中eqn 是待求方程,var 是自变量,也就是未知数,parameters 是解中的常数,conditions 是常数的取值。
注意在2018版本之前的Matlab 中solve 函数支持
x=solve(‘方程1’, ’方程2’, … , ’自变量1’,‘自变量2’) 的调用格式,即可以直接在solve 函数中输入方程表达式和自变量,不需要事先定义自变量,将方程和变量用单引号括起来就行,但是在后继版本中不再支持这样的调用格式,而是自变量需要先用syms 函数进行定义。
例1:求解方程sin(x)=1的一个解。
不再支持x=solve(‘sin(x)==1’,’x’)这样的调用格式,正确的使用格式是这样:
解:
或则:
运行以后都可以得到如下结果:
如果是要求方程sin(x)=1的通解的话就用③调用格式。
例2:求方程sin(x)=1的全部解。
运行以后得到结果:
即解为
22x k π
π=+
k 是常数,k 的取值是所有整数
solve 函数还可以用来求解方程组,且方程可以是非线性的: 例3:求解下面方程组的解:
2220
1x y x y ?+=?-=?
解:
运行以后可得到结果:
利用solve函数还可以求解带符号常量的方程,
例4:求解一元二次方程ax2+bx+c=0, (a≠0)的通解。
解:
运行以后得到结果
四、求方程的数值解(fzero函数和fsolve函数)
(一)、fzero函数求函数的零点
solve函数可用于求解方程的通解,方程中和解中都可以含有符号常数。针对函数在某一点的解,也就是函数零点,可用fzero函数来求解,调用格式如下:
值得注意的是solve函数针对的是方程equ,而fzero函数和fsolve函数针对的是函数fun,所以solve函数调用时需要利用syms 函数定义自变量x,而fzero函数和fsolve函数不需要syms定义自变量,可以是function编写的函数,也可以是匿名函数。
x=fzero(fun,x0)
其中fun是要求函数,x0是起始值,所代表的意思就是求出函数
fun距离x0最近的那一个零点,一个函数fun可能不止一个零点,但是fun函数只会给出距离x0最近的那个零点。
例1:求出函数发f(x)=sin x在3附近的零点,也就是sin x=0在3附近的解。
解:
运行以后得到结果:
fzero函数还可以求解在一段区间内函数的零点,
例2:求解函数f(x)=cos x在区间[1 2]内的零点。
解:
运行以后得到结果:
另外fzero函数求解的函数还可以是用function编写的函数文件:例3:求解函数f(x)=x3-2x-5在2附近的零点。
解:先编写一个函数文件,文件名要求和函数名相同。
保存该函数文件,并将文件名命名为f.m
在脚本文件中编写求解零点程序如下:
运行以后就可以得到f(x)在2附近的零点:
注意:fzero 函数求解函数零点原理是在一段区间内判断两个端点函数值是否异号,最后无限逼近零点,所以对于一个函数零点其两端不存在异号函数值时是求不出该函数零点的。例如用fzero 函数不能求出函数f (x )=x 2的零点0.
(二)、fsolve 函数求方程的数值解
fsolve 函数是比fzero 函数更为精确的函数,在应solve 函数求不出一些复杂函数的解时,考虑用fsolve 函数可以求出其数值解。其调用格式如下:
x =fsolve(fun,x 0)
例:求解下面方程组在x 1=0,x 2=0附近的解。
()
122211221(1)1cos()sin()2
x x e e x x x x x x -+-?=+??+=?? 解:先编写一个函数文件并保存,文件名和函数名一致
再在脚本文件中利用发solve 函数调用该函数就可求得解
运行以后得到结果如下:
总结:
对于线性方程组A x =b 形式可以直接利用左除法x =A\b 求解,也可以利用solve 函数来求解。 对于非线性方程中多项式方程,110n n n p x p x p ++++=L 可以利用roots 函数求解,但是未知数只有一个,也就是一元的多项式方程,配合sym2poly 函数和poly2sym 函数使用,poly 函数是和roots 函数相反功能的函数。
对于非线性方程的通解,含有符号常数的方程(组)或则一般方程(组)通解的求解利用solve 函数,当然也可以求解线性方程。 对于一个非线性方程零点的求解(数值解),(要求该零点左右两侧函数值异号),利用fzero 函数。
对于复杂非线性方程组的数值解,利用solve 函数和fzero 函数难以求解的方程(组)的数值解,利用fsolve 函数求解。
正在阅读:
Matlab解方程(方程组)04-27
8篇年度员工个人2022年工作总结08-02
支教收获总结文本参考04-25
《传播学教程》郭庆光 - - - - - 读书笔记10-30
长江三峡水利枢纽永久船闸、大坝和左岸电站厂房二期工程 - 之闸门控制系统 - 图文01-29
房屋买卖合同纠纷中诉讼时效抗辩的四种类型及裁判规则04-12
猪阉割11-09
表现性评价在历史教学中的应用04-24
党务工作者赴白色学习心得体会总结10-20
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 方程组
- 方程
- Matlab
- 东海大桥风电场项目介绍及可行性分析
- 新生儿科常见应急预案及流程
- 2019届高三生物二轮复习大题优练5含解析新人教版 9 7
- 良庆区职称论文发表-工业电气节能设计论文选题题目
- 无人机自动驾驶仪市场发展前景及投资可行性分析报告(2020-2026年)
- gri-206-anti-competitive-behavior-2016
- 2013吴起县中小学幼儿园校长副校长聘任公告
- 家具行业发展现状分析
- 人教版七年级下学期第二次月考数学试卷(含答案解析)
- 上海2020届奉贤区中考英语二模(含答案)
- 初中英语状语专项练习及答案
- 煤炭单位员工培训总结
- 巴黎老佛爷北站宜必思酒店(ibis Paris Gare du Nord La Fayette)
- xxx项目部节前安全检查汇报
- 施工现场的文明施工管理(正式)
- 七年级历史上册 第14课 匈奴的兴起及与汉朝的和战同步练习1 新人教版
- TED英语演讲:找工作面试为什么过不去
- 2018年民主生活会对照检查剖析材料范文汇编(共十篇)
- 河南省洛阳伊滨区第一高级中学2014-2015学年高二10月月考物理试题
- 3月全国计算机一级考试WPS模拟试题(一)