支承点 发表于 2007-6-15 15:37

[求助]关于导数在已知点(多个点)值的问题

运行:
clear
syms Ri;
param=;
he=1;
f=(param(1).*((he-param(2))./(Ri-param(3))).*(exp(-2*param(4).*(Ri-param(5))-2.*exp(-param(4).*(Ri-param(5))))));
mk=diff(f,Ri,2)
可以得到f关于Ri 的2阶导数
mk =
-8/(Ri-4)^3*exp(-10*Ri+60-2*exp(-5*Ri+30))+8/(Ri-4)^2*(-10+10*exp(-5*Ri+30))*exp(-10*Ri+60-2*exp(-5*Ri+30))+200/(Ri-4)*exp(-5*Ri+30)*exp(-10*Ri+60-2*exp(-5*Ri+30))-4/(Ri-4)*(-10+10*exp(-5*Ri+30))^2*exp(-10*Ri+60-2*exp(-5*Ri+3

要如何做才可以给出当Ri=时的mk的值呢??
直接赋值
Ri=;
y=eval(mk)
运行提示错误是:
??? Error using ==> ^
Matrix must be square.
Error in ==> C:\MATLAB6p5\toolbox\symbolic\@sym\eval.m
On line 9==> s = evalin('caller',map2mat(char(x)));
Error in ==> C:\MATLAB6p5\work\mydiff.m
On line 8==> y=eval(mk)

[ 本帖最后由 支承点 于 2007-6-15 15:50 编辑 ]

VibrationMaster 发表于 2007-6-15 18:10

将^改成.^操作
/也必须改成 ./

[ 本帖最后由 ChaChing 于 2010-4-4 22:36 编辑 ]

eight 发表于 2007-6-15 23:23

请先看看 置顶贴:聚宝盆 中提到的精华贴

[ 本帖最后由 ChaChing 于 2010-4-4 23:07 编辑 ]

支承点 发表于 2007-6-18 08:54

老大....
mk =
-8/(Ri-4)^3*exp(-10*Ri+60-2*exp(-5*Ri+30))+8/(Ri-4)^2*(-10+10*exp(-5*Ri+30))*exp(-10*Ri+60-2*exp(-5*Ri+30))+200/(Ri-4)*exp(-5*Ri+30)*exp(-10*Ri+60-2*exp(-5*Ri+30))-4/(Ri-4)*(-10+10*exp(-5*Ri+30))^2*exp(-10*Ri+60-2*exp(-5*Ri+3
是程序输出的...我可以改么?
还有就是,计算过程中mk的表达式是变化的...

[ 本帖最后由 支承点 于 2007-6-18 09:24 编辑 ]

xjzuo 发表于 2007-6-18 09:20

这种简单问题希望以后自己能多想想,不要一有问题就希望别人帮你解决.

附: 利用subs即可解决
%%%%%%%%%%
clear all
syms Ri
param=;
he=1;
f=(param(1).*((he-param(2))./(Ri-param(3))).*(exp(-2*param(4).*(Ri-param(5))-2.*exp(-param(4).*(Ri-param(5))))));
mk=diff(f,Ri,2);
subs(mk,Ri,)
%%%%%%%%%%%%%%%

支承点 发表于 2007-6-18 09:31

感谢

感谢楼上。
其实不是我不想自己解决,是我刚刚接触matlab,好多东西都不知道,学校图书馆里的相关书又被一扫而空,找不到好的基础书看,
只好到处找些零散的内容做自己要用的部分了
页: [1]
查看完整版本: [求助]关于导数在已知点(多个点)值的问题