登录论坛

查看完整版本 : [求助]想求e指数函数的N次导数


zbb
2008-05-15, 11:39
刚接触matlab,跪求各位高手了。。。。。。
由于函数较复杂g=exp(-r*(1- s*(1-p+p*s)/((1+p)^(N-1)+s*(1-p+p*s)*(1-(1+p)^(N-1)))));
想求其各阶导数,但到十几阶之后导数式子很复杂,赋值代入很慢,用工作站跑起来也很慢,貌似需要很多天
先把程序附上,求教各位高手,有没有好的方法,请不吝赐教
syms g; syms s; syms p;syms N; syms f;syms r;syms i;
g=exp(-r*(1- s*(1-p+p*s)/((1+p)^(N-1)+s*(1-p+p*s)*(1-(1+p)^(N-1)))));
L1=zeros(100,1); j=1;
for i=1:100;
g=diff(g,'s');
r=1;s=0; N=200;p=10^(1/200)-1;
f=subs(g);
j=j*i;
L1(i)=f/j
end;
plot([1:100],L1);

zbb
2008-05-16, 14:59
各位高手请帮帮忙啊
我真的没有办法了
谢谢各位阿。。。。。。

zbb
2008-05-20, 09:10
没有人帮帮我吗 :cry:

zbb
2008-06-03, 10:18
:cry:

fanxing39
2008-06-04, 15:09
syms s p N r
g=exp(-r*(1- s*(1-p+p*s)/((1+p)^(N-1)+s*(1-p+p*s)*(1-(1+p)^(N-1)))));
L1=zeros(100,1); j=1;
g=diff(g,'s');
r=1;s=0; N=200;p=10^(1/200)-1;
f=subs(g);
n=1:100;
L1=f./factorial(n);
plot([1:100],L1);

解释: factorial(n) 就是求阶乘的,你的f 原来只需要算一次,所以 放到你的for 循环里,就多计算了99次,增加了它的计算量,并且阶乘也是你自己编程算,这个没有直接调用 函数 算起来快
在计算一个程序前,如果以前的程序结果你不需要调用,建议加 “clear” (清除内存中的变量)

fanxing39
2008-06-04, 15:10
你原来的程序里 没有求 高阶导数吧 :smile:

fanxing39
2008-06-04, 15:18
对不起,我看错了一点你的程序,
我觉得你的程序好像是在算 泰勒展开式哦 !

taylor 就是泰勒展开式的命令,你看下

能说下你的要做什么不?这样更容易帮到你:heart:

zbb
2008-09-04, 15:16
我已经用泰勒展开搞定了 谢谢你哦 :)