2013-08-20 2 views
2

나는 matlab에 초보자이며 현재 matlab에서 수학 함수를 해결하는 방법을 찾고있다.matlab에 수학 함수를 평가하는 방법?

내가 원하는 것은, 나는 x = 2 인 x (x) = x^2 + 2x + 1 함수를 풀고 싶다. x^2 + 2x + 1과 2를 입력으로 받아서 출력하고 싶습니다.

이 부분은 link입니다. 어떻게 수학 함수를 풀어 내는지 보았습니다. 링크에서 사용할 수 절차는 다음과 같습니다 그래서

>>f = @(x) 2*x^2-3*x+4; 
>>f(3) 
ans = 13 

, 난 내 스크립트에 다음과 같은 부분을 썼다 :

F=input('enter function: ','s'); 
v = input('parameter: '); 
[email protected](x)F; 
disp(f(v)); 

전 X + 1과 3의 입력으로 제공, 난 점점 오전 ANS입니다 x + 1. 이 문제를 해결하는 방법?

미리 감사드립니다.

+0

! 어느 쪽을하고 싶니? 명확하게. –

+0

나는 해결의 절차를 원했다. 다른 사용자가 제목을 변경했습니다. – shaashwato

+0

예,하지만 방정식을 "해결"하는 것은 당신이하고자하는 것이 아닙니다. 실제로 평가입니다. –

답변

3

F 변수는 문자열이고 이는 단지 "x + 1"입니다. 이 문자열을 함수로 해석하여 수치 값을 얻으려면 matlab에 요청해야합니다. 그렇게하는

한 가지 방법은 아래의 의견에 따라 eval

F = input('enter function: ', 's'); 
v = input('parameter: '); 
myfun = sprintf('@(%s) %s', v, F); % a string 
f = eval(myFun); % interpret string as a command 
f(3), % do the math - evaulate F(3) 

편집, 해명을 사용하는 것입니다 :
위의 솔루션은 F, 가질 수있는 수학 공식을 나타내는 입력 문자열 가정 사용자 - 선택된 변수 (즉, 알 수없는 문자는 'x' 일 필요는 없으며, 'y', 'a' 등일 수 있습니다). comunicate하기 위해서, v은이 정보를 저장하는 char입니다. 경우

F 항상 'x'에 의존하는 경우, 상기 원하는 출력은 다음의 수정이 필요한 수치 v위한 F(v)이다

기능을 해결하고 평가 사이에 큰 차이가
myfun = sprintf('@(x) %s', F); 
f = eval(myfun); 
F_of_v = f(v) 
+0

스크립트에서 ur 부분을 쓸 때 다음 오류가 발생합니다. 오류 시작 >> > 3의 무제한 메시지 ??? 오류 : 입력 문자가 MATLAB 문 또는 표현식에서 유효하지 않습니다. ==> 4의 제목 없음 오류 f = eval (myfun); 문자열을 명령으로 해석합니다. << ERROR ENDS 매개 변수 값이 정수가되므로 3 행을 "myfun = sprintf ('@ (% i) % s', v, F);"로 대체했습니다. 다음 오류가 발생했습니다. 오류 시작 >> ??? 오류 : 예기치 않은 MATLAB 표현식. ==> 4의 제목 없음 오류 f = eval (myfun); 문자열을 명령으로 해석합니다. << 오류 종료 무엇이 문제입니까? 감사합니다. – shaashwato

+1

@shaashwato 있어야합니다 : myfun = sprintf ('@ (x) % s', F); f = eval (myfun); f (v)'. – Marcin

+0

@Marcin, 작동합니다! 고마워. – shaashwato

관련 문제