2016-08-21 6 views
1

현재 이전 함수의 출력을 사용하는 함수를 작성하려고합니다. 다음과 같이 출력은 다음과 같습니다한 함수의 출력을 다른 함수의 입력으로 사용

f(x) = exp(x) -3*x.^2 
fp(x) = exp(x) -6*x 
fpp(x) = exp(x) -6 

새로운 기능은 다음과 같습니다

x_new = x - 2*(f(x))*(fp(x))/2*(fp(x).^2) -(f(x))*(fpp(x)) 

이 스크립트 파일 이전에 나를 위해 일하기 때문에 [f,fp,fpp] = fun(x)를 작성하는 시도하지만 지금은 그것의

오류를 말하는 충분하지 않은 입력 인수

감사합니다.

원래 질문 :

The question

+0

나는 어떻게 불리는 지 실제로 이해하지 못합니다. 그리고 반환 값'f','fp' 및'fpp'는'x_new' 만 있으면 무엇을 의미합니까? 그리고 만약 당신의 함수가'재미'라면,'재미 (x)'가 아닌가요? –

+0

'f','fp' 및'fpp'는 첫 번째 함수의 기호 형태로 출력됩니다. 'x_new'는 두 번째 함수의 출력입니다. 예, 불행하게도 'fun (x)'를 의미합니다. –

답변

0

나는 그것이 작동하지 않는 이유를 알고하지 않습니다하지만 아래 코드는 나를 위해 잘 작동 생각 :

function[f,fp,fpp,x_new]=fun(x) 
f=exp(x) -3*x.^2 ; 
fp=exp(x) -6*x ; 
fpp=exp(x) -6; 
x_new= x - 2*(f)*(fp)/2*(fp.^2) -(f)*(fpp); 
return 


x=1234; 
for ind=1:10 
    [f,fp,fpp,x]=fun(x); 
end 
+0

반복이라고 가정하면 :) –

+0

반복입니다. x_new는 두 번째 함수의 유일한 출력 인수이므로'function [f, fp, x_new] = fun (x)'함수 [x_new] = halley (fun, x, acc)'를 읽지 않아야합니까? FYI'halley'는 두 번째 함수의 이름이고'fun'는 첫 번째 함수의 이름입니다 (출력은'f','fp','fpp'입니다.)'acc'는 주어진 값이고'x'는 ''-5 '''간격은 함수에서 사용되지 않고 대신 while 루프에서 사용됩니다. –

0

나는 확실하지 않다 수학은 여기에 있지만 함수는 하나만 있으면 다음과 같이 보일 것입니다.

function r = halley(fun,x0,acc) 
syms x 
fp = diff(fun); 
fpp = diff(fp); 
x_new = symfun(x - 2*(fun(x))*(fp(x))/2*(fp(x).^2) -(fun(x))*(fpp(x)),x); 
xold = x0; 
xnew = x_new(xold); 
while abs(fun(xold)) < acc && abs(xold-xnew) > acc 
    tmp = xnew; 
    xnew = x_new(xold); 
    xold = tmp; 
end 
r = xnew; 
end 

한 다음 입력으로 다른 기능을 스크립트에서 호출 :

acc = 1.0e-8; 
x0 = -5; 
syms x 
fun = symfun(exp(x) -3*x.^2 +1,x); 
r = halley(fun,x0,acc) 

그러나,이 운동에 함수의 입력이 어쩌면 당신은 사용하지 말아야합니다, @fun 같은 기능 핸들해야한다고 말한다 상징적 인 수학? 이 방법이 어떻게 작동해야할지 모르겠지만 이것이 이것이 더 명확 해지기를 바랍니다.

+0

'-5'에'x' 값을위한 시작점을 어떻게 넣어야합니까? 연속적인 'x'값의 차이가 입력 'acc'(값이 '1.0e -8')보다 작을 때와 'abs (fun (x))

+0

'fun (x)'는 3 개의 출력을 가지므로 – EBH

+0

당신이 질문에 더 많은 세부 사항을 추가해야한다고 생각합니다. 왜냐하면 이것이 무엇을 목적으로하는지 명확하지 않기 때문에,'acc'와'- 5 '입력을'할리 '라고하고 출력을 어떻게해야합니까? – EBH

관련 문제