声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: twomao

[编程技巧] 如何用数值方法求以下积分

[复制链接]
发表于 2007-9-6 15:37 | 显示全部楼层
1.符号计算中,为了节约时间,可以利用"牛顿-莱布尼兹定理", 先求出积分后的函数,再计算积分值.---针对上面代码.

2.本问题用数值方法可能更好, 而且适用于一般情形. 按照本论坛一些帖子的做法,自己稍微思考一下,相信就能解决问题了.

至于加上外循环W的情形,基本上只是多一步而已,不需要什么新的技巧.

评分

1

查看全部评分

回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2007-9-6 22:08 | 显示全部楼层
原帖由 xjzuo 于 2007-9-6 15:37 发表
1.符号计算中,为了节约时间,可以利用"牛顿-莱布尼兹定理", 先求出积分后的函数,再计算积分值.---针对上面代码.

2.本问题用数值方法可能更好, 而且适用于一般情形. 按照本论坛一些帖子的做法,自己稍微思考 ...


多谢版主指点。按照版主教的方法改了下代码,终于得出数了。:@D :victory:


  1. clear ;clc;
  2. syms x y z
  3. f=(1-x.^2).^(1/2);
  4. dfdx=diff(f);
  5. aa=int(5e13*cosh(dfdx*z/1e6),z);
  6. bb=int(5e13*sinh(dfdx*z/1e6),z);
  7. A=subs(aa,z,(1e-7))-subs(aa,z,0)
  8. B=subs(bb,z,(1e-7))-subs(bb,z,0)
  9. C=(0.04*A-B*(A^2-B^2+0.04^2)^0.5)/(A^2-B^2)
  10. D=inline(eval([char(vectorize(dfdx)),'.*(1e-7)+1e6*sinh(',char(vectorize(C)),')']))
  11. E=quadl(D,-(1e-4)+eps,1e-4)
  12. F=0.016*E
复制代码

结果:
E =
  1.6000e-006

F =
  2.5600e-008

再次感谢版主对我的无私帮助!:handshake

评分

1

查看全部评分

发表于 2010-8-10 11:26 | 显示全部楼层

关于报错的原因

syms a b x y z t i;
>> t=@(Vd) quad(@(x) a*x+b*y+z,0.05,Vd);
>> i=t(0.2)
上面是我输入的程序,下面是报错,请问是什么意思啊,原因是什么
??? Function 'isfinite' is not defined for values of class 'sym'.

Error in ==> isfinite at 19
  [varargout{1:nargout}] = builtin('isfinite', varargin{:});

Error in ==> quad at 66
if ~isfinite(y(1))
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 20:40 , Processed in 0.054548 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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