matlab#6
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1.황금분할법
2.2차보간법
3.소스코드

본문내용

수치해석 과제
1.황금분할법
2.2차보간법
3.소스코드
Do it. 3차 혹은 비선형 함수를 정의하고, 독립변수의 구간을 임의로 설정하여 구간 내에서의 최소값 혹은 최대값을 아래 방법을 이용하여 구하시오.
(단, 2회 반복하여 얻은 결과를 반드시 나타내시오.)
▶▶ 시작하기 전에
① 임의로 설정한 방정식 f(x)=0이 비선형방정식이 맞는가?
- 조건식 :
- 풀 이 : 일때
이므로 비선형 방정식이 맞다.
황금분할 탐색법에서 구간을 어떻게 설정할 것인가?
구간을 설정하기위해서, 최대값 혹은 최소값 즉, 극값이 존재하여야 하고, 구간 내 극값은 단하나 존재하여야 한다. 구간 설정을 위해 함수의 그래프를 살펴보도록 하겠다.
- 그림 1.1 함수의 그래프 -
누구나 다 알고 있는 사실과 같이 의 함수는 위 그림과 같은 주기로 반복하게 되고 극값은 최대값 1 최소값 -1로 존재하게 된다. 이번과제에서 최대값을 찾는것을 목표로 구간은 으로 설정하도록 하겠다.
#5-1
▣ 황금분할 탐색법
접근 1. 황금분할법이란 무엇인가.
--
황금분할법이란 유클리드 황금비를 이용하여 중간값을 설정하여 초기구간에서 극값을 갖지 않을 구간을 버리면서 범위를 점점 좁혀나가는 방식으로 계산과정 중에 두 개의 중간값이 찾게되는데 그 두 개의 중간값 중 중간점들을 현명하게 선택해야 계산의 실수가 나지 않고 그다음 단계로 넘어가면서 극값을 찾게 된다.
접근 2. 중간값 선택은 어떻게 하는가.
--
어느 곳에 최대값이 존재할 가능성이 有 ??
그렇다면 어느 구간을 버려야할까 ??
버리는 구간
← 다음구간
--
접근 3. 임의의 함수 의 극값(최대값)을 찾아보도록 하자.
--
1st Try.
2nd Try.
결론 a. 2회 반복한 결과
--
--
검증. 2회 반복값은 계산과 일치하고 최종 최대값은 의 최댓값인 1이 나왔다.
#5-2
▣ 2차보간법
접근 1. 2차보간법이란 무엇인가.
--
최적값 근처의 를 크기순서에 맞는 임의의 세 점()을 지나는 2차 함수 로 근사화 시켜보면 의 극값인 의 위치는 기울기가 0이되는 지점이므로 이 되는 점이다. 그 다음 선택할 세 점은 을 둘러싼 두 점을 선택하여 크기순으로 새로이 가되어 새로운 찾고 이를 반복하여 구간을 좁혀나가는 방식이다. 를 구하는 공식은 다음과 같다.
즉, 계산과정은 다음과 같다.
초기값 설정
새로운점 계산
점 와 를 둘러싼 두 점을 선택하여, 의 왼쪽 점은 로 는 로 의 오른쪽 점은 으로 설정한다.
단계 와을 수렴할 때까지 반복
--
접근 2. 임의의 함수 초기값 의 극값(최대값)을 찾아보도록 하자.
--
1st Try.
2nd Try.
--
결론 a. 2회 반복한 결과
--
--
검증. 2회 반복값은 계산과 일치하고 최종 최대값은 의 최댓값인 1이 나왔다.
%황금분할탐색법
clear all
clc
n=0; xl=0; xu=2;
f='sin(x)'
err=0.00001;
y=1;
d=0.618*(xu-xl);
x2=xu-d;
x1=xl+d;
while err<=abs(y)
n=n;
x=x2; y2=eval(f);
x=x1; y1=eval(f);
y=abs(y1-y2);
fprintf('%2.0f번째 구간=[ %2.5f : %2.5f ] // X(1)=%2.6f X(2)=%2.6f f[X(1)]=%2.6f f[X(2)]=%2.6f \n',n,xl,xu,x1,x2,y1,y2)
if y2>y1
xl=xl;
xu=x1;
x1=x2;
d=0.618*(xu-xl);
x2=xu-d;
else if y1>y2
xl=x2;
xu=xu;
x2=x1;
d=0.618*(xu-xl);
x1=xl+d;
end
end
n=n+1;
end
%2차보간법
clear all
clc
f='sin(x)'
n=-1; x1=0; x2=1; x3=2; z=0;
fprintf('2차 보간법으로 극값구하기\n');
fprintf(' n x(1) x(2) x(3) x(4) f[x(4)] \n');
while z<1;
n=n+1;
x=x1; y1=eval(f);
x=x2; y2=eval(f);
x=x3; y3=eval(f);
x4=x2-(1/2)*((y2-y3)*((x2-x1)^2)-(y2-y1)*((x2-x3)^2))/((x2-x1)*(y2-y3)-(x2-x3)*(y2-y1)); y4=eval(f);
z=y4;
fprintf('%2.0f %2.5f %2.5f %2.5f %2.5f %2.5f \n',n,x1,x2,x3,x4,y4);
if x4 x1=x2;
x3=x3;
x2=x4;
else if x1 x1=x1;
x3=x2;
x2=x4;
end
end
end
clear all
clc
x=-3.14:0.001:3.14;
y=sin(x);
plot(x,y)
grid on
  • 가격1,200
  • 페이지수10페이지
  • 등록일2011.12.24
  • 저작시기2011.6
  • 파일형식한글(hwp)
  • 자료번호#722995
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니