แต่ละแรงดันคืออะไร


18

ภาพด้านล่างแสดงวงจร RLC วงจร RLC เป็นวงจรไฟฟ้าที่ประกอบด้วยตัวต้านทาน (R) ตัวเหนี่ยวนำ (L) และตัวเก็บประจุ (C) เชื่อมต่อแบบอนุกรมหรือแบบขนาน (1)

ป้อนคำอธิบายรูปภาพที่นี่

เพื่อให้การคำนวณง่ายขึ้นเป็นเรื่องปกติที่จะทำงานในโดเมนความถี่ (Laplace) แทนโดเมนเวลา

งานของคุณคือ:

ใช้ค่าR, LและCเป็น input และกลับแรงดันไฟฟ้าVR, VLและVC

การแปลงเป็นโดเมน Laplace มีดังนี้:

R = R
XL = j*w*L      // OK, XL = w*L, and ZL = j*XL, but don't mind this here.  
XC = 1/(j*w*C)  // I haven't ruined physics, it's only a minor terminology tweak

โดยที่j = sqrt(-1)และw = 2*pi*50(ความถี่คือ 50 Hz)

Z = R + XL + XCความต้านทานรวมเมื่อองค์ประกอบที่อยู่ในชุด คุณอาจจำได้U = R*Iจากการบรรยายฟิสิกส์ระดับมัธยม มันเกือบจะเหมือนกัน แต่อีกเล็กน้อยที่ซับซ้อนVS = Z*Iขณะนี้: ปัจจุบันมีการคำนวณโดยการหารแรงดันโดยความต้านทานรวมVS Zในการค้นหาแรงดันไฟฟ้าผ่านองค์ประกอบเดียวคุณต้องรู้กระแสแล้วคูณด้วยความต้านทาน VS = 1+0*jสำหรับความเรียบง่ายแรงดันไฟฟ้าจะถือว่า

สมการที่คุณอาจต้องการคือ:

XL = j*w*L
XC = 1/(j*w*C)
Z = R + XL + XC   // The combined impedance of the circuit
I = VS / Z         // The current I (Voltage divided by impedance)
VR = I * R        // Voltage over resistance (Current times resistance)
VL = I * XL       // Voltage over inductor (Current times impedance)
VC = I * XC       // Voltage over capacitor (Current times impedance)

อินพุตมาจาก STDIN หรือเป็นอาร์กิวเมนต์ของฟังก์ชัน ผลลัพธ์ / ผลลัพธ์จะต้องเป็นตัวเลขสามจำนวนที่ซับซ้อนในรายการสตริงหรืออะไรก็ตามที่ใช้งานได้จริงในภาษาของคุณ ไม่จำเป็นต้องรวมชื่อ (เช่นVR = ...) ตราบใดที่ผลลัพธ์อยู่ในลำดับเดียวกันกับด้านล่าง ความแม่นยำต้องมีอย่างน้อย 3 จุดทศนิยมสำหรับส่วนจริงและจินตภาพ อินพุทและเอาท์พุท / ผลลัพธ์อาจเป็นรูปแบบทางวิทยาศาสตร์หากนั่นเป็นค่าเริ่มต้นในภาษาของคุณ

RและLมีและ>= 0 (หรือตัวเลขที่เป็นไปได้สูงสุดในภาษาของคุณ)C > 0R, L, C <= inf

กรณีทดสอบง่ายๆ:

R = 1, L = 1, C = 0.00001

VR = 0.0549 + 0.2277i
VL = -71.5372 +17.2353i
VC = 72.4824 -17.4630i

สำหรับผลลัพธ์ข้างต้นอาจเป็นรูปแบบ ouput ที่ถูกต้องหนึ่ง (จากมาก):

(0.0549 + 0.2277i, -71.5372 +17.2353i, 72.4824 -17.4630i)

รูปแบบ ouput ที่ถูกต้องบางรูปแบบสำหรับหนึ่งแรงดันคือ:

1.234+i1.234,   1.23456+1.23456i,   1.2345+i*1.2345,   1.234e001+j*1.234e001.

