Professional Documents
Culture Documents
最优化作业1 21215764 郭洁榕
最优化作业1 21215764 郭洁榕
代码及说明:
//######################################################################
//中山大学航空航天学院
//最优化作业习题第二单元
//======================================================================
//姓名: 郭洁榕
//邮箱: guojr26@mail2.sysu.edu.cn
//日期: 2022 年 6 月 13 日
//######################################################################
#include <iostream>
#include<cmath>
using namespace std;
int num = 0;
//提示函数定义
void show()
{
cout << "请选择您要计算的题目:" << endl;
cout << "1:exp(-x) + x * x" << endl;
cout << "2:x * x - x - 1" << endl;
cout << "3:x * x * x - 2 * x + 1" << endl;
cout << "按 0 退出" << endl;
}
//f 函数定义
double f(double x)
{
if (num == 1)
{
return exp(-x) + x * x;
}
else if (num == 2)
{
return x * x - x - 1;
}
else if (num == 3)
{
return x * x * x - 2 * x + 1;
}
}
//golds 函数定义
double golds(double a, double b, double x1, double x2, double epsilon)
{
double y1 = f(x1);
double y2 = f(x2);
//主函数
int main()
{
while (true)
{
show();
cin >> num;
//输入参数
double a, b, epsilon;
cout << "请输入端点 a:" << endl;
cin >> a;
cout << "请输入端点 b:" << endl;
cin >> b;
cout << "请输入精度 epsilon:" << endl;
cin >> epsilon;
}
数值实验结果:
由数值实验结果可知
1:e-x+ x2
在[0.1]区间,精度 epsilon=0.01(<0.2)时的最小值在 x=0.351153 取得,此时 y=0.827184
2:x 2 - x – 1
在[0.1]区间,精度 epsilon=0.05 时的最小值在 x=0.502219 取得,此时 y=-1.25
3:x 3 - 2 x + 1
在[0.3]区间,精度 epsilon=0.15 时的最小值在 x=0.810537 时取得最小值,此时 y=-0.0885753
准确度验证
得到函数图形及最小值如下图所示:
图 习题 2.1
图 习题 2.2
图 习题 2.3