声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1105|回复: 4

[综合讨论] 大家帮我看看我这个为什么出错呀,程序如下

[复制链接]
发表于 2009-10-4 10:28 | 显示全部楼层 |阅读模式

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

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

x
clear;clc;
w=5;
f=200;
n1=1;
n2=1.475;
r=0.025;
syms q;
f1=((n2^2*cos(q)-n1*sqrt(n2^2-n1^2*sin(q)^2))/(n2^2*cos(q)+n1*sqrt(n2^2-n1^2*sin(q)^2)))^2*sqrt(w^2-f^2*tan(q)^2)*f/cos(q);
n3=1-4/(pi*w^2)*vpa(int(f1,q,0,atan(w/f)));
z1=0:0.05:r*f/w;
plot(z1,double(n3));
hold on;
syms q1;
z2=r*f/w:10:800;
f2=((n2^2.*cos(q1)-n1.*sqrt(n2^2-n1^2.*sin(q1).^2))./(n2^2.*cos(q1)+n1*sqrt(n2^2-n1^2.*sin(q1).^2))).^2.*sqrt(f^2.*r^2./z2.^2-f^2.*tan(q1).^2).*f./cos(q1);
n4=w.^2.*r.^2./(z2.^2.*f.^2)-4./(pi.*w.^2).*vpa(int(f2,q1,0,atan(r./z2)));
plot(z2,double(n4));
hold on;
错误提示如下:Warning: Explicit integral could not be found.
> In sym.int at 58
  In mengkai at 9
??? Error using ==> sym.maple
at offset 14310, unexpected number

Error in ==> sym.int at 51
   r = reshape(maple('map','int',f(:),[x.s '=(' a.s ')..(' b.s ')']),size(f));

Error in ==> mengkai at 16
n4=w.^2.*r.^2./(z2.^2.*f.^2)-4./(pi.*w.^2).*vpa(int(f2,q1,0,atan(r./z2)));
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-10-4 10:30 | 显示全部楼层

回复 楼主 fanzhenjie 的帖子

我感觉程序没有写错,可就是出错,还特别举了个例子都能运行,例子如下:
clear
clc
a=5;

syms q;
b=1:2:15;
f=sin(q)^2+b.^2;
f1=3.*b.^2+vpa(int(f,q,2,1000./b));
plot(b,double(f1));
发表于 2009-10-5 03:49 | 显示全部楼层
可能这一行
n3=1-4/(pi*w^2)*vpa(int(f1,q,0,atan(w/f)));
无法求解析解,导致后面的出错。把int换成数值积分quad试试
 楼主| 发表于 2009-10-5 08:59 | 显示全部楼层

回复 板凳 friendchj 的帖子

我改成了如下形式,还是不行呀:clear;clc;
w=5;
f=200;
n1=1;
n2=1.475;
r=0.025;
syms q1;
z2=r*f/w:10:800;
f2=inline('((n2.^2.*cos(q1)-n1.*sqrt(n2^2-n1^2.*sin(q1).^2))./(n2^2.*cos(q1)+n1*sqrt(n2^2-n1^2.*sin(q1).^2))).^2.*sqrt(f^2.*r^2./z2.^2-f^2.*tan(q1).^2).*f./cos(q1)','q1');
n4=w.^2.*r.^2./(z2.^2.*f.^2)-4./(pi.*w.^2).*quad(f2,0,atan(r./z2));%积分上限为变量,不知道如何解决,这个写法没有错,好像是被积函数可能没有原函数。
plot(z2,double(n4));%分段画第二个积分函数的图像
hold on;
错误提示:??? Error using ==> inlineeval
Error in inline expression ==> ((n2.^2.*cos(q1)-n1.*sqrt(n2^2-n1^2.*sin(q1).^2))./(n2^2.*cos(q1)+n1*sqrt(n2^2-n1^2.*sin(q1).^2))).^2.*sqrt(f^2.*r^2./z2.^2-f^2.*tan(q1).^2).*f./cos(q1)
??? Error using ==> eval
Undefined function or variable 'n2'.

Error in ==> inline.subsref at 25
    INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Error in ==> quad at 62
y = f(x, varargin{:});

Error in ==> df at 11
n4=w.^2.*r.^2./(z2.^2.*f.^2)-4./(pi.*w.^2).*quad(f2,0,atan(r./z2));%积分上限为变量,不知道如何解决,这个写法没有错,好像是被积函数可能没有原函数。
 楼主| 发表于 2009-10-5 09:01 | 显示全部楼层

回复 板凳 friendchj 的帖子

主要是第二个积分上限是变化的,感觉就积不出来呀,第一个积分用INT就积出来了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-20 17:52 , Processed in 0.049680 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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