미지수가 4개인 3차 연립 방정식
x, y, z, w의 변수가 있고, 다음과 같이 생겼다.
$\sum a_{ijnmp} x^i y^j z^n w^m = 0$
이때, $i+j+n+m=3$인 조건과 $0 \leq i, j, n, m, p \leq 3$인 조건을 만족한다.
$(A_{1p} x+B_{1p} y+ C_{1p} z + D_{1p} w + E_{1p})(A_{2p} x+B_{2p} y+ C_{2p} z + D_{2p} w $
$+ E_{2p})(A_{3p} x+B_{3p} y+ C_{3p} z + D_{3p} w + E_{3p})=0$
이렇게 인수분해가 될까?
이렇게 되기만 한다면, 81개의 미지수가 4개인 1차 방정식으로 문제를 분해할 수 있고, 그중 3개의 답을 찾아낼 수 있게 된다.
거꾸로 저렇게 된다고 가정하고 계수들을 찾아보려는 시도를 하고 있는 중인데, 자꾸 모순이 발생해서 어디서 틀렸는지 찾는 중이다.
탄력주행
“탄력”이란 탄성력과 같은 뜻으로, 물체가 변형되었을 때 변형의 원인이 된 힘이 사라지면 다시 원래대로 되돌아가는 힘을 말한다. 따라서 이 힘은 실제로 “탄력주행”에서 사용하는 관성력과는 아무 관련이 없다. 우리가 “탄력주행”이라고 부르는 말은 그 정의에 따라 이름을 붙인다면 “관성 주행”이 정확하다. (이런걸로 한국 물리학회에서 따지진 않겠지만.)
영어로는 Inertial drive라고 하면 될 듯 하다.
영어로는 coasting이라는 용어를 사용한다. coasting의 뜻은 타성으로 나간다는 뜻으로, 동력 없이 중력이나 기타 다른 원인으로 움직인다는 뜻이다.
걱정스러운건, 이미 정착된 용어이므로 탄력주행이라는 말을 한국 사람은 어느정도 알겠지만, 만약 이 말을 그대로 영어로 직역해버리면 전혀 이해가 안되는 말이 나와버린다는 점이다. Elastic drive라고 외국인에게 말해준다면, 도대체 자동차가 얼마나 탱탱하길래 그걸로 운행이 가능하다고 말하는지 매우 신기해 할 것이다. “WOW! Wonderful Korea!!”라고 외칠지도.
자동변속기에서는 탄력주행이 별로 좋지 않다. (심지어 위험하다는 주장도 있다.) 난 수동변속기 매니아니까 클러치만 밟아도 그 탄력주행이 가능하지만.ㅋ
수단과 목적
예상점수가 50점이라는건 내 현재 실력이 그렇다는 뜻이고, 목표가 80점인 것은 그 이상 받아봐야 유학가는데 의미가 없으니 쓸데없는 노력을 안하겠다는 건데, 무슨 사람이 목표치가 그렇게 낮게 잡혀 있냐면서 100점 넘게 받아서 좋은 대학 가면 좋은거 아니겠냐고 갈궜다. 근데 그건 천재잖아. 공부 대충 하고도 수능에서 2개를 틀리는 바람에 서울대 갔다는 친구인데, 난 그런 천재형 타입이 아니다. 난 철저하게 물리학/수학에 특화된 공부를 해 왔고, 나머지는 필요한 만큼만 공부하고 필요한 만큼만 노력하는 타입이다. 나도 공부 대충하고 그 친구도 공부 대충하는데 단지 결과가 다르다는 것 뿐. 게다가 난 그 결과를, 그쪽 결과는 별로 중요하게 생각하지 않는다. 논문과 연구로 실력이 결정되는데 시험 잘봐서 뭐하게…
어쨌든, 내가 토플 100점을 넘게 받으려면 유학을 포기하고 영어 공부만 해야 하는걸…
내가 영어를 잘하기 위해서 영어 공부를 하는게 아니라, 물리학 공부를 하고 싶은데 하필 물리학자들이 영어를 주로 써서 공부하는 것 뿐이다. 물리학자들이 주로 중국어를 썼다면 중국어를 공부했을 것이고, 히브리어가 주류 언어였다면 히브리어를 공부했을 것이다. 내 목표는 물리학이지 영어가 아니다.
아무리 결과가 더 중요하고, 목적이 수단을 정당화 해 주는 시대라 하더라도, 아무리 그래도
수단이 목적을 바꾸면
안되는거 아닌가. -_-;;;;
전에도 말했듯이, 나에게 그런걸로 이래라 저래라 안했으면 좋겠는데…
노다메 칸타빌레 최종악장 전편
너가 뭘 알겠어?
금요일의 삽질극장
컴퓨터 – 랜선 – 피드스루 – 랜선 – CCD – CCD마운트
이렇게 연결되는 배선이 있는데, 랜선, 피드스루, CCD를 모두 바꿔봐도 CCD마운트에 CCD가 접촉하는 순간 오작동하는 현상이 발생했다.
누전이 문제인가 싶어서 접지를 했다가, 끊었다가, 컴퓨터랑 접지를 했다가, 끊었다가 해보고, 안되서 CCD를 완전 절연을 시켰다가 뜯었다가 해보고, 랜선도 바꿔보고 피드스루도 바꿔봤다.
결국 해결은 컴퓨터 바꾸니까 잘 되더라…
원래 2시에 세팅해서 3시부터 실험 시작할 예정이었는데 이것때문에 4시간동안 삽질하느라 실험을 못했다.
별명
남박 – 초등학교 3학년때부터 대학원때까지 학교에서 나를 알고 지낸 사람들은 나를 이렇게 부른다. 그 이유는 아는게 많아서.
snowall – 중2때부터 지금까지 온라인에서 나를 알게 되어 만난 사람들은 나를 이렇게 부른다. 그 이유는 내 ID니까.
미남 – 중3때 한정되었던 특수한 별명이다. 음악선생님이 전자피아노를 음악시간마다 들고올 사람을 선정하는데 스스로 잘생겼다고 생각하는 사람보고 손을 들으라고 해서, 내 옆자리에 앉아있던 짝궁이 내 손을 번쩍 올려주었다. 그 뒤로 중3 내내 미남 소리를 들었다는 슬픈 전설이…
중동군 – 훈련소에서 알게 된 사람 중 딱 1명만 나를 이렇게 부른다. 난 한국군이라고.
본명 – 직장에서 나를 알게 된 사람들은 나를 본명으로 부른다. 훈련소에서 알게 된 사람들도 본명으로 부른다. 그 외에 친구 몇명도 나를 본명으로 부른다. 친척들도 나를 본명으로 부른다. 근데 내 본명이 가장 어색하다. 응답 시간이 가장 늦을 것 같은 호칭이다.
int와 char
기본적으로, int는 정수형 변수고 char는 문자형 변수를 나타내는 예약어이다.
다음과 같이 선언해서 쓴다.
char b;
이렇게 하면 a는 정수 1개를 저장하는 변수가 되고 b는 문자 1개를 저장하는 변수가 된다.
b=’A’;
이렇게 사용할 수 있다.
그런데 이런것도 된다.
b=65;
이게 되는 이유는 C언어에서 문자를 숫자로 변환해서 사용하기 때문이다. 이때 변환하는 규칙은 ASCII코드표에 다 써져 있다. (ASCII코드가 아닌 다른 코드를 쓸 수도 있지만, 대세는 ASCII이다.)
다음과 같이 하면, a는 66이 되고 b는 “B”가 된다.
b++;
물론 다음과 같은 것도 된다.
printf(“%c\n”, (char)a);
printf(“%c\n”, b);
printf(“%d\n”, (int)b);
이렇게 하면 그 결과는
A
A
65
가 될 것이다.
int와 char는 공통적으로 (실제로는) 둘 다 정수 1개를 저장한다. 하지만 int로 선언한 경우와 char로 선언한 경우에는 그 해석이 달라지는데, char로 선언하면 그것을 문자 1개로 해석한다. int로 선언한 경우에는 그것을 정수로 해석한다. 그리고 char에 저장될 수 있는 내용은, 그것을 정수로 생각한다면 8비트 정수 1개만 가능하다. 하지만 int는 그 선언을 어떻게 하느냐에 따라 다 달라진다
short int a; //16비트(2바이트) 길이
long int a; //32비트(4바이트) 길이
long long int a; //64비트(8바이트) 길이. 이건 요새 64비트 컴퓨터가 늘어나면서 쓰게 되었다. 운영체제에 따라서 long long 대신 int64를 쓰는 것도 있다.
이렇듯 더 큰 숫자를 쓰기 위해서 길이를 여러가지로 지정할 수 있다.
char은 또 한가지 중요한 특징이 있는데, 웬만해서는 포인터형 변수 또는 배열 변수로 사용한다는 점이다. 만약 “snowall”이라는 문자열을 처리하기 위해서 7개의 변수가 필요하다고 할 때,
char b=’n’;
char c=’o’;
char d=’w’;
char e=’a’;
char f=’l’;
char g=’l’;
이런식으로 쓰는 프로그래머가 있을지도 모르겠지만, 아마 돈받고 일하는 프로그래머중에는 없을 것이다.
이렇게 쓰면 아주 많은 문제가 발생한다. 직접 문자열을 다루고 체험하면서 느낄 수도 있지만 그런 수고를 덜기 위해서 간단히 설명해 보자면, 저렇게 쓰면 귀찮다. (귀찮지 않다면… 뭐 굳이 저렇게 써도 상관 없지만, 혼자서 개발하는 프로그램에만 저렇게 쓰기를 바란다.) 그래서 다음과 같이 쓸 수 있다.
이렇게 쓰면 a[0]부터 a[7]까지 접근하여 snowall의 각각의 글자들을 다룰 수 있다.
1
물론 a라는 배열 변수를 이용하여 한번에 뭔가를 할 수도 있다.
하지만 이 경우에도 문제가 발생하는데, a에 저장하여야 할 문자열의 길이가 7글자가 아닌 경우이다. 이때는 다시 길이를 마음대로 바꿀 수 있는 포인터를 사용하여 선언하게 된다.
char *a;
a = malloc(sizeof(char)*8);
strcpy(a, “snowall”);
free(a);
이와 같이 쓰면 코드는 좀 복잡하지만 문자열의 길이를 맘대로 바꿔가면서 사용할 수 있다.
-
글자가 7개인데 배열이 8칸인 이유는 숨어있는 1글자 때문에 그렇다. 그 숨어있는 1글자는 자습.
[본문으로]
