声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2051|回复: 10

[编程技巧] 求导分母为0了

[复制链接]
发表于 2008-8-20 10:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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

这该怎么处理
回复
分享到:

使用道具 举报

发表于 2008-8-20 10:53 | 显示全部楼层
先用符号求解,之后代入如何?
 楼主| 发表于 2008-8-20 11:32 | 显示全部楼层

回复 沙发 sogooda 的帖子

表达式太复杂
符号求解有点慢
发表于 2008-8-20 17:59 | 显示全部楼层

回复 楼主 sigma665 的帖子

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

不知道你上面是不是说这个?
 楼主| 发表于 2008-8-20 18:05 | 显示全部楼层

回复 地板 无水1324 的帖子

简单的表达式,可以这样

现在的表达式很复杂,需要用复合求导算
发表于 2008-8-20 19:13 | 显示全部楼层

回复 5楼 sigma665 的帖子

你举的这个例子不恰当

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

最好把要求的表达式写出来
发表于 2008-8-20 19:29 | 显示全部楼层

回复 5楼 sigma665 的帖子

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

to:mess.
      这个对x的导数应该是存在的
 楼主| 发表于 2008-8-22 13:40 | 显示全部楼层
知道了

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

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

原始问题,表达式复杂,无法直接对x求导
 楼主| 发表于 2008-8-23 17:08 | 显示全部楼层
  1. clear all;
  2. clc
  3. t=0:.1:1;
  4. for i=1:length(t)
  5.     y=3+t(i);
  6.     x=2+t;
  7.     z=x.^2+y.*x+log(x.*y)-1./x;
  8.     sp=csapi(x,z);
  9.     %fnplt(sp); hold on;
  10.     dsp=fnder(sp,1);%微分
  11.     zz(i,:)=fnval(dsp,x);
  12. end
  13. zz=diag(zz);
复制代码



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

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

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

但是,我用另外一个复杂表达式,结果有出入
是否我举的这个例子是特例呢
发表于 2008-8-23 20:35 | 显示全部楼层

回复 9楼 sigma665 的帖子

思路倒是很清晰

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

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

评分

1

查看全部评分

发表于 2008-8-24 10:02 | 显示全部楼层
求导的分子是o?
如果是的话,可能就得回代字母来求了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-25 20:59 , Processed in 0.067472 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表