学习目标:
1.了解最优化算法
2.深刻理解优化算法的思想
3.掌握和应用常用最优化算法
学习内容:
1.什么是最优化算法
2.一维搜索算法
3.各种插值法
学习产出:
一、优化的核心:不断在一定规则内逼近、不断在一定规则内迭代
二、插值与拟合
插值:通过已知离散的数据点,推算新的数据点
在选择适当的算法时需要考虑的一些问题是:方法有多准确? 它的计算成本有多高? 插值有多平滑? 需要多少数据点?
拟合:把已知离散的数据点集变成连续的函数或者更加更密集的离散点集,已达到和已知数据吻合的效果
三、二分思想与牛顿迭代的简单应用
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//二分法的简单应用
double erfenfa(int n);
double newton(int n);
int main()
{
int n;
scanf("%d",&n);
//printf("%f\n",erfenfa(n));
printf("%f\n",newton(n));
system("pause");
return 0;
}
double erfenfa(int n)
{
double start = 0;
double end = n/2.0;
double result = n/2.0;
double jingdu = 0.00001;
double t = result*result - n;
if( t < jingdu ) return result;
while(t > jingdu)
{
if(t > 0)
{
end = result;
result = (start+result)/2;
}
else
{
start = result;
result = (end+result)/2;
}
t = result*result - n;
}
return result;
}
double newton(int n)
{
double result = 1.0; //迭代初始值
double eps = 0.00001;
double tmp = result*result - n;
while(abs(tmp) > eps) {
//牛顿迭代公式
result = 0.5 * (result + (n / result));
tmp = result*result - n;
}
return result;
}
四、泰勒展开与牛顿迭代的渊源