三分法(例题)

Compared to wildleopard's wealthiness, his brother mildleopard is rather poor. His house is narrow and he has only one light bulb in his house. Every night, he is wandering in his incommodious house, thinking of how to earn more money. One day, he found that the length of his shadow was changing from time to time while walking between the light bulb and the wall of his house. A sudden thought ran through his mind and he wanted to know the maximum length of his shadow.

 

Input

 

The first line of the input contains an integer T (T <= 100), indicating the number of cases.

Each test case contains three real numbers H, h and D in one line. H is the height of the light bulb while h is the height of mildleopard. D is distance between the light bulb and the wall. All numbers are in range from 10-2 to 103, both inclusive, and H - h >= 10-2.

 

Output

 

For each test case, output the maximum length of mildleopard's shadow in one line, accurate up to three decimal places..

 

Sample Input

3
2 1 0.5
2 0.5 3
4 3 4

Sample Output

1.000
0.750
4.000

 

 

#include<stdio.h>
#define eps  1e-6
#define ll long long
using namespace std;
double H,h,d;
double f(double pos)
{
    return pos+(H*pos-h*d)/(pos-d);//推出的公式:相当于一个 x+一个关于x的函数,通过三分对x进行遍历。
}
double solve(double l,double r)
{
    double mid,midmid;
    while(r-l>=eps)                直到l,和r足够小 即自变量的左右端点可以看作重叠时 可理解为全部遍历完了 (背过这段代码)
    {
        mid=(l+r)/2.0;
        midmid=(r+mid)/2.0;
        if(f(mid)>f(midmid))
        {
            r=midmid;
        }
        else
            l=mid;

    }
    return f(l);
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        double ans=0;
        scanf("%lf%lf%lf",&H,&h,&d);
        ans=solve(0,d*(h/(H*1.0)));//第一次三分时 自变量的取值范围
        printf("%.3lf\n",ans);
    }
    return 0;
}

 

