完全零基础自学matlab之百题训练 |
您所在的位置:网站首页 › MATLAB如何自学 › 完全零基础自学matlab之百题训练 |
题目:求解多项式函数的极值 以最高四次多项式函数为例,求解极值的思路如下: 1.首先是将用户所求的函数输入到计算机中,可以采取input来解决; 2.然后是求解此函数的导数,本题中,为了体现对function的运用,故而作者自己写了一个求解导数的function函数,命名为der_function(); 3.运用极值点导数为0的性质,运用上述的der_function()函数,寻找其为0或者接近零的时候的自变量取值; 4.进行了上述步骤之后,我们只是找到了驻值点,故而还需进行检验,即检验求得的导数为0的点究竟是极值点还是驻值点; clear all %获取多项式的系数 n1=input('一次方系数为 '); n2=input('二次方系数为 '); n3=input('三次方系数为 '); n4=input('四次方系数为 '); c=input('常数为 '); x1=input('自变量下限为 '); x2=input('自变量上限为 '); fprintf('your function is %ix+%ix^2+%ix^3+%ix^4+%i',n1,n2,n3,n4,c);
以上为第一部分,即获取用户所求函数的代码的实现,主要是用到来 input 和 fprintf 两个函数的 然后是第二部分,即求导数的实现,为了体现对function函数的应用,作者没有用 diff 的求导方式,而是利用导数的斜率定义,新建了一个function,通过求x点和x点附近一点之间的割线斜率来近似等于在x点的导数。 以下为function内容: function num=der_function (a,b,c,d,x) %依次为[一次方系数,二次方系数,三次方系数,四次方系数,变量]
y2=a*(x+0.00001)+b*(x+0.00001)^2+c*(x+0.00001)^3+d*(x+0.00001)^4;
y1=a*x+b*x^2+c*x^3+d*x^4;
num=(y2-y1)/0.00001; end 以上方法求导的精度在于0.0001这个数字,根据高等数学的知识,这个0.0001如果变得更小,比如0.0000001,那么最终求出来的导数就会更加精确,这里的精度当然是在允许的情况下越高越好。 接下来就需要来寻找导数为0的x值 %先找到所有导数接近0的x值 i=1; for(x=x1:0.001:x2) if(abs(der_function(n1,n2,n3,n4,x)-0)fun(num(m)-0.001))&(fun(num(m)) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |