Newton Raphson真的是慢循环和派生函数的根?

时间:2013-12-22 20:57:15

标签: matlab

我为Newton Raphson方法编写了这段代码,我遇到了一个问题:

首先:

function [k] = ex2_b(a,b,e)

clc

syms x;

df= @(x) diff(exp((sin(x))^3) + x^6 - 2*(x^4) - (x^3) - 1);
df2 =@(x) diff(df);

我想找到df和df2是否介于-2和2之间。我无法弄清楚如何使用fzero。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

你想解决函数f'(x)= 0还是只想知道[-2,2]之间是否存在根?不要在diff中使用fzero。实际上获得f'(x):

并不困难
df= @(x) (3*sin(x).^2.*cos(x).*exp((sin(x)).^3) + 5*x.^5 - 8*(x.^3) - (3*x.^2) );
fzero(df,-2)
>>-1.0634
fzero(df,2)
>>1.3895

f'(x)的根源在[-2,2]之间。

f''(x)有点复杂,但如果将sin(x).^2更改为1-cos(x).^2,仍然不会很难。

如果您只想检查根的存在,可以绘制曲线:

df= @(x) diff(exp((sin(x)).^3) + x.^6 - 2*(x.^4) - (x.^3) - 1);
x=[-3:0.1:3];
plot(x(2:end),df(x))

df2= @(x) diff(3*sin(x).^2.*cos(x).*exp((sin(x)).^3) + 5*x.^5 - 8*(x.^3) - (3*x.^2) );
x=[-1:0.01:1];
plot(x(2:end),df2(x))

或只是,

plot(x(3:end),diff(df(x)))

dfdf2都来自[-2,2]。