POJ——1045(2011-04-23)
来源:互联网 发布:php md5 编辑:程序博客网 时间:2024/05/16 07:42
Description
考虑下面的交流电路。假定电路在稳态。因此,节点1的电压和节点2的电压分别是v1 = VS coswt 和 v2 = VRcos (wt + q),其中Vs是电源电压,w是频率(弧度每秒),t是时间。VR是电阻R两端电压下降的幅度,q是它的相位。
你需要写一个程序,以确定不同的w对应的VR值。您将需要两个电学定律来解决这个问题。第一个是是欧姆定律,表述为V2 = iR,其中i是在电路顺时针流向的电流大小。第二个是i = C d/dt (v1-v2),i与电容器两板上的电压有关。"d/dt" 意为求关于t的求导。
Input
输入包括一行或多行。第一行包括三个实数和一个非负整数。实数按顺序是VS,R,C。整数n是测试用例的个数。接下来的n行就是输入,要求一行一个实数,代表w的值。
Output
输出n行的VR值,注意,结果精确到小数点后三位。下面需要推导一下求VR的公式:
V2=iR=CR d/dt (VS*cos(wt)-VR*cos(wt+q))=V1=VRcos(wt+q)
--->CR w (VRsin(wt+q)-VSsin(wt))=VRcos(wt+q)
首先令t=0,得CRw tan q = 1 ;(式1)
接着令wt+q=0(此时wt=-q),得VR=CRw VS sin q;(式2)
然后利用三角函数公式,由tan q求得sin q,将sin q 代入式 2求得 :
VR = CRw VS / sqrt (1+ (CRw) ^ 2 ));
代码:
#include <iostream>
#include <cmath>
#include <iomanip>//用到setiosflags(ios::fixed)和setprecision(3)时要包含该头文件
using namespace std;
int main()
{
double vs,r,c,w,vr;
int n,i;
cin>>vs>>r>>c>>n;
for(i=1;i<=n;i++)
{
cin>>w;
vr=c*r*w*vs / sqrt(1+c*c*r*r*w*w);
cout<<setiosflags(ios::fixed)<<setprecision(3)<<vr<<endl;
//虽然他要求输出是N行,但这样一行输入对应一行输出貌似也可以
}
return 0;
}
- POJ——1045(2011-04-23)
- POJ—2253(Frogger)
- ACM——POJ 3295 (Tautology)
- POJ ——1465(宽度搜索)
- POJ——1979(深搜)
- POJ——3278(宽搜)
- POJ——2488(深度搜索)
- POJ——2635(数论)
- POJ——2249(组合数学)
- POJ——2488(深搜)
- POJ——2251(宽搜)
- POJ——1753(枚举)
- POJ——1328(贪心)
- POJ——1786(模拟)
- POJ——1221(dp)
- poj——1019(数学)
- poj——1080(dp)
- POJ——多项式加法(AC)
- Debian(Ubuntu) dpkg和apt
- GCC's bacl-end & assemble emission (8)
- vrml
- 日志中的HTTP状态码都代表什么?
- Android的设置界面及Preference使用
- POJ——1045(2011-04-23)
- STL vector用法介绍
- Oracle DBLink
- 拿什么迎接世界读书日
- assert() 函数用法
- C#调用C++的DLL搜集整理的所有数据类型转换方式
- KSH入门
- wubi ubuntu 下挂载c盘
- MFC中控件的显示和隐藏