睡前一小时数学之导数的学习与证明

导数:我们简单的可以理解成 对于一个函数  f(X)  整体的变化趋势的一种规律。而这里的导数是一种函数。函数的导数又名导函数。

用变化率来说直白一点: 设函数y=f(X)  而我们的变化率就是这个样子的。而我们的导数,就是将变换量无限的缩小无限的缩小。无限趋近为0。用于物理来讲就是瞬时速度变化率。

说白了就是一种引入到函数里的变化率的一种概念。

而我们这里讲解一种最基础的已知函数F(X)=Xn 求出它的导函数。

恩。不对。讲之前我们还要引入一个全新的概念: 二项式定理。

以下为证明过程。

已知 -------式子1

假设x变化量为 Δx

可得:

将右边拆开:

可得出: -------式子2

我们之后利用之前讲过定义式

之后我们将这个式子2拆出个xn

我们可以令i=0 就可得出

我们就可的出 -----式子3

将式子3-式子2 可得出:

===> -4

而我们再运用定义式将式4带入:

==> ---5

之后我们发现如果将Δx趋近于0 Δx的指数可以为1 其中有一项是不受Δx大小所控制的,我们将它提出。

可得 ----6

我们将Δx趋近于0 可以发现。式子便可以简单的整理为

于是 证明就结束了。

而多项式的导数,其实就是将每一项都求导,便可得出整个式子的导数。。

就是这样。

 

接下来是一道非常神奇的题目:

input:

 

output:

输入1:
3
-2 5 -4 1
输入2:
4
8  -20 18 -7 1
输入3:
2
2 -3 1


输出1:1 1 2
输出2:1 2 2 2
输出3 :1 2

 

而这道题其实是用导数来判断重根。。题目中的解可以暴力枚举。就20个。但是重根是没有办法枚举的。。当然这道题可以用多项式除法来解决。不过。我到觉得,这个求导写起来很简单。

具体为什么能用导数求解呢?这个这里无法给出证明提供一个文献:

导数在求方程重根中的应用

具体过程如下:

我们先暴力枚举出一个可行根。之后将整个多项式求导,如果这个可行根又是 求导后的式子 的可行根,说明这个根为重根。而我们可以继续往下将求导后的式子继续求导,继续判断是否为可行根,直到这个可行根不再是 某个多阶导的可行根。就可以停止,求了几次导,就有原式中可行根这个数的几个重根。而我们就可以:以递归的形式呈现出来。之后这个实现倒是很简单。计算系数就好。

其实我个人觉得就是如果在图像中。对此函数求导后 这个根的趋势,依然为0 (即趋势为没有变化),那将图像无限放大,无限放大。就可以发现 。这几个根就重合在此点上。而趋势却是很小。而每一次求导就可以发现这个趋势上的趋势上的这个根的趋势。 此段为本人意淫,没有什么根据。可以选择不看。

对了。还有就是。不开long long 见祖宗 十年OI一场空。

 

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string.h>
using namespace std;
int line[10],line_1[10];
int n;
int visit[30];
int DFS(int k,int a)
{
	int step=k;
	long long int ans=0;
	for(int i=0;i<=n;++i)
	{
		if(step){
			line_1[i]*=step;
			ans+=(line_1[i]*pow(a,step-1));
			step--;
		}
		else break;
	}
	if(ans==0)
	{
		visit[a]++;
		DFS(k-1,a);
	}
	return 0;
}
int main()
{
	//freopen("equation.in","r",stdin);
	//freopen("equation.out","w",stdout);
	scanf("%d",&n);
	for(int i=n;i>=0;--i)scanf("%d",&line[i]);
	for(int a=1;a<=20;++a)
	{
		long long int  ans=0;
		int step=n;
		for(int i=0;i<=n;++i)
		{
			ans+=(line[i]*(pow(a,step)));
			step--;
		}
		if(ans==0){
			visit[a]++;
			memcpy(line_1,line,sizeof(line));
			DFS(n,a);
		}
	}
	for(int i=1;i<=20;++i)
	{
		if(visit[i])
		{
			while(visit[i]--)
			{
				printf("%d ",i);
			}
		}
	}
	//fclose(stdin);
	//fclose(stdout);
	return 0;
}

最后声明: 此博客 博主只是初学此内容所写下的博文。可能内有瑕疵与错误 往大家指出与改正。共同学习。非常感谢。

posted @ 2016-10-31 21:52  刺猬的玻璃心碎了  阅读(1464)  评论(2编辑  收藏  举报