게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
프로-프로그래머 여러분 옥체강녕하시옵니까
게시물ID : programmer_22425짧은주소 복사하기
작성자 : 눈이나린다
추천 : 0
조회수 : 1325회
댓글수 : 7개
등록시간 : 2018/06/03 00:02:22
옵션
  • 본인삭제금지
 
소인, 대감께 감히 여쭐것이 있어 이렇게 오게 되었습니다....
부디 하루종일 붙잡고 머리 싸매는 까막눈 소인에게 힌트를 좀 주시면....
 
****사진에 붙은 문제 번호는 무시해주세요...
 
 
캡처.PNG
 
라는 문제가 있어서
 
강의 교재에 있는 아래 예제 두개를 보고
참고한 예제 1.
-fsolve 함수를 이용하여 다음의 문제를 풀어 보자.

먼저 다음과 같은 m-file(이름: test.m)을 만들자.

function [f]=test(x)

f(1,1)=x(1)^2+x(2)^2-2;

f(2,1)=x(1)*x(2)+x(1)+2*x(2)-4;

return

 
다음으로 아래를 실행하면 근을 찾아 준다.

>> [x fval] = fsolve(@test,[2 0])

Optimization terminated: first-order optimality is less than options.TolFun.

x =
 
    1.0000    1.0000
 
fval =
  1.0e-007 *
    0.1893
   -0.0908

 
참고한 예제 2
캡처.PNG
 
function [F]=myfunc(x)
    Ca=x(1);
    Cb=x(2);
    Cc=x(3);
    Cd=x(4);
   
    k1=1;
    k2=0.2;
    k3=0.05;
    k4=0.4;
    Vr=100;
    Q=50;
    Ca0=1;
   
    F(1)=-Ca+Ca0+Vr*(-k1*Ca-k2*Ca^1.5+k3*Cc^2)/Q;
    F(2)=-Cb+Vr*(2*k1*Ca-k4*Cb^2)/Q;
    F(3)=-Cc+Vr*(k2*Ca^1.5-k3*Cc^2+k4*Cb^2)/Q;
    F(4)=-Cd+Vr*(k4*Cb^2)/Q;
return
다음으로 fsolve함수를 이용하여 근을 찾는다.
>> [x fval]=fsolve(@myfunc,[1.0 0.0 0.0 0.0])
Optimization terminated: first-order optimality is less than options.TolFun.
x =
    0.3189    0.7839    0.5350    0.4916
fval =
  1.0e-009 *
    0.0696   -0.7838    0.7144    0.7841
 
 
-----------------------------------------------------------------------------------------------------------------------------
 
캡처.PNG
이 문제를 풀기 위해서 위 두개를 보고
1번 문제를 보고 fsolve를 사용하면 되겠다는 생각이 들어서
fsolve를 쓰는 다른 예제인 2번 예제에서 미지수를
 Ca=x(1);
    Cb=x(2);
    Cc=x(3);
    Cd=x(4);
이런식으로 뒀으니까 저도 식에 있는 미지수를
x=x(1);
y=x(2);
z=x(3);
 
이렇게 둬서
솔직히 저거나 이거나 다를거 업잖아요
그래서 결국에
 
이렇게 짜 봤어요
function [F]=mat04(x)
x=x(1);
y=x(2);
z=x(3);
F(1,1)=2*x-y-z;
F(2,1)=X^4-0.5*y^2-0.5*z^2;
F(3,1)=2*exp(x)-exp(y)*(1+z);
return
 
그다음 예제에 나온거랑 비슷하게

[x fval]=fsolve(@mat04,[1.0 0.9 1.2])
이렇게 돌렸어요
초기값이 x=1
y=0.9
z=1.2
로 두라고 해서요
 
2번이랑 문제 형식도 비슷하다고 생각하고 결과값 돌리는거도
[x fval]=fsolve(@myfunc,[1.0 0.0 0.0 0.0])
[x fval]=fsolve(@mat04,[1.0 0.9 1.2])
다를거 하나도 없는데
이런 메세지가 떠서요
 
 [x fval]=fsolve(@mat04,[1.0 0.9 1.2])
인덱스가 배열 경계를 초과합니다.
오류 발생: mat04 (line 3)
y=x(2);
오류 발생: fsolve (line 242)
            fuser = feval(funfcn{3},x,varargin{:});
원인:
    Failure in initial objective function evaluation. FSOLVE cannot continue.
 
근데 제가 1번의 x(1)*x(2) 이렇게 되어있던걸
x=x(1)
y=x(2) 이런식으로 고쳐서 돌렸을때도 위와 비슷한 메세지가 떴었어요
대체 뭐가 문제인건가요....
아 대체왜안대 ㅈㅇ매ㅓ야ㅜㅁㅈ우ㅕㅁㅇㄿㅁ농ㅎ'메대럼ㄷ'랴ㅓㄴ애푸내ㅕㅎㅁㄷ'ㅑㅗㅁ'게ㅑ런해ㅜㄹㄴㅍ;ㅐ눙ㅎ['ㅁㅔㅑ]댷ㄷ메해ㅏㅁㄷ]ㅎ
ㄴ마ㅙㄴㅇ이거말고도할거만은데ㅔㅇㅁ-아므라췅ㅍ'ㅔ냗ㅎㅁ뗴ㅑ헌'야ㅔ퍼ㅑㅑㅁ렂ㅁ
 
 
소인을좀 구제해 주시옵소서 대감..
출처
보완
2018-06-03 00:09:16
0
이땅에 태어난후 강산이 두번 바뀌고도 남을 시간동안....
할줄 아는 언어는 한국어 밖에 없는데
갑자기 이스탄불 말을 들고와서 유창한 연설을 하라는 말을 들은 기분....
꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호