550 likes | 1.23k Views
[ 선형대수 : Matlab ] Ch ap 4: 행렬다루기. 최 윤 정. 학습차례. 행렬 다루기 두 변수 사이의 연산 특수 행렬. 학습목표. 행렬을 다룬다 . 행렬로부터 데이터를 추출한다 . 크기가 다른 2 개의 행렬변수로 문제를 풀 수 있다 . 특수 행렬을 만들고 사용한다. 4.1 행렬 다루기. 지금까지 배운 것을 간단히 복습해본다 . 사각형 괄호 안에 숫자들을 타이핑하여 행렬을 만들어본다. 행렬을 만드는 방법. A=[3.5] B=[1.5, 3.1] 또는 B=[1.5 3.1]
E N D
학습차례 • 행렬 다루기 • 두 변수 사이의 연산 • 특수 행렬 MATLAB for Engineers
학습목표 • 행렬을 다룬다. • 행렬로부터 데이터를 추출한다. • 크기가 다른 2개의 행렬변수로 문제를 풀 수 있다. • 특수 행렬을 만들고 사용한다. MATLAB for Engineers
4.1 행렬 다루기 지금까지 배운 것을 간단히 복습해본다. 사각형 괄호 안에 숫자들을 타이핑하여 행렬을 만들어본다. MATLAB for Engineers
행렬을 만드는 방법 • A=[3.5] • B=[1.5, 3.1] • 또는 • B=[1.5 3.1] • C=[-1, 0, 0; 1, 1, 0; 0, 0, 2]; MATLAB for Engineers
각 행을 한 줄씩 따로 작성하여 2차원 행렬을 만들 수도 있다. C = [-1, 0, 0 1, 1, 0 1, -1, 0 0, 0, 2] F = [1, 52, 64, 197, 42, -42, … 55, 82, 22, 109]; MATLAB for Engineers
스칼라 MATLAB for Engineers
벡터 – 쉼표는 넣지 않아도 에러는 없다. MATLAB for Engineers
이 경우 세미콜론은 넣지 않아도 된다. 2차원 행렬 MATLAB for Engineers
행렬을 만들 때 이미 만든 다른 행렬을 이용할 수도 있다. MATLAB for Engineers
인덱스 번호를 사용하여 행렬 안에 원소를 추가할 수도 있다. MATLAB for Engineers
콜론 연산자(:) • 행렬을 새로 만드는 데 사용 • 이미 만든 행렬에서 특정 원소들을 뽑아내는 데 사용 • 이미 만든 행렬에서 특정 원소들의 값을 바꿀 때 사용 MATLAB for Engineers
간격이 일정한 벡터 간격 지정하기 간격 값을 지정하지 않으면 매트랩은간격을 1로 잡는다. 간격을 0.5로 지정하는 경우 MATLAB for Engineers
콜론 연산자는 전체 행 또는 전체 열을 가리키는 데 사용된다. 모든 행의 원소 중에서 1열에 있는 원소 모든 행의 원소 중에서 4열에 있는 원소 1행에 있는 원소 중에서 모든 열의 원소 MATLAB for Engineers
특정한 행이나 열을 뽑아내는 방법( 행1: 행2, : ) 2~3행에 있는 원소 중에서 모든 열의 원소 2~3행에 있는 원소 중에서 4~5열에 있는 원소 MATLAB for Engineers
행렬을 열 벡터로 변환하는 방법 콜론 하나만을 입력에 넣으면 행렬이 열벡터로 바뀐다. 매트랩에서는 행보다는 열이 우선이다. MATLAB for Engineers
행렬 안의 특정 원소를 가리키는 방법 • 인덱스 번호 두 개를 사용(행번호와열번호) • 예: M(2,3) 한 개의 인덱스 번호를 사용하여 M(8) 이라고 해도 M(2,3) 과 마찬가지이다. 2행, 3열의 원소를 가리키려면 M(2,3) 한 개의 인덱스 번호의 순서 MATLAB for Engineers
end는 행렬의 마지막 행이나 마지막 열을 가리키므로 행렬의 크기가 얼마인지 신경쓰지 않아도 된다. 1행, 마지막 열의 원소 마지막 행, 마지막 열의 원소 맨 마지막 원소 MATLAB for Engineers
실습문제 4.1 풀어보기 MATLAB for Engineers
4.2 두 변수 사이의 연산 지금까지는 단 1개의 변수만을 사용하는 계산을 공부하였다. 그런데, 대부분의 물리적인 현상은 다양한 요인(즉 변수)에 의해 변하게 된다. 지금부터는 행렬인 변수가 여러 개 존재할 때 계산을 수행하는 방법을 배운다. MATLAB for Engineers
스칼라 끼리 연산을 하면 스칼라 값이 나온다. MATLAB for Engineers
스칼라와 벡터 사이의 연산을 수행하면 벡터가 된다. MATLAB for Engineers
벡터와 벡터를 곱하려면 원소의 수가 서로 같아야 한다. MATLAB for Engineers
배열 곱셈( .* ,즉 원소끼리의 곱셈)을 해서 얻는 벡터의 원소 수는 원래 벡터의 원소 수와 같다. x 와 y벡터의 크기는 같아야 한다. MATLAB for Engineers
배열 곱셈 (원소끼리의 곱셈) MATLAB for Engineers
meshgrid함수를 이용하면 두 벡터(1차원 행렬)를2차원 격자(grid) 행렬로 만들 수 있다. MATLAB for Engineers
두 행렬의 크기가 같으므로 서로 곱할 수 있다. MATLAB for Engineers
따라서 x와 y의 모든 조합에 대해 곱셈을 한 결과를 얻을 수 있다. MATLAB for Engineers
실문문제4.2 풀어보기 MATLAB for Engineers
예제 4.2: 수평선까지의 거리 MATLAB for Engineers
1. 문제를 명확히 나타낸다. • 달과 지구의 산꼭대기에서 수평선까지의 거리를 구한다. • 산의 높이는 0~8000m 범위로 한다. MATLAB for Engineers
2. 입력과 출력을 표시한다. • 입력 • 달의 반지름 R=1737 km • 지구의 반지름 R=6378 km • 산의 높이 h=0~8000 m • 출력 • 산꼭대기에서 수평선까지의 거리 d=? MATLAB for Engineers
3. 손이나 계산기로 문제를 미리 풀어본다. (168쪽 참조) MATLAB for Engineers
4. 매트랩으로 문제를 푼다. • 손으로 푼 과정을 참고하면서 매트랩으로 문제를 풀어본다.(교재 168~169쪽) MATLAB for Engineers
5. 풀이를 검사한다. • 손으로 계산한 결과와 일치하는지 확인 • 이치에 맞는 답인지 확인 MATLAB for Engineers
예제 4.3: 자유낙하 MATLAB for Engineers
1. 문제를 명확히 나타낸다. • 중력이 서로 다른 행성에서 자유낙하 물체의 낙하거리를 구한다. MATLAB for Engineers
2. 입력과 출력을 표시한다. • 입력 • 각 행성과 달에서의 • 중력가속도 g 값 • 낙하시간 t=0~100초 • 출력 • 각 행성과 달에서의 • 낙하거리 d MATLAB for Engineers
3. 손이나 계산기로 문제를 미리 풀어본다. (170쪽 참조) • 수성에서 100초 동안 낙하한 거리? MATLAB for Engineers
4. 매트랩으로 문제를 푼다. • 손으로 푼 과정을 참고하면서 매트랩으로 문제를 풀어본다.(교재 171~172쪽) MATLAB for Engineers
M파일 실행결과 MATLAB for Engineers
5. 풀이를 검사한다. • 손으로 계산한 결과와 일치하는지 확인 • 이치에 맞는 답인지 확인 MATLAB for Engineers
4.3 특수 행렬 zeros 원소의 값이 모두 0인 행렬을 만든다. ones 원소의 값이 모두 1인 행렬을 만든다. diag행렬의 대각선에a 있는 원소를 뽑아낸다. 대각선 행렬이나 단위행렬을 만드는 데도 사용된다. Magic 마방진 행렬을 만든다 MATLAB for Engineers
zeros, ones에 스칼라 입력을 한 개만 넣어주면 정사각형 행렬을 만들 수 있다. MATLAB for Engineers
두 개의 입력을 사용하면 행의 수와 열의 수를 지정할 수 있다. MATLAB for Engineers
diag 함수 • 정사각형 행렬에 diag함수를 사용하면 주 대각선에 있는 원소들을 뽑아낼 수 있다. MATLAB for Engineers
diag 함수 • diag함수의 입력에 벡터를 넣으면 그 벡터의 원소들이 주 대각선에 배치된다 MATLAB for Engineers
마방진 행렬 MATLAB for Engineers
미 목판화는 알브레히트 뒤러 (Albrect Durer)가 1514년에 제작한 멜랑콜리아(Melancholia)이다. 이 그림에서 천사의 머리 위에 마방진 행렬이 있는 것을 을 볼 수 있다. MATLAB for Engineers
뒤러는 마방진 행렬에 제작년도를 써 넣었다. MATLAB for Engineers