POJ 1045 Bode Plot问题解析与代码

1.问题分析:

原题链接:http://poj.org/problem?id=1045

这道题主要的难点在于利用两个公式对电阻值这一未知量Vr进行推导,并且在最后应该消去\theta这个变量。然鹅,在做这道题的时候,我的数学和物理知识都已经退还给了老师们,所以并没有感觉这道题是特别水的水题,emmm,也可能是我太菜了。所以下面我会给出较为详细的推导过程(我就不信就我一个这么菜的)。

2.公式推导:

题中给出的公式:

(1)  V_{1}=V_{s}cos(wt)

(2)  V_{2}=V_{R}cos(wt+\theta )

(3)  V_{2}=iR

(4)  i=C\frac{d(V1-V2))}{dt}

已知量为输入的四个值:V_{s},R,C,w

待消去量:\theta

待求解量:V_{R}

可知有如下公式(5):

V_{2}=iR=C\frac{d(V_{1}-V_{2})}{dt}R=CR\frac{V_{1}-V_{2}}{dt} =CR \frac{d[V_{S}cos(wt)-V_{R}cos(wt+\theta ))]}{dt}=CRw[V_Rsin(wt+\theta )-V_Ssin(wt)]

联立公式(2)和(5)可得:

V_Rcos(wt+\theta ))=CRw[V_Rsin(wt+\theta )-V_Ssin(wt)]

分别令w=0,wt+\theta =0

有如下结果:

1)V_Rcos\theta =CRw(V_Rsin\theta -0)

      tan\theta =\frac{1}{CRw}

2) wt+\theta =0\Leftrightarrow wt=-\theta

     V_R=CRw[0-V_Ssin(wt)]=CRwV_Ssin\theta

假设有如下三角形:

POJ 1045 Bode Plot问题解析与代码_第1张图片

可得:sin\theta =\frac{1}{\sqrt{1+(CRw)^{2}}}

从而:V_R=CRwV_S\frac{1}{\sqrt{1+(CRw)^{2}}}

到此公式左边为待求量,公式右边为可知量,推导完毕。

3.代码

#include 
#include 

int main()
{
	int n=0;               //测试用例的数量
	double Vs, R, C, w;    //分别为源电压、电阻、电容、角频率
	double Vr;             //记录结果

	scanf_s("%lf %lf %lf %d",&Vs,&R,&C,&n);
	while (n>0)
	{
		scanf_s("%lf", &w);
		Vr = (C*R*w*Vs) / sqrt(1 + C * C*R*R*w*w);
		printf("%.3lf\n",Vr);
		n--;
	}
	return 0;
}

 

 

你可能感兴趣的:(POJ)