解题报告_18.6.1_POJ_1905_0

本文介绍了一种计算温度变化导致杆件变形的方法。通过输入杆件原始长度、温度变化值及材料热膨胀系数,利用数值逼近算法计算出杆件中心因热胀冷缩而产生的位移距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:https://blog.youkuaiyun.com/lyy289065406/article/details/6648562

#include<iostream>  
#include<math.h>  
#include<iomanip>  
using namespace std;  
  
const double esp=1e-5;   //最低精度限制  
  
int main(void)  
{  
    double L,n,c,s;   //L:杆长 ,n:温度改变度 , c:热力系数  ,s:延展后的杆长(弧长)  
    double h;    //延展后的杆中心 到 延展前杆中心的距离  
    double r;   //s所在圆的半径  
  
    while(cin>>L>>n>>c)  
    {  
        if(L<0 && n<0 && c<0)  
            break;  
  
        double low=0.0;    //下界  
        double high=0.5*L; //  0 <= h < 1/2L   (1/2L并不是h的最小上界,这里做一个范围扩展是为了方便处理数据)  
  
        double mid;  
        s=(1+n*c)*L;  
        while(high-low>esp)  //由于都是double,不能用low<high,否则会陷入死循环   
        {                    //必须限制low与high的精度差  
            mid=(low+high)/2;  
            r=(4*mid*mid+L*L)/(8*mid);  
  
            if( 2*r*asin(L/(2*r)) < s )     //h偏小  
                low=mid;  
            else       //h偏大  
                high=mid;  
        }  
        h=mid;  
  
        cout<<fixed<<setprecision(3)<<h<<endl;  
    }  
    return 0;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值