声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1620|回复: 12

[编程技巧] [求助]数值积分中的一个问题求教

[复制链接]
发表于 2006-6-3 11:52 | 显示全部楼层 |阅读模式

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

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

x
syms a<br>ff=inline('a*x.^2','x');<br>quadl(ff,1,2)<br>不能计算<br>是不是数值积分中不能含有符号呀?
[此贴子已经被cdwxg于2006-6-3 11:57:27编辑过]

回复
分享到:

使用道具 举报

发表于 2006-6-3 14:30 | 显示全部楼层

回复:(zyyzwj)[求助]数值积分中的一个问题求教

<P>是的,不过好像可以把a通过函数传递进去</P>
[此贴子已经被作者于2006-6-3 14:31:16编辑过]

发表于 2006-6-3 17:12 | 显示全部楼层
7.0以上版本可以积
发表于 2006-6-3 19:48 | 显示全部楼层
<P>是吗???7.0这么强啊</P>
发表于 2006-6-3 20:11 | 显示全部楼层

这是7.1的运行结果

<P>syms a<BR>ff=inline('a*x.^2','x');<BR>quadl(ff,1,2)<BR><FONT color=#ff0000>??? Error using ==&gt; inlineeval<BR>Error in inline expression ==&gt; a*x.^2<BR>??? Error using ==&gt; eval<BR>Undefined function or variable 'a'.</FONT></P>
<P><FONT color=#ff0000>Error in ==&gt; inline.feval at 34<BR>        INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);</FONT></P>
<P><FONT color=#ff0000>Error in ==&gt; quadl at 64<BR>y = feval(f,x,varargin{:}); y = y(:).';</FONT></P>
发表于 2006-6-3 20:51 | 显示全部楼层
<P>嘿嘿 这个我好象遇到过~~<BR> 有个 inline 的帖子. 达人教我的 <BR><BR>你要在quadl 这个函数中 将a传入<FONT color=#ff0000>feval 里面把a加进去.<BR><BR>然后 </FONT><FONT color=#000000>quadl的参数中 也要加a</FONT></P>
发表于 2006-6-3 21:23 | 显示全部楼层
搂主如果要解析解应该用符号计算命令int,其中把a,x都定义为符号变量。<BR>如果要数值解应该在quadl命令的参数中把a的数值传入quadl。
发表于 2006-6-4 14:19 | 显示全部楼层
怎么还要两个混着来噢。。。
 楼主| 发表于 2006-6-4 15:41 | 显示全部楼层
不是我想混着来,但是用int就会显示:<BR>Explicit integral could not be found<BR>我本来想积的函数如下:<BR>pi/(30*cos(x*pi/180)*112.56)*(b1*cos(pi*(x-33.56)/112.56)+2*b2*cos(2*pi*(x-33.56)/112.56)+3*b3*cos(3*pi*(x-33.56)/112.56)+4*b4*cos(4*pi*(x-33.56)/112.56)+5*b5*cos(5*pi*(x-33.56)/112.56))^2<BR>
 楼主| 发表于 2006-6-4 15:43 | 显示全部楼层
请教如上!谢谢
发表于 2006-6-4 20:08 | 显示全部楼层
1.quadl本身是数值积分,“syms a”用来做什么??!!<BR>2.能不能积分据我所知在6.1以上无区别,方法错误v7也一样没法积<BR>3.feval没用过,不过应该有可能,但是参数向字符串内传递有更简单的方法<BR>a=rand(1,10);<BR>for i=1:length(a)<BR>str=[num2str(a(i)),'*x.^2'];<BR>ff=inline(str,'x');<BR>f(i)=quadl(ff,1,2);<BR>end<BR>%stuff like this.<BR>
发表于 2006-6-6 08:14 | 显示全部楼层

回复:(zyyzwj)[求助]数值积分中的一个问题求教

<P><FONT color=#ff0000>zyyzwj、gghhjj、nianhua77、branch、ericlin、qiuqia17、buaalqq、dundun628、bainhome加威望1点</FONT></P>
<P>多情清秋<BR>06.6.6</P>
发表于 2008-5-21 00:32 | 显示全部楼层

回复 11楼 的帖子

请教高人,我的程序中出现了这样一个问题,请帮我解决
问题如下:
   求一个函数(展开后有三项)的数值积分,我也作了这个函数展开中三项的数值积分,然而这三项的数值积分之和与这个函数的数值积分却不同,我百思不得其解。
程序如下:
  clear;
s=1*pi/4;
a=0.1;
l=0.05;
w=3;
N1=1/(1+sin(2*s)*exp(-(a/l)^2))^0.5;
N2=1/(1-sin(2*s)*exp(-(a/l)^2))^0.5;
% parameter

fprintf('s=%4.3f;\n',s);
fprintf('a=%4.3f;\n',a);
fprintf('l=%4.3f;\n',l);
fprintf('w=%4.3f;\n',w);
fprintf('N1=%4.6f;\n',N1);
fprintf('N2=%4.6f;\n',N2);
disp(['    ']);

p1=@(x)sin(s)^2*exp(-(x-a).^2);
p2=@(x)cos(s)^2*exp(-(x+a).^2);
p3=@(x)(-1)*2*sin(s)*cos(s)*exp(-(x.^2+a^2));
pz=@(x)(sin(s)^2*exp(-(x-a).^2)+cos(s)^2*exp(-(x+a).^2)-2*sin(s)*cos(s)*exp(-(x.^2+a^2)));

S1=quadl(p1,-20,20);
S2=quadl(p2,-20,20);
S3=quadl(p3,-20,20);
Sz=quadl(pz,-20,20);
Sh=S1+S2+S3;

fprintf('S1=%4.6f;\n',S1);
fprintf('S2=%4.6f;\n',S2);
fprintf('S3=%4.6f;\n',S3);
fprintf('Sz=%4.6f;\n',Sz);
fprintf('Sh=%4.6f;\n',Sh);
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-3 06:31 , Processed in 0.061046 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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