รายการนี้ไม่ได้เป็นเอกสิทธิ์ดังนั้นสามารถใช้ตัวแปรอื่นได้ตราบใดที่ส่วนจินตภาพถูกระบุโดยiหรือj(ทั่วไปในวิศวกรรมไฟฟ้าตามที่iใช้สำหรับปัจจุบัน)

เพื่อตรวจสอบผลสำหรับค่าอื่น ๆ ของ R, L และ C VR + VL + VC = 1ต่อไปนี้จะต้องเป็นจริงเพื่อให้ได้ผลลัพธ์ทั้งหมด:

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

โดยวิธีการ: ใช่มันเป็นแรงดันไฟฟ้ามากกว่าส่วนประกอบและกระแสไฟฟ้าผ่านส่วนประกอบ แรงดันไฟฟ้าไม่เคยผ่านอะไรเลย =)


2
ที่จริงแล้วการเกิดปฏิกิริยาเป็นจำนวนจริงดังนั้น XL = omega * L ความต้านทานของตัวเหนี่ยวนำคือ Z = jXL (สิ่งนี้ไม่ส่งผลกระทบต่อปัญหา แต่เป็นเพียงการแก้ไข)
Voitcus

@ Voitcus จริง ... ฉันทำให้มันง่ายขึ้นเล็กน้อยเพื่อที่จะไม่ทำให้สับสนเกินไป ฉันรวม j ในเงื่อนไข XL / XC เมื่อไปที่โดเมนความถี่ ฉันไม่เคยพูดว่าปฏิกริยานั้นซับซ้อน (แม้ว่าฉันจะเรียกมันว่า X และไม่ใช่ jX) =) แต่ฉันเห็นด้วยกับคุณ! จริงๆแล้วฉันเรียกมันว่าอิมพีแดนซ์ด้วย
Stewie Griffin

ฉันสามารถใช้รายการของตัวเลข 3 ตัวเป็นฟังก์ชันอินพุตหรือต้องแยกอาร์กิวเมนต์ 3 ตัวหรือไม่
Martin Ender

@ MartinBüttnerรายการก็โอเค
Stewie Griffin

คำตอบ:



9

Mathematica, 33 ไบต์

ดังนั้นใกล้กับ Pyth ...

