본문 바로 가기

학습 Q&A

강의 내용 궁금증! 교수님이 직접 답변 드립니다

  • 홈
  • 교수소개
  • 공학계열
  • 권준표 교수님
  • 학습 Q&A

ic_qna.png

강의 범위를 벗어난 질문은 답변이 어렵습니다.
비방, 욕설 등 게시판 성격과 무관한 내용은 사전 고지 없이 삭제됩니다.
답변 완료된 게시글은 수정 및 삭제 불가합니다.

kwonjunpyo_03.png

게시판 글보기
제목 답변완료 익명함수로 푸는 방법
질문유형 강좌내용 교수님 권준표
과목 매트랩 강좌명
작성자 백*민 (s******9) 등록일 2018-07-24 17:59
첨부파일

안녕하세요.

 

gradplane.m 에서

 

f=inline(`(1-y.^2).*cos(x)`,`x`,`y`);
fx=inline(`-(1-y.^2).*sin(x)`,`x`,`y`);
fy=inline(`-2*y.*cos(x)`,`x`,`y`);
a0=feval(f,x0,y0);
a1=feval(fx,x0,y0);
a2=feval(fy,x0,y0);

inline으로도 푸는 방법을 설명해 주셨는데요, inline말고 익명함수로도 해보고 싶어서 아래와 같이 해보았습니다.

 

syms x y
f= @(x,y) (1-y.^2).*cos(x);
g= @(x,y) diff(f(x,y),x);
h= @(x,y) diff(f(x,y),y);
a0=feval(f,x0,y0);
a1=feval(g,x0,y0);
a2=feval(h,x0,y0);

 

그런데 실행 오류가 나는데 feval에 함수가 아닌 f,g,h가 기호로 입력되어서 그런것인가요?

어떻게 바꾸어야 실행이 되는지 궁금합니다.

 

확인부탁드립니다. 

답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다.

댓글
0

안녕하세요?

 

기초문법 질문이여서, 바로 답변드립니다.

 

말씀하신 것 처럼, 익명함수 선언 오류로 판단됩니다.

 

위 예제에서

f=inline(`(1-y.^2).*cos(x)`,`x`,`y`);

이라고 했으니,

f 라는 변수에 여러 결과값이 입력되었습니다.

 

 

하지막 적어주신 예제에서는

f= @(x,y) (1-y.^2).*cos(x);

 

f라는 익명함수를 선언했으나,

a0 = feval(f,x0,y0);

 

그 f라는 익명함수에 아무런 변수를 입력하지 않았습니다.

a0 = feval(f(x,y),x0,y0);

이렇게 수정하면 될 것입니다.

 

이해 되시는지요?

 

 

전제 소스가 아니어서 또다른 오류가 있을 수도 있습니다. 

  • 2018-07-25
  • 2024-12-12 수정