유한 저항 그리드의 유효 저항을 어떻게 결정합니까?


14

면책 조항 : 저는 제한된 전기 공학 배경을 가진 지구 물리학 자입니다. 이 문제가 엄청나게 쉬운 지, 엄청나게 복잡한 지, 또는 완전히 무의미한 지 잘 모르겠습니다.

내 목표 : 저항 네트워크를 사용하여 암석 샘플의 벌크 저항을 결정합니다.

암석 샘플은 저항이 높은 특정 저항 (고체 암석을 나타냄)과 저항이 낮은 저항 (암석의 유체 경로를 나타냄)이있는 저항 네트워크를 사용하여 모델링해야합니다.

아래와 같이 균일 한 그리드에 저항기 네트워크가 있다고 가정합니다. 도시 된 예에서, 각 라인 세그먼트는 3x3 그리드 상에 1 내지 24로 라벨링 된 관련 저항을 갖는다. 각 선분의 저항이 알려져 있습니다.

그리드의 총 길이는 이고 "영역"은 (이 경우 2D 예이므로 면적도 길이 임). 샘플의 벌크 저항은 다음과 같이 주어진다 :

ρ케이=아르 자형이자형에프에프

여기에 이미지 설명을 입력하십시오

내 질문 : 네트워크 의 유효 저항 을 어떻게 결정 합니까?아르 자형이자형에프에프

나는 온라인을 보았지만 무한 네트워크, 소스 및 싱크 전류 등에 대한 토론 만 찾을 수 있습니다 . 나는 전류 또는 전압에 관심이 없습니다.

이 문제를 그대로 해결할 수 있습니까?


2
시뮬레이터에 연결하고 시뮬레이터가 해결하게합니다. 모델을 향신료 회로로 구성 할 수 있습니다. 그런 다음 저항을 찾으려면 옴의 법칙 (V = I * R)을 사용하십시오. Spice는 전류를 알려주므로 R을 계산할 수 있습니다.
mkeith

1
명령 행 향신료를 사용하여 모든 것을 자동화 할 수 있지만 개념 증명을 위해 LTSpice와 같은 무료 향신료로 회로를 입력 할 수 있습니다. 전압을 공급하고 전류를 표시하십시오. LTspice는 전압을 전류 (저항)로 나눈 것과 같은 간단한 기능도 표시 할 수 있습니다.
mkeith

Darcy, 여러 가지 접근 방식이 있습니다. 생각을하기 전에 몇 가지 질문을하고 싶습니다. (1) 작성할 수있는 매우 쉬운 소프트웨어가 있습니다. 이런 종류의 접근 방식을 찾고 있습니까? (2) 전통적인 노드 분석을 사용하여이 문제를 해결할 수 있습니다. 이런 종류의 접근 방식을 찾고 있습니까? (3) 문제가 정점가장자리나뉩니다 . (지구 물리학 자 배경을 바탕으로,이 두 용어의 의미를 알 것으로 기대합니다.) 선험적으로 가장자리에 꽂을 값을 어떻게 계산합니까?
jonk

@ jonk 나는 주로 옵션 (1)에 관심이있을 것입니다.이 작업을 수행하기 위해 짧은 코드를 직접 작성하십시오. 나는 선공 기공 구조와 암석 광물 또는 유체의 알려진 저항에 기초하여 가장자리 저항을 결정합니다.
Darcy

Darcy, "유체 경로"라고 쓸 때 즉시 떠오르는 삼각 불규칙한 네트워크에서 나오는 기술도 있습니다. 그 주제에 대해 읽은 것이 있습니까? 나는 당신의 궁극적 목표가 무엇인지 모르지만, 당신도 이것들을 찾아보고 싶을 것입니다. "전류"가 집중되는 위치를 이해하는 데 도움이되는 그라디언트에 사용하면 좋습니다. 그게 걱정이라면
jonk

답변:


11

