怎样在MATLAB中显示出这类函数的图像?
希望知道如何做的朋友帮我解答一下,谢谢了!如何用MATLAB表示出:Y与α的关系图?其中α是变量。积分符号前的竖线只是鼠标的光标。r1、r2设为1来,α的范围是0~π/2...
希望知道如何做的朋友帮我解答一下,谢谢了!
如何用MATLAB表示出:Y与α的关系图?其中α是变量。
积分符号前的竖线只是鼠标的光标。
r1、r2设为1来,α的范围是0~π/2
syms a b c;
a=0:0.1*pi:pi;
b=0:0.1:pi/2;
c=0:0.1:pi/2;
f=int(int((cos(b)*cos(c)+sin(b)*sin(c)*cos(a))/sqrt((cos(b)-cos(c))^2+(sin(b)*cos(a)-sin(c))^2+(sin(b)*sin(a))^2)),0,pi/2),0,pi/2);
plot(f,a)
这是我的程序,系统报错
??? f=int(int((cos(b)*cos(c)+sin(b)*sin(c)*cos(a))/sqrt((cos(b)-cos(c))^2+(sin(b)*cos(a)-sin(c))^2+(sin(b)*sin(a))^2)),0,pi/2),0,pi/2); |
Error: Unbalanced or unexpected parenthesis or bracket.
不知道该怎么改。 展开
如何用MATLAB表示出:Y与α的关系图?其中α是变量。
积分符号前的竖线只是鼠标的光标。
r1、r2设为1来,α的范围是0~π/2
syms a b c;
a=0:0.1*pi:pi;
b=0:0.1:pi/2;
c=0:0.1:pi/2;
f=int(int((cos(b)*cos(c)+sin(b)*sin(c)*cos(a))/sqrt((cos(b)-cos(c))^2+(sin(b)*cos(a)-sin(c))^2+(sin(b)*sin(a))^2)),0,pi/2),0,pi/2);
plot(f,a)
这是我的程序,系统报错
??? f=int(int((cos(b)*cos(c)+sin(b)*sin(c)*cos(a))/sqrt((cos(b)-cos(c))^2+(sin(b)*cos(a)-sin(c))^2+(sin(b)*sin(a))^2)),0,pi/2),0,pi/2); |
Error: Unbalanced or unexpected parenthesis or bracket.
不知道该怎么改。 展开
2个回答
展开全部
r1、r2的值是什么?数值计算必须知道所有常量的值才行。
更多追问追答
追问
不好意思,我没有说清楚。这里r1、r2设为1来计算。设α的范围是0~π/2。
我刚刚编程将这个函数用一个二重积分表示,提示有错。
朋友,等下看看你有什么思路,谢谢了!
追答
1、你现在的代码有几个问题:
(1)报错的原因说的很清楚——括号不匹配( Unbalanced or unexpected parenthesis or bracket),稍微查一下就能找到多了一个右括号。
(2)既然定义了符号变量abc,又给它们赋值,会导致定义符号不起作用。
(3)即使解决了上面两个问题,仍然不可行。对这样复杂的积分求符号解是很困难的。
2、用数值方法求解(随便给a赋值,例如a=0.1):
>> dblquad(@(b,c)(cos(b)*cos(c)+sin(b)*sin(c)*cos(a))./sqrt((cos(b)-cos(c)).^2+(sin(b)*cos(a)-sin(c)).^2+(sin(b)*sin(a)).^2),0,pi/2,0,pi/2)
Warning: Minimum step size reached; singularity possible.
> In quad (line 96)
In dblquad>innerintegral (line 79)
In quad (line 67)
In dblquad (line 55)
ans =
9.3896
造成警告的原因是,当b、c=0时,被积函数的值为无穷大,也就是有奇异点,导致达到最小积分步长。
从函数图像可以看出这一点。
a=0.2;
f = @(b,c)(cos(b)*cos(c)+sin(b)*sin(c)*cos(a))./sqrt((cos(b)-cos(c)).^2+(sin(b)*cos(a)-sin(c)).^2+(sin(b)*sin(a)).^2);
ezmesh(f,[0,pi/2,0,pi/2])
特别是,当a=0时,积分结果会出现NaN(非数)。对于R2012a之后版本的MATLAB,建议使用integral2函数代替dblquad(对于a=0,积分结果是无穷大Inf,这个结果应更可信)。
受字数限制,完整代码就不贴了,用循环对a取不同值即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询