1. 程式人生 > >POJ 1045 Bode Plot問題解析與程式碼

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

假設有如下三角形:

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

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

到此公式左邊為待求量,公式右邊為可知量,推導完畢。

3.程式碼

#include <stdio.h>
#include <cmath>

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;
}