COMSOL Multiphysics에서 실험 데이터의 곡선 피팅

0 Comments/in /by

우리는 COMSOL Multiphysics로 해석을 수행할 때, 종종 물질 특성을 입력하거나 모델에 필요한 데이터를 입력하기 위해서 실험 데이터를 사용하는 경우가 있습니다. 하지만 실험 데이터는 많은 노이즈가 있습니다. 우리는 실험적 오류가 포함된 데이터가 시뮬레이션에 적용되는 것을 원하지 않습니다. 이 블로그에서는 COMSOL Multiphysics의 핵심 기능을 이용해서 어떻게 실험 데이터를 부드러운 곡선과 표면으로 피팅할 수 있는지 살펴보겠습니다.

 

최소화 문제 같은 곡선 피팅

아래 있는 샘플 실험 데이터를 살펴봅시다. 데이터에 노이즈가 있고 x-축 샘플링이 균일하지 않은 것을 볼 수 있습니다. 이 실험 데이터가 물질 특성을 나타내고 만약 물질 특성이 해석 값에 따라 달라진다면, 보통 이 데이터가 바로 해석에 사용되지 않기를 바랍니다. 노이즈 데이터는 종종 해석 수렴을 어렵게 만드는 원인이 될 수 있기 때문입니다. 그 이유는 여기를 살펴보십시오. 만약 데이터 대신 부드러운 곡선으로 근사시킨다면, 모델의 수렴성은 향상되고 모델 특성도 간단한 함수로 나타낼 수 있습니다.

74_blog_01

간단한 함수로 근사시키길 원하는 실험 데이터

실험 데이터 D(x)에 최대한 근접한 함수 F(x)를 찾고 싶습니다. 우리는 전체 데이터 영역을 통틀어서 실험 데이터와 우리의 피팅 함수 사이에 차의 제곱 값이 가장 작은 “best-fit”한 함수를 정의할 것입니다.
74_blog_02

가장 먼저 할 일은 우리가 피팅하고자 하는 함수의 타입을 결정하는 것입니다. 우리는 사용하고자 하는 함수의 type은 자유롭게 결정할 수 있지만 수치적으로 잘 조절할 수 있는 피팅 함수를 선택해야 합니다. 이유에 대해서 자세하게 설명하지는 않겠지만, 시뮬레이션을 최대한 견고하게 하기 위해서 다음 함수를 선택할 것입니다.

74_blog_03

이 경우에, a=0,b=1를 대입하면

74_blog_04

이제 우리는 최소화를 위한 네 개의 계수를 찾아야 합니다.

74_blog_05

이것이 최적화 문제처럼 들릴 수도 있지만, 우리는 계수에 어떠한 제약도 갖고 있지 않고 최소 하나 이상의 함수가 포함되어 있다고 가정할 것입니다. 최소는 계수에 해당하는 미분 값이 0이 되는 점과 일치할 것입니다. 즉 최적의 피팅 함수를 찾기 위해서, 우리는 계수 값을 찾아야 합니다.

74_blog_06

우리는 COMSOL Multiphysics의 핵심 기능을 이용해서 이 문제를 해결할 수 있습니다. 이제부터 알아보겠습니다.

 

COMSOL에서 구현

우리는 1D 구성 원소를 포함하는 새로운 파일을 만듭니다. 계수를 풀기 위해서 Global ODEs와 DAEs를 선택한 후에 Stationary Solver를 사용할 것입니다. 단순화를 위해서, 아래 스크린 샷에 나온 것처럼 무차원 길이 단위를 사용할 것입니다.

74_blog_07

1D와 무차원으로 시작합니다.

다음, 형상을 생성합니다. 형상은 우리의 간격을 포함해야 합니다. (이 경우, 샘플 포인트의 범위는 0부터 1까지 입니다.) 뿐만 아니라 모든 샘플 포인트를 위해서 x-축을 따라 포인트를 설정해야 합니다. 아래 보이는 것처럼, Point에 스프레드시트에서 포인트의 범위를 간단하게 복사 & 붙여놓기 할 수 있습니다.

74_blog_08

모든 샘플 포인트의 간격을 추가합니다.

Interpolation 함수를 이용해서 실험 데이터를 읽어옵니다. 데이터에 적당한 이름을 기입합니다.(우리는 아래 스크린 샷처럼 간단하게 D로 사용했습니다.) “Use spatial coordinates as arguments”를 체크하고 interpolation에 Linear이 기본으로 적용되었는지 확인합니다.

74_blog_09

실험 데이터를 불러오기 위한 설정창

모든 도메인에 걸쳐 적분 연산자를 정의합니다. 당신은 intop1이라는 기본 이름을 사용할 수 있습니다. 아래 그림은 적분을 적용하기 위해 사용한 기능입니다.

74_blog_10

모든 도메인에 정의된 적분 연산자.

