MATLAB新手简明使用教程(七) |
您所在的位置:网站首页 › matlab函数求导并画图 › MATLAB新手简明使用教程(七) |
前期回顾
上一期中,我们学了下面的知识: 定积分的基本概念和一些简单的几何意义。使用 int 函数计算不定积分。使用 int 函数计算定积分。 本期内容本期我打算给大家介绍一下使用matlab对多项式进行的一些基本运算,如求根、求导、四则运算等或者还有其他一些简单的数据分析的内容。 正文开始 多项式及其建立在运算中我们经常接触到的就是所谓的多项式,比如很常见的一个多项式: 这里我们就说这是一个x的多项式,最高次是2次,常数项是3,二次项的系数是1,一次项的系数是2,相信这些大家都知道,就不再赘述了。 那么在matlab中,如何建立一个多项式呢? 通过系数建立多项式如果在演草纸上,我们需要进行如下的步骤: 确定最高次项是几次。确定各个次项的系数。常数项是多少。确定了上面的东西,就基本上可以确定一个多项式了,为了方便,我们使用程序表示这样一个多项式: PS: 如果需要定义一个特殊的函数比如 上面的程序运行结果如图所示: 假设现在已有方程根: 运行结果如图(我还不知道有没有可能求不出来这个对应方程,没试过哈哈哈哈,我猜应该是只要给出一套根,总能给出一个对应方程吧): 求导即求多项式的导数,一般来讲,习惯上我们把 y = y(x) 对x求导函数直接简称为求导了,但是,我们求导时,一定要明确谁在对谁求导!!!在下文中,不做特殊说明的话,我们默认因变量是y,自变量是x,求导默认为 y对x求导,即求 PS: 此部分是关于导数的一些基础知识,有相应基础的可以跳过,CSDN右边有目录结构,可以直接根据标题跳转。 导数,在某种程度上,我们可以理解为变化率,即 y 随着 x 的变化而变化的幅度、大小、快慢等,举个例子,我说我的速度是匀速,60km/h(60千米每小时),此时:自变量(x)是时间,因变量(y)是速度,我们可以很清楚的知道,我的速度是匀速(60km/h),所以我的速度(y)不随着时间(x)的变化而变化,所以我的速度变化率是0,所以此时 下面假设我的速度不再是匀速,而是慢慢变快的,但是加快的速度是恒定的,都是每分钟加10km/h,比如刚起步是0,一分钟后是10km/h,两分钟后是20km/h.。。。。。类推,此时我们知道,我的速度(因变量y)随着时间(自变量x)是在慢慢改变的(并且还是均匀改变的),所以此时有一个变化率,即 10km/h/min,就是每分钟改变 10km/h的速度,(大家不用理会单位,这个不重要,重要的是知识点),在图形中是这样表示的: 在红色的图形中,就可以看到上面的变化的速度的例子。那么求导数就可以理解为是反映这个变化率的一个方式。 一些基本知识点(u和v都是x的函数,即 u = u(x), v = v(x)。): 常数导数为0;(即变化率为0,不改变)多项式求导公式:理解上述知识点应该就可以理解今天的内容了,如果有什么不懂的,欢迎大家留言或者私信!。 使用matlab进行求导 代码如下: clc; clear; %% 对多项式进行求导 p = [4 3 2 1 1]; %建立我们的多项式 y = poly2sym(p); %得到多项式的符号变量 temp_str = sprintf('得到多项式:\ny = %s', y); %将式子格式化到一个字符串中 disp(temp_str); %显示 p_1 = polyder(p); %求一次导,注意polyder求导传递的是p而不是y y_1 = poly2sym(p_1); %转化为符号变量 temp_str = sprintf('求导结果是:\ny_1 = %s\n求导后系数是:[%d %d %d %d]', y_1, p_1); disp(temp_str);运行结果如图所示: y_1中的常数1来自于y中的x求导,y中的1求导后成为了0,就没了。 那么,这仅仅是一个多项式求导,乘积求导、商求导,请继续往下看: 乘积求导: %% 乘积求导 clc; clear; p_1 = [4 4 2]; p_2 = [2 4 5]; % 随意胡诌几个数 y_1 = poly2sym(p_1); y_2 = poly2sym(p_2); % 转化为符号变量 temp_str = sprintf('原来的两个函数为:\n 1. y_1 = %s\n 2. y_2 = %s', y_1, y_2); disp(temp_str); res_p = polyder(p_1, p_2); % 乘积求导后的系数 res_y = poly2sym(res_p); %转化为符号变量 temp_str = sprintf('结果为:y = %s', res_y); disp(temp_str);运行结果如图所示: 商求导: 这个部分比较麻烦,商求导后返回值是有两个,因为很有可能出现求导后还是分数的形式,所以返回值是一个分子、一个分母,代码如下: %% 商求导 clc; clear; p_1 = [4 4 2]; p_2 = [2 4 5]; % 随意胡诌几个数 y_1 = poly2sym(p_1); y_2 = poly2sym(p_2); % 转化为符号变量 temp_str = sprintf('原来的两个函数为:\n 1. y_1 = %s\n 2. y_2 = %s', y_1, y_2); disp(temp_str); [res_p_Num, res_p_Den] = polyder(p_1, p_2); % 注意此处,与乘积求导几乎一样,只是返回值不同, % 前面的是分子,后面的是分母 res_y_Num = poly2sym(res_p_Num); res_y_Den = poly2sym(res_p_Den); %转化为符号变量 temp_str = sprintf('结果为:y = (%s)/(%s)', res_y_Num, res_y_Den); disp(temp_str);在商求导这个地方,所需要修改的仅仅是返回值而已,其他的地方几乎与乘积求导一致,还是很方便的。 运行结果如图所示: 今天我们学习了如下内容: 在matlab中使用已知系数、已知根简历方程多项式的方法。求导的浅薄的基本概念。在matlab中对多项式求导的一些函数,包括一些典型的求导类型:乘积求导、商求导等。那么今天就介绍到这里!谢谢大家观看!如果有疑问,欢迎大家评论留言! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |