[TOC]html
format 表示格式 help format 能够查询format帮助 format short 把输出的格式改成默认设置 format rat 显示为分数 format long e 显示长精确度并用科学计数法 format long 并无重计算,把显示数字的有效位5->15位 format compact/loose 紧凑/松散(默认)格式 roots(矩阵) 求多项式的根 solve()一般在不肯定方程是否有符号解的时候,优先使用 pretty()使结果已于观察 vpa(phi,50) vpa是可变精度算术函数,可获得任意位数数字的表达式 inline() 内联函数 ezplot(f,0,4) 轻松做图0<=x<=4 range的图像
求解方程一般有两种方法,符号求解solve()和数值求解。函数
一般在不肯定方程是否有符号解的时候,推荐先使用solve进行尝试,由于solve相比于数值求解来讲,它不须要提供初值,而且通常状况下可以获得方程的全部解。对于一些简单的超越方程,solve还可以自动调用数值计算系统给出一个数值解。 solve的调用形式:学习
sol=solve(eq) sol=solve(eq,var) sol=solve(eq1,eq2,…,eqn) sol=solve(eq1,eq2,…,eqn,var1,var2,…,varn)
eq为符号表达式,var为指定的要求解的变量。若是不声明要求解的变量(第一和第三种形式),则matlab自动按默认变量进行求解,默认变量能够由symvar (eq)肯定。 eg.x+y-1=0,x-11*y-5=0,求不等式ui
syms x y %声明符号变量 eq1=x+y-1 eq2=x-11*y-5 sol=solve(eq1,eq2,x,y) x=sol.x y=sol.y
然而在不少状况下solve并不能求得方程的解析解,这时就能够采用数值法求解。数值求解法包括fzero和fsolve,其区别在于fzero只适用求解一元函数零点,而fsolve适用于求解多元函数零点(包括一元函数)。当求解一元函数零点时,推荐优先使用fzero,缘由是fzero求解一元方程每每更容易,由于它不只支持提供初值的搜索,还支持在一个区间上进行搜索。 fzero的经常使用形式:spa
x = fzero(fun,x0) [x,fval] = fzero(fun,x0)
其中fun为函数句柄,x0为搜索初值,fval为求解偏差。 eg.以一元方程sin(x)+cos(x)^2=0为例:code
y=@(x)sin(x)+cos(x).^2 %这里采用匿名函数,也能够使用函数文件形式 [x,fval]=fzero(y,1) %1为搜索初值
若是方程有多个零点时,fzero只能根据你提供的初值求得最靠近初值的一个零点,若是但愿求得多个零点的话,那么只可以经过改变初值来获得不一样的零点。 对于零点的选取,目前来讲没有什么比较好的办法,只可以经过分析方程的性质,或者经过做图的方法去寻找一个比较靠近零点的初值。另外,fzero可以提供区间搜索,注意区间两端的端点函数值符号须要反向:orm
y=@(x)sin(x)+cos(x).^2 [x,fval]=fzero(y,[-1 1]) %fzero在[-1,1]这个区间搜索初值
除此以外,fzero还可以求解积分方程htm
fsolve能够求解多元方程,用法和fzero相似。 fsolve的经常使用形式:blog
x = fsolve(fun,x0) [x,fval] = fsolve(fun,x0)
其中fun为函数句柄,x0为搜索初值,fval为求解偏差 例:求解方程组x+y=1, x-11y=5get
eq=@(x)[x(1)+x(2)-1;x(1)-11*x(2)-5] [sol,fval]=fsolve(eq,[1,1])
这里对于方程的的输入须要采用矩阵的形式,其中x(1)表明x,x(2)表明y。有时候变量较多时可能会容易混淆,这里提供另外一种方法,采用符号变量形式再利用matlabFunction转化为函数句柄:
syms x y eq1=x+y-1 eq2=x-11*y-5 eq1=matlabFunction(eq1); %将符号函数转化为函数句柄 eq2=matlabFunction(eq2); eq=@(x)[eq1(x(1),x(2));eq2(x(1),x(2))] [sol,fval]=fsolve(eq,[1,1])
效果与以前相同,但不容易出错。求得的解以矩阵形式返回给sol,即sol的第一个值是匿名函数的第一个输入参数值x,sol的第二个值是匿名函数的第二个输入参数值y。
原文出处:https://www.cnblogs.com/yanshanbei/p/11592234.html