sigma665 发表于 2008-8-20 10:37

求导分母为0了

x=2+a*t

y=x^2

要求y对x的导数,用数值方法求
对于一般的a,很容易

但是,当a=0时,x对t导数是0

y_diff_x=y_diff_t / x_diff_t
分母为0,结果无穷大了
如下:

t=-1:0.1:1;a=eps;
x=2+a*t;
y=x.^2;
y_diff_t=diff(y);
y_diff_x=y_diff_t /a;

正确的结果应该是4

这该怎么处理

sogooda 发表于 2008-8-20 10:53

先用符号求解,之后代入如何?

sigma665 发表于 2008-8-20 11:32

回复 沙发 sogooda 的帖子

表达式太复杂
符号求解有点慢

无水1324 发表于 2008-8-20 17:59

回复 楼主 sigma665 的帖子

没有看懂你的意思哈
y对x求导那么就是
y=x^2对x求导得到 y'=2x;
而x=2,也就是说在x=2时y的导数是多少:y‘=2*2=4?

不知道你上面是不是说这个?

sigma665 发表于 2008-8-20 18:05

回复 地板 无水1324 的帖子

简单的表达式,可以这样

现在的表达式很复杂,需要用复合求导算

messenger 发表于 2008-8-20 19:13

回复 5楼 sigma665 的帖子

你举的这个例子不恰当

其实,你举的这个例子没有导数

最好把要求的表达式写出来

无水1324 发表于 2008-8-20 19:29

回复 5楼 sigma665 的帖子

可能,复合函数求导比较麻烦。

to:mess.
      这个对x的导数应该是存在的

sigma665 发表于 2008-8-22 13:40

知道了

由于y和x关系不变,所以无论a怎么变都对y-x关系无影响

所以选择一个a值
得到y和x对应关系
然后再用多项式拟合之,并对x求导
最后将x值代入即可

原始问题,表达式复杂,无法直接对x求导

sigma665 发表于 2008-8-23 17:08

clear all;
clc
t=0:.1:1;
for i=1:length(t)
    y=3+t(i);
    x=2+t;
    z=x.^2+y.*x+log(x.*y)-1./x;
    sp=csapi(x,z);
    %fnplt(sp); hold on;
    dsp=fnder(sp,1);%微分
    zz(i,:)=fnval(dsp,x);
end
zz=diag(zz);


如上:
每对应一个y值,有一个z
样条拟合z-x,微分
然后再将x代入,得到zz

由于x,y是同步的,zz的对角线才是希望的x=某值的原始表达式的微分值

不知道我的这个思路对不对
根据这个表达式,结果是对的

但是,我用另外一个复杂表达式,结果有出入
是否我举的这个例子是特例呢

messenger 发表于 2008-8-23 20:35

回复 9楼 sigma665 的帖子

思路倒是很清晰

不过,觉得你的这个方法的结果的正确性与原始表达式有关系

[ 本帖最后由 messenger 于 2008-8-23 20:58 编辑 ]

科技在线 发表于 2008-8-24 10:02

求导的分子是o?
如果是的话,可能就得回代字母来求了
页: [1]
查看完整版本: 求导分母为0了