기본 아이디어는 매우 간단합니다. 시스템에서 "노드"또는 꼭짓점을 나타내는 행렬 ( )을 정렬 합니다. 이러한 각 노드에는 알고리즘이 진행됨에 따라 변경되거나 업데이트 될 수있는 스칼라 값 "전압"이 있습니다. 전압을 변경할 수없는 두 개의 노드도 있습니다. 여기서는 "배터리"를 적용 할 것이므로이 두 노드는이 배터리의 두 끝을 나타냅니다.V

별도로, 다른 두 행렬 ( R h )은 시스템의 가로 및 세로 가장자리를 나타냅니다. 이것들은 당신의 저항 값입니다. 어떻게 작성하려고하는지 잘 모르겠습니다. 그러나 그것은 당신의 문제입니다. 이 기법은 이러한 행렬을 채울 수 있다고 가정합니다.아르 자형V아르 자형h

사용하는 컴퓨터 언어에 따라 음수 인덱스를 사용하거나 사용하지 못할 수 있습니다. 중요하지 않습니다. 그것은 당신이 직면하고있는 것을 명심하는 것입니다.

길이 N L 섹션 으로 분할되고 "길이" AN A 섹션 으로 분할 된다고 가정하자 . 그런 다음 스칼라 전압 값에 대해 ( N L + 1 )( N A + 1 ) 정점 으로 행렬을 구성해야 합니다. 또한 N A( N L + 1 )의 수직 모서리와 N L( N A + 1의 다른 두 행렬도 필요합니다.(+1)(+1)(+1) 그 정점 간의 수평 에지.(+1)

지금. 0으로 모든 정점을 초기화 . 왼쪽의 정점 중 하나를 선택하고 (가급적이면 중간에) 0으로 기록하십시오.0V절대로 변경할 수없는 V 값. 원하는 방법을 사용하십시오. 오른쪽의 정점 중 하나를 선택하고 (가급적이면 중간에) 값을 1로 변경하십시오.0V 는 다시 값을 변경할 수 없다는 점에 유의하십시오. 여기서 작동하는 기술은 단순히 정상적으로 변경되도록하고 각 단계마다 값을 바꾸는 것입니다. 그러나 당신이 그것을 달성하는 한, 당신이 이것을 달성하는 방법은 중요하지 않습니다.1V

(효율적인 이유로 다른 기술이 있지만 여기서는 귀찮게 할 가치가 없습니다.)

이제 바둑판 또는 적-검 색 알고리즘 이라고도하는 알고리즘이 있습니다. 노드 전압 매트릭스를 통해 이동하여 두 개의 인덱스, 이 짝수 인 각 노드를 처리 하여 다음과 같은 간단한 할당을 수행하십시오.나는+제이

Vi,j=Rhi,j1Rhi,j(Vi1,jRvi,j+Vi+1,jRvi1,j)Rhi,j1Rhi,j(Rvi,j+Rvi1,j)+Rvi1,jRvi,j(Rhi,j+Rhi,j1)+Rvi1,jRvi,j(Vi,j1Rhi,j+Vi,j+1Rhi,j1)Rhi,j1Rhi,j(Rvi,j+Rvi1,j)+Rvi1,jRvi,j(Rhi,j+Rhi,j1)

위의 방정식은 4 개의 저항이 연결된 중앙 노드의 전압을 계산하는 것에 지나지 않으며 4 개의 저항의 다른 쪽 끝에있는 전압이 알려져 있습니다. 중앙 노드 전압은 위의 방정식으로부터 계산됩니다. 제수는 각 항에 대해 같으므로 분자의 합을 계산 한 다음 분모로 한 번 나눌 수 있습니다.

합계 가 고른 모든 노드가 업데이트됩니다 . 이제 합 i + j 가 홀수 인 모든 노드에 대해 동일한 절차를 수행합니다 . 이 두 단계가 모두 수행되면 한주기를 완료 한 것입니다.i+ji+j

필요한 경우 특수한 두 노드를 재설정하십시오 ( 10V또는 앞에서 설명한대로 V. ) 또는 두 노드를 보호 한 경우 재설정 할 필요가 없습니다.1V

다음 사이클을위한 준비가되었습니다. 전반적인 상태가 안정되는 데 필요한 횟수만큼이주기를 수행하십시오.

프로세스를 중지하면 왼쪽 보호 노드를 둘러싼 노드를 보거나 오른쪽 보호 노드를 둘러싼 노드를 보도록 선택하여 저항을 쉽게 해결할 수 있습니다. (어느 쪽을 선택하든 실제로 네 개의 노드를 갖도록 행렬을 [모든 방향으로 1 씩] 충분히 크게 만드는 것이 좋습니다.) 주변 노드와 특수 노드 사이의 전압 차이를 그들 사이의 가장자리에 저항은 당신에게 특별한 노드를 떠나거나 들어가는 전류를 알려줍니다. "배터리"노드이므로이 전류는 모두 전류 여야합니다. 전압이 1 이므로 는 정의에 따라 1을이 4 개의 전류의 합으로 나누면 총 저항을 나타냅니다.1V

나는 많은 주석과 함께 67 줄만이 작성한 코드를 쳐다보고있다. 따라서 쓰기가 어렵지 않습니다.

이 아이디어의 "짧은 요약"은 1 을 적용한다는 것입니다 배터리를 켠 다음 시스템 전체에 전압이 퍼지는 지 확인하십시오. 일단 전압이 안정되면 (그 기준), 하나의 배터리 단자 또는 다른 배터리 단자로 들어 오거나 나가는 전류를 살펴보기 만하면됩니다. 명백한 이유로 둘 다 동일한 현재 값이어야합니다 (일부 수치 범위 내).1V


왜 시스템을 i + j = 짝수와 i + j = 홀수로 분리해야합니까?

를 계산한다고 가정 해보십시오 . 이것은 V 5 , 5 를 둘러싸는 노드를 참조합니다 . 괜찮아. 다음에 V 5 , 6 = f ( V 4 , 6 , V 6 , 6 , V 5 )를 계산한다고 가정합니다 .V5,5=에프(V4,5,V6,5,V5,4,V5,6)V5,5 . 매개 변수 목록에는V 5 , 5에 대해 방금 계산 한 값이있습니까? 이것은 많은 것들을 "얼룩"일 것입니다. 소리가 안납니다. 대신 홀수 / 짝수의 각주기는 같은 순간에 "있는 것처럼"나타납니다. 따라서 다음 계산은V 5 , 7 =f ( V 4 , 7 , V 6 , 7 , V 5 , 6 , V 5 , 8 ) 이어야합니다V5,6=에프(V4,6,V6,6,V5,5,V5,7)V5,5V5,7=에프(V4,7,V6,7,V5,6,V5,8)함수의 입력 없음 때문에 변경된 노드있는 동안 이 단계. 그런 다음 번갈아 가면서 번갈아 가면서 번갈아 가면서 번갈아 가며 업데이트하지 않습니다. 당신은 정말로 이런 식으로해야합니다.

또한 수식이 짝수 및 홀수 단계에 대해 동일합니까?

예, 동일합니다.

A가 선형 연산자이고 b가 경계 조건을 제공하는 일종의 선형 시스템 Ax = b를 사용하여 한 번에 모두 해결할 수 있습니까? 그것을 보면, 부분 미분 방정식을 푸는 유한 차분 법과 다소 유사 해 보입니다.

연결이 있습니다. 나는 그것이 매트릭스없는 구현이라고 불린다.


다음은 예입니다. 시뮬레이션을 위해 다음 저항 값 세트를 LTSpice에 배치했습니다.

여기에 이미지 설명을 입력하십시오

나는 그것을 짧고 단순하게 유지했다. 보시다시피, 에서 대략의 계산 전류1V30.225엄마30.224552엄마

다음 VB.NET 프로그램을 실행했습니다.

Module GEOGRID

    Const NL As Integer = 2
    Const NA As Integer = 2
    Const INF As Double = 1.0E+32

    Sub Main()

        Static Rh As Double(,) = New Double(NL + 2, NA + 1) {
                    {INF, INF, INF, INF},
                    {INF, 5, 21, INF},
                    {INF, 76, 10, INF},
                    {INF, 32, 22, INF},
                    {INF, INF, INF, INF}}
        Static Rv As Double(,) = New Double(NA + 1, NL + 2) {
                    {INF, INF, INF, INF, INF},
                    {INF, 61, 50, 16, INF},
                    {INF, 56, 45, 18, INF},
                    {INF, INF, INF, INF, INF}}
        Dim V As Double(,) = New Double(NL + 2, NA + 2) {
                    {0, 0, 0, 0, 0},
                    {0, 0, 0, 0, 0},
                    {0, 0, 0, 1, 0},
                    {0, 0, 0, 0, 0},
                    {0, 0, 0, 0, 0}}
        Dim PDE As Func(Of Integer, Integer, Double) = Function(ByVal i As Integer, ByVal j As Integer) (
                    Rh(i, j - 1) * Rh(i, j) * (V(i - 1, j) * Rv(i, j) + V(i + 1, j) * Rv(i - 1, j)) +
                    Rv(i - 1, j) * Rv(i, j) * (V(i, j - 1) * Rh(i, j) + V(i, j + 1) * Rh(i, j - 1))
                  ) / (
                    Rh(i, j - 1) * Rh(i, j) * (Rv(i, j) + Rv(i - 1, j)) +
                    Rv(i - 1, j) * Rv(i, j) * (Rh(i, j) + Rh(i, j - 1))
                  )
        Dim IV As Func(Of Integer, Integer, Double) = Function(ByVal i As Integer, ByVal j As Integer) 0 +
                    (V(i, j) - V(i - 1, j)) / Rv(i - 1, j) + (V(i, j) - V(i + 1, j)) / Rv(i, j) +
                    (V(i, j) - V(i, j - 1)) / Rh(i, j - 1) + (V(i, j) - V(i, j + 1)) / Rh(i, j)
        Dim idx As Integer = NA \ 2 + 1
        Dim jdx1 As Integer = NL + 1
        Dim jdx2 As Integer = 1
        For x As Integer = 1 To 1000
            For k As Integer = 0 To (NA + 1) * (NL + 1) - 1 Step 2
                Dim i As Integer = k \ (NL + 1)
                Dim j As Integer = k - i * (NL + 1) + 1
                i += 1
                If Not (i = idx AndAlso (j = jdx1 OrElse j = jdx2)) Then V(i, j) = PDE(i, j)
            Next
            For k As Integer = 1 To (NA + 1) * (NL + 1) - 1 Step 2
                Dim i As Integer = k \ (NL + 1)
                Dim j As Integer = k - i * (NL + 1) + 1
                i += 1
                If Not (i = idx AndAlso (j = jdx1 OrElse j = jdx2)) Then V(i, j) = PDE(i, j)
            Next
        Next
        Console.WriteLine("R = " & (1.0 / IV(idx, jdx1)).ToString)
        Console.WriteLine("R = " & (-1.0 / IV(idx, jdx2)).ToString)
    End Sub

End Module

아르 자형=33.0856844038614Ω

위의 프로그램은 전압 매트릭스뿐만 아니라 수직 및 수평 저항을 설정하는 방법을 보여 주어 존재하지 않는 노드 및 / 또는 저항 값에 대한 테스트를 단순화합니다. 배열 요소가 더 필요하지만 코드는 약간 깨끗합니다. (단순히 여분의 저항 값을 무한히 값으로 만들었습니다.) 회로도를 배치 한 방식으로 어레이를 설정 한 방법을 비교하면 모든 정확한 결과를 얻을 수 있다고 생각합니다. 자세한 내용은 여기입니다.

물론 저항 및 노드 값을 해킹하여이를 어떤 식 으로든 값 테이블을 읽는 범용 프로그램으로 만들지 않았습니다. 그러나 그 일반성은 추가하기가 매우 쉽습니다. 그리고이 코드는 내가 쓴 모든 것을 절대적으로 모호하게 만들어야합니다.

엑스엑스

그리고 마지막 메모. 고정 전압 노드의 전류를 사용하여 저항을 계산할 수 있음을 증명하기 위해 두 값을 인쇄하기 위해 두 줄을 사용했습니다. 하나는 에서 계산되었습니다.0V1V

(좋아요. 마지막으로 한 번 더 참고하십시오. F # 또는 대규모 병렬 컴퓨팅 시스템을 대상으로하는 괜찮은 컴파일러를 대상으로하는 것이 훨씬 낫습니다. "빨간색"또는 "검은 색"의 각 계산은 서로 독립적으로 병렬로 수행 할 수 있습니다. F #을 사용하면이 작업이 간단 해 지므로 F #으로 코딩하면 특별한 작업없이 사용 가능한 모든 코어에서이 작업을 실행할 수 있습니다. 어떻게 작동합니다. 많은 방식으로 많은 데이터를 수집 할 때 참고할 수 있습니다. 멀티 코어 시스템의 장점


종료 참고 :

파생은 KCL에서 매우 간단합니다. 다음 배열에 4 개의 저항을 배치하십시오.

개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도

KCL 적용 :

V아르 자형1+V아르 자형2+V아르 자형+V아르 자형4=V1아르 자형1+V2아르 자형2+V아르 자형+V4아르 자형4V=(V1아르 자형1+V2아르 자형2+V아르 자형+V4아르 자형4)(아르 자형1∣∣아르 자형2∣∣아르 자형∣∣아르 자형4)

대수를 가지고 노는 일부는 코드에서 사용한 결과를 얻습니다.


나는+제이나는+제이엑스=

또한 수식이 짝수 및 홀수 단계에 대해 동일합니까?
Darcy

2
@Darcy 나는이 문제를 다루기 위해 조금 더 쓸 것입니다.
jonk

자세한 내용에 다시 한번 감사드립니다. 하나의 마지막 질문 (그리고 아마도 이것은 완전히 별개의 질문으로 갈 수 있지만 여기서 물어볼 것입니다) : 네트워크의 모든 저항이 동일한 저항 (1 Ohm)을 가지고 있다면 유효 저항도 같아야합니다 옴? 내 직감은 그렇게해야한다고 말하지만 확실하지 않습니다.
Darcy

1
@Darcy 직감이 잘못되었고 MATLAB 결과가 정확합니다.
jonk

1

2D 저항기 네트워크를 사용하여 2D 문제를 모델링 할 수는 있지만 3 차원으로 이동할 때 다소 까다로울 수 있습니다. 적절한 전도도가 지정된 도메인에 정의 된 체적 전도체와 함께보다 전통적인 (현재) 접근 방식을 사용하는 것이 좋습니다. FEMM 프리웨어 코드 ( http://www.femm.info/wiki/HomePage )는 매우 유능하며 2D, 축 대칭 및 3D에 사용할 수 있습니다. 거기에서 SCIrun ( https://www.sci.utah.edu/ 와 같은 훨씬 더 유능한 코드로 이동하는 것을 고려할 수 있습니다이는 상당히 복잡한 볼륨 도체 문제에 대한 학술 코드입니다. 백만 개 이상의 사면체 메쉬에 일상적으로 사용합니다. 비록 생물학적 모델링을 위해 주로 개발되었지만, 당신이하고있는 일에 아주 효과적입니다. 정방향 / 역방향 툴킷의 정방향 문제의 예는 당신을 도울 것입니다. 임피던스 단층 촬영에 유용한 역 문제도 발견 할 수 있습니다. 버전 5는 여전히 진행중인 작업이므로 일반적으로 버전 4를 사용합니다. 이 소프트웨어는 또한 훌륭한 메쉬 빌드 코드 인 tetgen에 대한 인터페이스를 가지고 있습니다.

마지막으로, 돈을 쓰는 것에 반대하지 않으면 COMSOL이 항상 사용하기 쉽고 매우 비쌉니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.