%(1) 임의의 비선형 함수 f(x)를 설정하고, 이를 어느 한 점 c에서 4차의 Taylor 다항식으로 근사화한 값을 구하시오.
%(2) 위에서 설정한 함수 f(x)를 이용하여 g(x) = f(x) - x - 1 = 0 를 만족하는 해를 이분법 및 Matlab을 사용하여 구하시오.
%답에는 소스 코드와 실행 결과 및 답을 명시하시오.
%(3) h(x) = f(x) - exp(-x) -1 = 0 를 만족하는 해를 Newton 방법 및 Matlab을 사용하여 구하시오.
%답에는 소스 코드와 실행 결과 및 답을 명시하시오.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%테일러 다항식%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syms x
c = 0;
val_1 = -10: 1 : 10; % x 입력값
n = 4; %n차까지의 테일러 급수 전개
fx = (x^4) -(2.*x^3) -(x^2) +5;% 비 선형 함수 선언.
p4 = taylor(fx, n, c); % 4차까지의 테일러 급수 전개, 이때 c=0
%그래프 그리기
sol_1 = subs(fx, val_1);
sol = subs(p4, val_1);
plot(val_1, sol_1) %fx의 그래프
hold
plot(val_1, sol, '-r') %P4 의 그래프
title('fx = x^4 + 2*x^3 - x^2 + 2 // p4 = taylor(fx, 4, 0) n=4, c=0')
grid on
axis([-10 10 -500 5000]);
%그래프 모양이 이상한것 같습니다만 각각의 변수의 값을 찾아보면 Y값이 제대로 나오고 있다는 것을 볼 수 있습니다.
%결과
fx
p4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%(2) 이분법%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gx = fx - x - 1;
%그래프 그리기
sol_2 = subs(gx, val_1); %gx 에 대입
figure
plot(val_1, sol_2)
title('이분법 gx = fx - x - 1') % x^4-2*x^3-x^2+4-x
grid on
hold
%그래프 끝
an = 0; % 구간
bn = 5; % 구간
cn = (an+bn)/2; %중간값
n=0; % 카운트
error = 0.000000001; % 허용되는 오차의 한계
while (bn - cn) >= error % bn - cn이 허용하는 오차보다 작을 때 까지(클 때) 계속 반복
f_b = subs(gx, bn); %함수에 대입
f_c = subs(gx, cn); %함수에 대입
n = n +1;
plot(bn, subs(gx, bn),'ro')
plot(cn, subs(gx, cn),'bo')
if (f_b * f_c) <= 0 %b와 c의 곱이 음수.
an = cn;
cn = (an+bn)/2; %
else %b와 c의 곱이 양수
bn = cn;
cn = (an+bn)/2;
end
fprintf('나눈 횟수:%2.0f , an:%2.10f, bn:%2.10f, cn:%2.10f 오차:%2.4e \n', n,an,bn,cn,bn-cn)
%2.0f 의 의미 : 2는 소수점 앞의 칸수 0은 수수점 뒤의 자리수.
%값이 이상하게 나오는거 같은데 책에있는 예제소스로 실행 해본 결과 동잏라게 나오는걸 확인할 수있었습니다.
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%NEWTON 방법%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%h(x) = f(x) - exp(-x) -1 = 0 를 만족하는 해를 Newton 방법 및 Matlab을 사용하여 구하시오.
%x_n+1 = x_n - fx/dfx
hx = fx - exp(-x) -1; % h(x)=0
dhx = diff(hx); % h(x)의 미분
data = -10:0.1:10;
figure
plot(data, subs(hx, data));
grid on
hold
n=0; %카운트
xn = -10; % 초기값 x_n
error = 10^(-5); %오차
sol = 1; %출력오차
% xnplus1 x_n+1
% q h(xn)
% dq d hx(xn)
% sol (x_n) - (x_n+1)
while sol>=error
n=n+1 ;
q = subs(hx, xn); % xn 대입
dq = subs(dhx, xn); % xn 대입
xn_plus1 = xn - q/dq; % x_n+1 = x_n - fx/dfx
sol = abs(xn_plus1 - xn); % 오차검사 절대값
fprintf('%2.0f 번째 | x_n+1 = %2.10f | h(xn)=%2.4e | (x_n)-(x_n+1)=%2.4e \n', n, xn_plus1, q, sol)
plot(xn, q, '<');
xn = xn_plus1 ; % x_n+1 의 값을 x_n에 대입.
end
title('NEWTON')
결과
(1) 임의의 비선형 함수 f(x)를 설정하고, 이를 어느 한 점 c에서 4차의 Taylor 다항식으로 근사화한 값을 구하시오.
fx = (x^4) -(2.*x^3) -(x^2) +5
p4 = 5-x^2-2*x^3
(2) 위에서 설정한 함수 f(x)를 이용하여 g(x) = f(x) - x - 1 = 0 를 만족하는 해를 이분법 및 Matlab을 사용하여 구하시오.
나눈 횟수: 1 , an:0.0000000000, bn:2.5000000000, cn:1.2500000000 오차:1.2500e+000
나눈 횟수: 2 , an:1.2500000000, bn:2.5000000000, cn:1.8750000000 오차:6.2500e-001
나눈 횟수: 3 , an:1.8750000000, bn:2.5000000000, cn:2.1875000000 오차:3.1250e-001
나눈 횟수: 4 , an:2.1875000000, bn:2.5000000000, cn:2.3437500000 오차:1.5625e-001
나눈 횟수: 5 , an:2.1875000000, bn:2.3437500000, cn:2.2656250000 오차:7.8125e-002
나눈 횟수: 6 , an:2.2656250000, bn:2.3437500000, cn:2.3046875000 오차:3.9063e-002
나눈 횟수: 7 , an:2.2656250000, bn:2.3046875000, cn:2.2851562500 오차:1.9531e-002
나눈 횟수: 8 , an:2.2851562500, bn:2.3046875000, cn:2.2949218750 오차:9.7656e-003
나눈 횟수: 9 , an:2.2851562500, bn:2.2949218750, cn:2.2900390625 오차:4.8828e-003
나눈 횟수:10 , an:2.2900390625, bn:2.2949218750, cn:2.2924804688 오차:2.4414e-003
나눈 횟수:11 , an:2.2924804688, bn:2.2949218750, cn:2.2937011719 오차:1.2207e-003
나눈 횟수:12 , an:2.2937011719, bn:2.2949218750, cn:2.2943115234 오차:6.1035e-004
나눈 횟수:13 , an:2.2943115234, bn:2.2949218750, cn:2.2946166992 오차:3.0518e-004
나눈 횟수:14 , an:2.2946166992, bn:2.2949218750, cn:2.2947692871 오차:1.5259e-004
나눈 횟수:15 , an:2.2946166992, bn:2.2947692871, cn:2.2946929932 오차:7.6294e-005
나눈 횟수:16 , an:2.2946166992, bn:2.2946929932, cn:2.2946548462 오차:3.8147e-005
나눈 횟수:17 , an:2.2946166992, bn:2.2946548462, cn:2.2946357727 오차:1.9073e-005
나눈 횟수:18 , an:2.2946357727, bn:2.2946548462, cn:2.2946453094 오차:9.5367e-006
나눈 횟수:19 , an:2.2946453094, bn:2.2946548462, cn:2.2946500778 오차:4.7684e-006
나눈 횟수:20 , an:2.2946500778, bn:2.2946548462, cn:2.2946524620 오차:2.3842e-006
나눈 횟수:21 , an:2.2946500778, bn:2.2946524620, cn:2.2946512699 오차:1.1921e-006
나눈 횟수:22 , an:2.2946512699, bn:2.2946524620, cn:2.2946518660 오차:5.9605e-007
나눈 횟수:23 , an:2.2946518660, bn:2.2946524620, cn:2.2946521640 오차:2.9802e-007
나눈 횟수:24 , an:2.2946518660, bn:2.2946521640, cn:2.2946520150 오차:1.4901e-007
나눈 횟수:25 , an:2.2946518660, bn:2.2946520150, cn:2.2946519405 오차:7.4506e-008
나눈 횟수:26 , an:2.2946518660, bn:2.2946519405, cn:2.2946519032 오차:3.7253e-008
나눈 횟수:27 , an:2.2946518660, bn:2.2946519032, cn:2.2946518846 오차:1.8626e-008
나눈 횟수:28 , an:2.2946518846, bn:2.2946519032, cn:2.2946518939 오차:9.3132e-009
나눈 횟수:29 , an:2.2946518846, bn:2.2946518939, cn:2.2946518892 오차:4.6566e-009
나눈 횟수:30 , an:2.2946518846, bn:2.2946518892, cn:2.2946518869 오차:2.3283e-009
나눈 횟수:31 , an:2.2946518869, bn:2.2946518892, cn:2.2946518881 오차:1.1642e-009
나눈 횟수:32 , an:2.2946518869, bn:2.2946518881, cn:2.2946518875 오차:5.8208e-010
(3) h(x) = f(x) - exp(-x) -1 = 0 를 만족하는 해를 Newton 방법 및 Matlab을 사용하여 구하시오.
1 번째 | x_n+1 = -9.4197984902 | h(xn)=-1.0122e+004 | (x_n)-(x_n+1)=5.8020e-001
2 번째 | x_n+1 = -9.0811213396 | h(xn)=-2.8697e+003 | (x_n)-(x_n+1)=3.3868e-001
3 번째 | x_n+1 = -8.9743166020 | h(xn)=-5.6773e+002 | (x_n)-(x_n+1)=1.0680e-001
4 번째 | x_n+1 = -8.9650290911 | h(xn)=-4.2177e+001 | (x_n)-(x_n+1)=9.2875e-003
5 번째 | x_n+1 = -8.9649635836 | h(xn)=-2.9335e-001 | (x_n)-(x_n+1)=6.5507e-005
6 번째 | x_n+1 = -8.9649635804 | h(xn)=-1.4492e-005 | (x_n)-(x_n+1)=3.2365e-009
'삽질기초 > ETC' 카테고리의 다른 글
데시벨 [ decibel/ dB ] (0) | 2009.04.20 |
---|---|
EMC/EMI (0) | 2009.04.20 |
[MATLAB] 3*3 역행렬 (0) | 2009.04.16 |
웹에서 수식 입력 그리고 이미지로. (0) | 2009.04.14 |
MOSFET 의 턴온 턴오프. (0) | 2009.04.07 |