l/Tr[l={#,#2(x=100Pi*I),1/x/#3}]&

นี้เป็นฟังก์ชั่นที่ไม่มีชื่อซึ่งใช้เวลาR, LและCสามข้อโต้แย้งและส่งกลับรายการของตัวเลขที่ซับซ้อนเป็นผล (ในการสั่งซื้อสินค้าที่จำเป็นVR, VL, VC) ตัวอย่างการใช้งาน:

l/Tr[l={#,#2(x=100Pi*I),1/x/#3}]&[1, 1, 0.00001]
(* {0.0548617 + 0.22771 I, -71.5372 + 17.2353 I, 72.4824 - 17.463 I} *)

3

Octave / Matlab, 53 51 bytes

function f(R,L,C)
k=-.01j/pi;Z=[R L/k k/C];Z/sum(Z)

ลองออนไลน์

ขอขอบคุณ @StewieGriffin สำหรับการลบสองไบต์


@StewieGriffin 100j?! หลายปีที่ใช้ Matlab และฉันไม่รู้ว่าจะทำได้! :-) (ฉันรู้1jแต่ฉันคิดว่ามันเป็นอย่างนั้น) ขอบคุณ!
Luis Mendo

... aaaand: เห็นได้ชัดว่าฉันรู้เกี่ยวกับคุณมากกว่าที่คุณทำ! เพราะคุณ / รู้ว่ามันเป็นไปได้ ! =)
Stewie Griffin

@StewieGriffin Ooooh มันเกิดขึ้นกับฉันอีกครั้ง หน่วยความจำไม่ดี !!: - D (ฉันไม่เคยใช้สัญลักษณ์นั้นมาก่อน)
Luis Mendo

คุณสามารถบันทึกไบต์อื่นถ้าคุณเริ่มต้นด้วยผกผันของ K เช่นนี้หรือk=-.01j/pi;Z=[R,L/k,k/C];Z/sum(Z) k=-.01j/pi;[R L/k k/C]/(R+L/k+k/C)=)
Stewie Griffin

@StewieGriffin ความคิดที่ดี! แก้ไข
Luis Mendo

3

APL (Dyalog Unicode) , 27 24 ไบต์SBCS

โปรแกรมเต็มรูปแบบ แจ้งให้C, L, Rในลำดับที่

(⊢÷+/)(⎕,⎕∘÷,÷∘⎕)÷○0J100

ลองออนไลน์!

0J100 100  i

 πคูณนั่น

÷ ซึ่งกันและกันของที่

(... ) ใช้ฟังก์ชัน tacit ต่อไปนี้:

÷∘⎕ หารอาร์กิวเมนต์ด้วยอินพุต ( C)

⎕∘÷, prepend อินพุต ( L) หารด้วยอาร์กิวเมนต์

⎕, อินพุตอินพุตล่วงหน้า ( R)

(... ) ใช้ฟังก์ชัน tacit ต่อไปนี้:

+/ รวมอาร์กิวเมนต์

⊢÷ หารข้อโต้แย้งด้วยสิ่งนั้น


@StewieGriffin ฉันทราบว่าคุณหมายถึงอะไร "ลบสูง" ¯เป็นคำนำหน้าจำนวนลบ APL ของความแตกต่างจากการทำงาน (เช่นผู้ประกอบการทางคณิตศาสตร์) -ปฏิเสธ อย่างไรก็ตามมันไม่ยุติธรรมเลยที่จะไม่นับตัวอักษร APL เป็นไบต์เดียวมันเป็นเพียงเรื่องของการเข้ารหัสและมีระบบ APL จำนวนมากที่ใช้ไบต์เดียวเพื่อเก็บรหัส APL เช่น Dyalog มีทั้งล่าม Unicode และ Classic (ไบต์เดียว)
อดัม

1
ฉันเห็นด้วยถ้าคุณใช้การเข้ารหัสโดยที่ตัวละครทุกตัวเป็นไบต์เดียวดังนั้นจำนวนตัวอักษรควรเท่ากับจำนวนไบต์ คุณสามารถตรวจสอบได้หรือไม่ว่าเป็นกรณีนี้ (ฉันไม่คุ้นเคยกับระบบการเข้ารหัสที่แตกต่างกัน apl) นอกจากนี้ฉันไม่คุ้นเคยกับเครื่องหมายลบสูง ไม่ดีของฉัน ...
Stewie Griffin

ฉันเพิ่งวางโค้ดลงในกล่อง "จำนวนนับไบต์" และกลับมา 31 ถ้าไม่ถูกต้องแน่นอนคุณจะมีคะแนน 28 :-) ถึงแม้ว่า..,49J¯17.4..ส่วนแรกจะเป็นจินตภาพและวินาที เป็นจริงในภาษาอื่น ๆ (หรือโดยทั่วไปในทางคณิตศาสตร์สัญกรณ์) ดังนั้นมันจึงอาจละเมิดกฎ "ตราบเท่าที่ส่วนจินตภาพถูกระบุโดยฉันหรือ aj" มี +1 สำหรับการสอนฉันเกี่ยวกับ "เครื่องหมายลบสูง" และคำตอบที่ดี แต่ฉันไม่แน่ใจว่าฉันสามารถเลือกเป็นคำตอบที่ยอมรับได้เมื่อวันนั้นมาถึง
Stewie Griffin

1
@StewieGriffin Ninja'd;)
เบต้าการสลายตัว


2

อ็อกเทฟ 41 ไบต์

@(R,L,C)(Z=[R L/(k=-.01j/pi) k/C])/sum(Z)

1/(100*j*pi)สามารถย่อให้สั้นลง-.01j/piซึ่งสั้นกว่ามาก โดยการกำหนดให้กับตัวแปรkแบบอินไลน์ตัวแปรสามารถใช้สองครั้ง การกำหนดเวกเตอร์ทั้งหมดให้กับตัวแปรZค่าใช้จ่าย 4 ไบต์ แต่ช่วยให้เราสามารถหารด้วยsum(Z)ซึ่งเป็น 5 (R+L/k+k/C)ไบต์สั้นกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.