이제 두 가지 변수를 정의하겠습니다. 하나는 당신의 함수 F이고 다른 하나는 최소화하길 원하는 함수 R이 될 것입니다. Geometric Entity Level을 Entire Model로 설정했기 때문에 F는 모든 공간에 대해서 정의되어 있고 x의 함수처럼 공간에 따라 변화할 것입니다. 반면에 R은 전체 모델에서 이용될 수 있는 스칼라 값입니다. 아래 스크린 샷에 보이는 것처럼,74_blog_11의 함수 F를 입력할 수 있고 계수들은 나중에 정의할 것입니다.

74_blog_12

피팅 함수와 최소화 하고자 하는 값을 정의합니다.

다음으로, 우리는 네 개의 계수를 만족시킬 수 있는 네 개의 식을 정의하기 위해서 Global Equations을 이용할 것입니다. 다시 말하지만 각각의 계수가 0이 되는 R의 미분 값을 원합니다. d(f(x))와 같이 미분 연산자를 이용해서 아래처럼 입력할 수 있습니다. 74_blog_13

피팅 함수의 계수를 풀기 위해 사용되는 Global Equations.

마지막으로, 1D 도메인에 적합한 메쉬가 필요합니다. 우리가 각 샘플 데이터 포인트에 기하 형상 점을 두었다는 것을 상기해봅시다. Edge Mesh에 Distribution기능을 이용해서 각 데이터 포인트 사이에 하나의 원소를 삽입할 수 있습니다. 우리는 데이터 사이에 선형 내삽법을 사용하기 때문에 더 이상의 원소는 필요하지 않습니다. 하지만 더 적어서는 안됩니다. 왜냐하면 실험 데이터 포인트를 놓칠 수 있기 때문입니다. 74_blog_14

각 데이터에 하나의 원소가 있어야 합니다.

이제 우리는 계수의 수치 값을 위해서 평형 문제를 풀 수 있고 결과를 플롯할 수 있습니다. 아래의 플롯에서 우리는 계산된 피팅 함수와 데이터 포인트를 선형 내삽법으로 나타낸 그래프를 확인할 수 있습니다. 우리는 두 커브 사이에 차의 제곱 값이 최소가 되며 데이터를 잘 근사한 부드럽고 간단한 함수를 얻을 수 있습니다.

74_blog_20

실험 데이터(검정, 선형 내삽법)와 피팅 함수(빨강)

 

이후 작업

이제 우리는 다른 소프트웨어 툴이나 스프레드시트 프로그램과 유사한 곡선 피팅을 손쉽게 계산할 수 있습니다. 그러나 우리는 이 방법으로 훨씬 많은 일을 할 수 있고 피팅 함수를 사용하는데 제한도 없습니다. 당신이 원하는 어떠한 함수도 자유롭게 선택할 수 있습니다. 하지만 직교 함수들의 집합을 더하는 함수를 사용하는 것이 가장 좋은 방법입니다. 예를 들어, 다음을 사용해 보세요.

74_blog_15

하지만, 이 피팅 함수에 있는 많은 항들은 선형 계수를 풀기 위한 것입니다.
74_blog_16와 같은 비선형 피팅 계수를 사용하는 것은 바라지 않습니다. 너무 높은 비선형성은 수렴을 하는데 문제가 될 수 있기 때문입니다.
그리고 만약 2D 혹은 3D 데이터 세트가 있다면? 여기서 설명한 것처럼, 동일한 접근방식을 적용할 수 있습니다. 유일한 차이점은 2D 또는 3D 도메인을 설정해야 한다는 것입니다. 이 도메인들은 직교 좌표계일 필요도 없으며 심지어 다른 좌표계로 전환할 수 도 있습니다.
아래 표시된 영역에 대해 측정된 샘플 데이터를 살펴 봅시다.

74_blog_17

2D 영역의 샘플 데이터. 우리는 이 포인트의 높이를 표면으로 최적 피팅하고 싶습니다.
데이터가 고리 영역 위에 놓여있고 반경과 원주 방향에 대해서 변화를 보이기 때문에 우리는 오히려 직교 좌표보다 다음 함수로 피팅을 시도할 수 있습니다.

74_blog_18

우리는 이전과 동일한 절차를 수행할 수 있습니다. 유일한 차이점은 선 대신에 2D 도메인에 대한 적분이 필요하다는 것과 원통형 좌표계를 사용해서 표현을 적어야 한다는 것입니다.

74_blog_19

위의 데이터에 대한 최적 피팅 표면

 

맺음말

여기서 보여준 방법을 통해서 1D, 2D, 3D 데이터에 대한 최적의 피팅 커브를 찾는 매우 유연한 기능을 가지고 있다는 것을 확인했습니다.
간단한 곡선 피팅을 넘어서 추가적인 제약 조건을 고려할 수도 있습니다. 이 경우, Optimization Module의 기능을 사용하기 바랍니다. 이것은 훨씬 더 많은 유형의 곡선 피팅 타입을 사용할 수 있습니다. 곡선 피팅과 매개 변수에 관련된 Optimization Module 소개는 이 모델을 참고하세요.

0 replies

댓글 남기기