一元二次函数的最值计算

主程序:

#include<iostream>
#include"1.1 hanshu.h"
using namespace std;

/*
设计一个类,该类可以表示一个一元二次函数。
1.该类数据成员包括:函数的参数、变量的取值区间、函数在该区间内的最大值和最小值。
2.该类成员函数包括:求最大值、求最小值。
3.编写一个主程序,能够根据所设计的类定义一元二次函数对象,调用成员函数,分别实现最大值和最小值的计算。
*/

int main()
{
    double a, b, c, m, n;
    cin >> a >> b >> c >> m >> n;
    hanshu s(a, b, c);
    s.maximum(m, n);
    s.show();

    return 0;
}

头文件:

#pragma once
#include<iostream>
using namespace std;

class hanshu
{
public:

    hanshu(double aa, double bb, double cc);//构造函数

    void maximum(double m, double n);//求最大值、求最小值的函数

    void show();//展示函数

private:
    double a, b, c;//函数的参数
    double m, n;//函数的定义域(取值区间)
    double max, min;//最大值与最小值
};

类的内容:

#include"1.1 hanshu.h"

hanshu::hanshu(double aa, double bb, double cc) :a(aa), b(bb), c(cc) {}//构造函数的实现

void hanshu::show()//展示函数的实现
{
    cout << "最大值为:" << max << endl;
    cout << "最小值为:" << min << endl;
}

void hanshu::maximum(double m, double n)//求最大值、求最小值函数的实现
{
    double e = (-b) / (2 * a);
    double ym = a * m * m + b * m + c;
    double yn = a * n * n + b * n + c;
    double h = (-b * b) / (4 * a) + c;
    if (a > 0)
    {
        if (e >= m && e <= n)
        {
            min = h;
            if (ym > yn)
            {
                max = ym;
            }
            else
            {
                max = yn;
            }
        }
        else if (e >= n)
        {
            max = ym;
            min = yn;
        }
        else if (e <= m)
        {
            max = yn;
            min = ym;
        }
    }
    else if (a < 0)
    {
        if (e >= m && e <= n)
        {
            max = h;
            if (ym > yn)
            {
                min = yn;
            }
            else
            {
                min = ym;
            }
        }
        else if (e >= n)
        {
            max = yn;
            min = ym;
        }
        else if (e <= m)
        {
            max = ym;
            min = yn;
        }
    }
    else
    {
        if (b > 0)
        {
            max = yn;
            min = ym;
        }
        else if (b < 0)
        {
            max = ym;

            min = yn;
        }
        else
        {
            max = c;
            min = c;
        }
    }
}

实验案例:

 要点讲解:

1.以上代码使用的是类的分文件编写,运用了构造函数,使得在定义对象的时候可以附上对应的值。

2.一元二次函数的最值判断需要5个参数,分别是a,b,c,m,n,其中abc是定义一元二次函数的参数,m和n分别是取值范围的左右区间。

3.对此代码中所有变量的属性,建议统一使用double或float类型,原因在于即使输入的参数全为整数,结果的数字也有小数的可能,为了计算准确,建议使用浮点型进行编写。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值