MATLAB多项式函数及方程求根及绘图 |
您所在的位置:网站首页 › matlab画复数图像 › MATLAB多项式函数及方程求根及绘图 |
一、多项式函数
多项式的构造
向量 [ a , b , c , d ] 表示的多项式为: poly函数的两种用法: P = ploy(r):以向量 r 内的元素为根,返回多项式的系数P = ploy(A):返回矩阵 A 的特征多项式 如果紧接着 roots(P) 的话可以得到矩阵 A 的特征值,与 eig(A) 等价poly2str函数:poly2str(p,自变量):返回多项式的字符串形式,例:poly2str( [ 1 0 0 ] , ' x '),程序输出 ' x^2 ' 多项式求值polyval函数:polyval(p,x):返回多项式的自变量为 x 时的值 多项式求导 y = polyder(p):求多项式 p 的导数y = polyder(a,b):求多项式 a 和 b 乘积的导数[ x , y ] = polyder(a,b):求多项式 a 除以 b 的导数注意:当ployder的参数为两个时,返回值用一个接住和两个接住的含义是完全不一样的 多项式求积分 y = polyint(p):求多项式 p 的不定积分y = polyint(a,b):求多项式 a 和 b 乘积的不定积分 多项式求解roots函数:sol = roots(多项式系数),sol 为解向量,多项式系数用一个向量表示 二、方程求根 一、方程的符号解 1.一个方程的情况求方程 solve函数:solve(f, x):对变量x解方程f=0 函数f定义方式:匿名函数或符号函数 例1:求方程 2x^2-3x-8=0 的根 m=solve(@(x)2*x^2-3*x-8); %匿名函数 syms x %符号函数 m=solve(2*x^2-3*x-8,x);补充:因为solve函数求出的是符号解,所以可以利用vpa函数将其转换为数值解: vpa( x , y ):显示 x 的 y 位,如 vpa( pi , 3 ) = 3.14 例2:已知 例3:解方程组 对于具有多个解的非线性方程一般采用数值解而不是符号解 二、方程的数值解 1.一般非线性函数的求根fzero函数: [x,f]=fzero(@fun, x0); %求x0附近的根[x,f]=fzero(@fun, [a, b]); %求区间[a,b]上的根,要求两端函数值异x :f( x ) = 0 时的 x f :f( x ) 的值 例4:求方程sin(x)-cos(x)=0 在[0,/2]上的根 [x,f]=fzero(@(x)(sin(x)-cos(x)),[0,pi/2])还可以解带参数的方程: 例5: 求方程x-sin(x)+k 的根,k=1,2,…,10 a=1:10; for k=a y(k)=fzero(@(x)(x-sin(x)+k),1); end plot(a,y,'*') xlabel('a') ylabel('root')配合ginput函数,先画出函数图,再用ginput函数获取根的大概位置,最后用fzero求解 例6:求方程 画图: x=0:pi/50:2*pi; y=x.*sin(x)+2*x.*sin(2*x)+3*x.*sin(3*x)+4*x.*sin(4*x)+5*x.*sin(5*x)-10; plot(x,y,x,0) hold on line([0,8],[0,0],'color','r');然后用ginput取点 [x,y]=ginput(1);最后用fzero求解 [r,fval]=fzero(@(x) x.*sin(x)+2*x.*sin(2*x)+3*x.*sin(3*x)+4*x.*sin(4*x)+5*x.*sin(5*x)-10,3.9); 2.一般非线性方程组求根求解非线性方程组的matlab函数为fsolve,调用格式为 x=fsolve(fun, x0); %x0为一个向量,有 n 个未知量就需要一个 n 维的向量 其中x0为初始值 注意:和求解非线性方程一样,如果非线性方程组有多个根,调用fsolve只能求出其中的一个。求出的是哪一个依赖于初始值的选取。 例:求非线性方程组 解:首先画出曲线: h=ezplot(@(x,y) (x.^2.*cos(pi*x)+y.^2.*sin(pi*y)-pi/2),[-3,3,-3,3]) str1=get(get(gca,'Title'),'String') set(h,'Color',[1 0 0],'LineStyle',':') hold on h1=ezplot(@(x,y)(x.^2+y.^2+2*sin(2*x.^2.*y).^2-4),[-3,3,-3,3]) str2=get(get(gca,'Title'),'String') title([str1,',',str2]) grid on然后利用ginput函数读取10个点作为初始值,利用fsolve函数解得解向量 [x, y]= ginput(10); X=[x;y]; m=length(x); r=zeros(2,m); for k=1:m r(:, k)=fsolve(@solfun, X(:,k)); % numerical solution of the given fun. end plot(r(1,:),r(2,:),'ko') function f=solfun(x) f=[x(1).^2.*cos(pi*x(1))+x(2).^2.*sin(pi*x(2))-pi/2,x(1).^2+x(2).^2+2*sin(2*x(1).^2.*x(2)).^2-4]; end 三、函数的绘图常用函数如下: ezplot:绘制二维平面图ezplot3:绘制三维立体图ezmesh、ezsurf:绘制网格图ezcontour:绘制等高线图 1.显函数绘图:ezplot(fun)或ezplot(fun, [xmin, xmax]),其中fun可以是句柄函数,也可以是匿名函数,如 @sin@(x) sin(x).*cos(x) ‘sin’ 2.隐函数绘图:隐函数的表示形式为:F(x,y)=0 相应的绘图函数为: ezplot(@(x,y) F(x,y))ezplot(@(x,y) F(x,y),[xymin,xymax])ezplot(@(x,y) F(x,y),[xmin,xmax,ymin,ymax] 3.参数方程和极坐标方程 (1)参数方程曲线作图 ezplot(@(t)f(t), @(t)g(t))ezplot(@(t)f(t), @(t)g(t),[tmin,tmax])例:ezplot(@(x)sin(x).^3,@(x)cos(x).^3,[0,2*pi]) (2)极坐标曲线作图ezpolar(@(t)g(t)) 例:ezpolar(@(x)sin(3*x)) (3)空间曲线作图ezplot3(@(t)f(t),@(t)g(t),@(t)h(t),[tmin,tmax]) 例:ezplot3(@(t)cos(t),@(t)sin(t),@(t)t,[0,10*pi]) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |