[수치해석] 14.1 편미분방정식의 수치해 - 타원형, 유한차분법 (FDM, Finite Difference Method) Part2

Поделиться
HTML-код
  • Опубликовано: 9 фев 2025
  • [수치해석] 14.1 편미분방정식의 수치해 - 타원형, 유한차분법 (FDM, Finite Difference Method) - MATLAB 소스코드 포함
    MATLAB 소스코드 다운로드 : blog.naver.com...
    #편미분방정식의수치해, #편미방의수치해,#유한차분법

Комментарии • 8

  • @AirChaser97
    @AirChaser97 2 года назад +1

    같은 time step 에서의 값을 이용하였으므로 가우스 자이델이 아닌 야코비 방법이 아닌지 여쭈어봅니다.

    • @mecheng7244
      @mecheng7244  2 года назад +1

      같은 time step 에서의 값 이용하였는가로 가우스 자이델이 아닌 야코비 방법을 구분하는 것이 아니고요...
      반복계산시(iteration) 동일한 iteration때 의 이전 값을사용하는가 에 따라 가우스 자이델이 아닌 야코비 방법을 구분하는 것입니다...

  • @HoYa-n6z
    @HoYa-n6z Год назад

    안녕하십니까. 교수님.
    영상 잘 보고 있습니다.
    Ex14_3.m에 대해 모르는 것이 있어 질문을 드리게 되었습니다. 다음 질문 드리는 내용은 매트랩으로 코드를 짜서 실행을 다 해보았지만, 그럼에도 해결이 되지 않아 질문을 하게되었습니다.
    1. T(np1, 1:np1) = TB, T(1:np1, np1) = TD, T(1, 1:np1) = TA, T(1:np1, 1) = TC 과 같이 코드를 짠 이유에 대해서 궁금합니다. 제가 생각하기에는 TA는 좌측 경계 조건, TB는 우측 경계 조건, TC는 아래쪽 경계조건, TD는 위쪽 경계조건이므로 T(1:np1, 1) = TA, T(1:np1, np1) = TB, T(np1, 1:np1) = TC, T(1, 1:np1) = TD로 코드를 작성해야 되지 않나? 라는 생각으로 질문을 하게되었습니다.
    2. 코드 마지막 부분에 대해서 질문 드리겠습니다.
    강의 영상에서의 코드는 다음과 같습니다.
    for j = np1:-1:1
    fprintf('
    ');
    for i = 1:np1
    fprintf('%5.1f ', T(i,j) );
    end
    end
    교수님이 쓰신 책에서의 코드는 다음과 같습니다.
    for j = 1:np1
    fprintf('
    ');
    for j = np1:-1:1
    fprintf('%5.1f ', T(i,j) );
    end
    end
    책에 적힌 코드에 의하면 for 문의 문자 j로 동일하여, 한 문자를 다른 문자인 i 등과 같은 문자로 바꿔야 할 것 같은 제 생각이 맞는지 궁금합니다. 또한, 책에 쓰인 코드로 하면, 결과값이 이상하였습니다. 그럼, 책에 적힌 코드가 아닌, 영상에서의 코드로 하는 것이 맞는지 궁금합니다.
    3. 코드 마지막 부분에 대해서 마지막으로 하나만 더 질문을 드리겠습니다.
    다음과 같이 코드를 작성한 이유에 대해서 궁금합니다.
    for j = np1:-1:1
    fprintf('
    ');
    for i = 1:np1
    fprintf('%5.1f ', T(i,j) );
    end
    end
    저는 다음과 같이 코드를 작성해야 된다고 생각하여, 다음의 코드로 실행을 해보니, 결과값이 교수님께서 가르쳐주신 코드의 결과값에서 전치되어 값이 나왔습니다. 우선, 제가 다음과 같이 코드를 작성해야 한다고 생각한 이유는 반복 계산한 T를 그대로 명령창에 출력하는 것이 맞지 않나? 라고 생각했기 때문입니다. 또한, 다음과 같은 코드로 실행하여 얻은 값이 책에 나온 값과 달라, 잘못된 거 같은데, 왜 틀린지 잘 모르겠습니다.
    for i = 1:np1
    fprintf('
    ');
    for j = 1:np1
    fprintf('%5.1f ', T(i,j) );
    end
    end
    긴 글 읽어주셔서 감사합니다. 덕분에 공부를 쉽게 할 수 있어, 너무 좋습니다.

    • @mecheng7244
      @mecheng7244  Год назад

      1. T(np1, 1:np1) = TB, T(1:np1, np1) = TD, T(1, 1:np1) = TA, T(1:np1, 1) = TC 과 같이 코드를 짠 이유에 대해서 궁금합니다. 제가 생각하기에는 TA는 좌측 경계 조건, TB는 우측 경계 조건, TC는 아래쪽 경계조건, TD는 위쪽 경계조건이므로 T(1:np1, 1) = TA, T(1:np1, np1) = TB, T(np1, 1:np1) = TC, T(1, 1:np1) = TD로 코드를 작성해야 되지 않나? 라는 생각으로 질문을 하게되었습니다.
      ---->T(1, 1:np1) = TA : 이것 만 설명하면, T(1,1), T(1,2) T(1.3), .... T(1,n), T(1,n+1)이므로 TA이죠 나머지도 대입해보면 되겠죠...
      2. 코드 마지막 부분에 대해서 질문 드리겠습니다.
      강의 영상에서의 코드는 다음과 같습니다.
      for j = np1:-1:1
      fprintf('
      ');
      for i = 1:np1
      fprintf('%5.1f ', T(i,j) );
      end
      end
      교수님이 쓰신 책에서의 코드는 다음과 같습니다.
      for j = 1:np1
      fprintf('
      ');
      for j = np1:-1:1
      fprintf('%5.1f ', T(i,j) );
      end
      end
      책에 적힌 코드에 의하면 for 문의 문자 j로 동일하여, 한 문자를 다른 문자인 i 등과 같은 문자로 바꿔야 할 것 같은 제 생각이 맞는지 궁금합니다. 또한, 책에 쓰인 코드로 하면, 결과값이 이상하였습니다. 그럼, 책에 적힌 코드가 아닌, 영상에서의 코드로 하는 것이 맞는지 궁금합니다.
      ---> 강의 영상이 맞고요, 현재의 책은 강의영상과 같습니다. 아마 초기 버전의 책이었다면 책이 잘못 된것입니다.
      3. 코드 마지막 부분에 대해서 마지막으로 하나만 더 질문을 드리겠습니다.
      다음과 같이 코드를 작성한 이유에 대해서 궁금합니다.
      for j = np1:-1:1
      fprintf('
      ');
      for i = 1:np1
      fprintf('%5.1f ', T(i,j) );
      end
      end
      저는 다음과 같이 코드를 작성해야 된다고 생각하여, 다음의 코드로 실행을 해보니, 결과값이 교수님께서 가르쳐주신 코드의 결과값에서 전치되어 값이 나왔습니다. 우선, 제가 다음과 같이 코드를 작성해야 한다고 생각한 이유는 반복 계산한 T를 그대로 명령창에 출력하는 것이 맞지 않나? 라고 생각했기 때문입니다. 또한, 다음과 같은 코드로 실행하여 얻은 값이 책에 나온 값과 달라, 잘못된 거 같은데, 왜 틀린지 잘 모르겠습니다.
      for i = 1:np1
      fprintf('
      ');
      for j = 1:np1
      fprintf('%5.1f ', T(i,j) );
      end
      end
      --> 1번 질문의 해답과 동일한데, 숫자를 대입해보면 됩니다. 1번도 그렇고 지금질문도 그렇고 i와 j를 바꾸어 생각하고 있는 것 같습니다. 제가 한 출력은
      T(1, np1), T(2, np1), ..., T(np1, np1)
      T(1, n), T(2, n), ..., T(n, n)
      .....
      T(1, 1), T(2, 2), ..., T(n, 2)
      T(1, 1), T(2, 1), ..., T(n, 1)
      즉 예제 14.3의 그림의 형태와 온도는 바로 위에 나타낸 표기 순서가 같고, 그림에 보이는 대로 입니다. T(i,j)의 앞이 i이고 뒤가 j입니다. 즉 x가 증가하면 i가 증가하는 것이고, y가 증가하면 j가 증가하는 것입니다. 이렇게 해야 그림과 저장하는 온도가 일치하죠.

    • @mecheng7244
      @mecheng7244  Год назад

      먼저 그림 14.1을 이해하셔야 합니다.

    • @HoYa-n6z
      @HoYa-n6z Год назад

      @@mecheng7244 감사합니다. 덕분에 이해했습니다. !!

  • @prunus000
    @prunus000 2 месяца назад

    잘 보고 잇습니다. 책을 구매하여 혼자 공부하는 학생인데, 맞게 보고 있는지 잘 모르겠습니다 프로그래밍 실습 솔루션이 있는지 궁금합니다.

    • @mecheng7244
      @mecheng7244  2 месяца назад

      프로그램실습문제의 솔루션은 오직 강의하시는 교수들에게만 제공합니다... 강의 중 과제로 내어주는 문제이니 학생들이 스스로 풀어야 하는 문제입니다... 평가도 해야하죠..