<think>好的,我现在需要帮用户找到关于梯度下降法的例题或练习题,尤其是在机器学习中的应用。用户明确提到了“梯度下降法示例题目”和“机器学习练习题”,所以我需要结合这两个方面来提供相关的题目和解答。 首先,我得回忆梯度下降法的基本原理,确保题目能覆盖关键点,比如参数更新、损失函数计算、学习率的影响等。然后,参考之前提供的引用内容,特别是引用[3]和[4],里面提到了梯度下降的核心思想、方向选择以及计算梯度的步骤。另外,引用[5]提到吴恩达的练习题,使用线性回归的例子,这可能是一个好的例题来源。 接下来,我需要设计或挑选几个典型的例题。线性回归是最常见的应用场景,所以第一个例题应该用线性回归的例子,比如单变量线性回归,让用户手动计算梯度下降的步骤。这可以帮助用户理解参数更新过程。第二个例题可以涉及多元线性回归,可能引入正规方程作为对比,这样用户可以看到梯度下降和解析解的不同。第三个例题可以探讨学习率的影响,比如设置过大或过小的学习率,观察收敛情况,这样用户能理解学习率调整的重要性。第四个例题可以结合逻辑回归,因为分类问题也是机器学习中的常见应用,同时能练习不同的损失函数。 在编写每个例题时,需要确保数学表达式正确,按照用户的要求使用$...$和$$...$$格式。例如,线性回归的损失函数是均方误差,应该用LaTeX正确表示。参数更新规则也要明确写出,包括同时更新参数。同时,每个例题后要有分步解答,引导用户一步步计算,尤其是在计算梯度和参数更新时。 另外,用户可能需要相关的练习题来巩固知识,所以除了例题之外,还需要提供几个练习题,让用户自己尝试,比如不同初始点、不同学习率的影响,或者扩展到其他模型如多项式回归。这样用户可以在不同场景下应用梯度下降法。 还要注意引用相关的参考资料,比如引用[3]和[4]中的内容,说明梯度下降的方向选择和计算步骤。同时,引用[5]中的吴恩达练习题作为例题的参考来源,增加答案的可信度。 最后,检查是否符合用户的所有要求:使用正确的中文回答,结构清晰,例题和练习题分明,数学格式正确,引用适当。确保所有公式都正确无误,解答步骤详细,帮助用户逐步理解梯度下降法的应用。</think>以下是为您整理的梯度下降法典型例题及练习题,结合机器学习应用场景: ### 梯度下降法例题解析 #### 例题1:单变量线性回归 **问题描述**:给定数据集$(x,y)=[(1,2),(2,4),(3,6)]$,使用梯度下降法求解线性回归模型$h_w(x)=w_0 + w_1x$。初始参数$w_0=0$, $w_1=0$,学习率$\alpha=0.1$,进行2次迭代。 **分步解答**: 1. 损失函数(均方误差): $$ J(w_0,w_1) = \frac{1}{2m}\sum_{i=1}^m (h_w(x^{(i)}) - y^{(i)})^2 $$ 2. 参数更新规则: $$ w_j := w_j - \alpha\frac{\partial J}{\partial w_j} \quad (j=0,1) $$ 3. 第一次迭代计算: - 计算预测值:$h_w(1)=0$, $h_w(2)=0$, $h_w(3)=0$ - 计算梯度: $$ \frac{\partial J}{\partial w_0} = \frac{1}{3}(0-2+0-4+0-6) = -4 \\ \frac{\partial J}{\partial w_1} = \frac{1}{3}(0·1-2·1 + 0·2-4·2 + 0·3-6·3) = -9.333 $$ - 更新参数: $$ w_0 = 0 - 0.1×(-4) = 0.4 \\ w_1 = 0 - 0.1×(-9.333) = 0.933 $$ (完整解答需继续第二次迭代)[^3][^4] #### 例题2:多元线性回归 **问题**:给定特征矩阵$X=[[1,2],[1,3],[1,4]]$,目标值$y=[5,7,9]$,初始参数$\theta=[0,0]^T$,学习率$\alpha=0.01$,计算第一次迭代后的参数值。 **提示**:使用向量化计算梯度: $$ \nabla_\theta J = \frac{1}{m}X^T(X\theta - y) $$ #### 例题3:学习率影响分析 **问题**:使用不同学习率$\alpha=0.001, 0.1, 1$时,分析梯度下降在$f(w)=w^2$上的收敛情况,初始点$w=2$。 **关键步骤**: 1. 迭代公式:$w := w - \alpha(2w)$ 2. 分析结果: - $\alpha=0.001$:缓慢收敛 - $\alpha=0.1$:正常收敛 - $\alpha=1$:在$w=2$和$w=-2$之间震荡[^4] ### 梯度下降法练习题 1. 对于函数$f(w)=w^4-3w^3+2$,初始点$w=4$,学习率$\alpha=0.01$,手动计算前3次迭代过程 2. 使用梯度下降法求解逻辑回归问题,数据集: ``` X = [[1], [2], [3]] y = [0, 0, 1] ``` 损失函数为交叉熵损失: $$ J(w) = -\frac{1}{m}\sum y_i\ln(\sigma(wx_i)) + (1-y_i)\ln(1-\sigma(wx_i)) $$ 其中$\sigma(z)=1/(1+e^{-z})$ 3. (进阶)比较梯度下降与正规方程在多项式回归中的计算效率,当特征维度$n=1000$时,哪种方法更优? ### 关键知识点提示 - 梯度下降每次迭代需同时更新所有参数[^4] - 学习率过大可能导致震荡,过小则收敛缓慢[^3] - 批量梯度下降与随机梯度下降的区别在于每次使用的样本数量[^1] - 特征缩放可以加速梯度下降收敛[^5] 需要具体某道题的完整解答,可以告知题号为您详细展开。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值