登录论坛

查看完整版本 : [求助]一复杂函数的画图问题!


djliu2006
2008-06-17, 10:27
我现在做的是把函数f(x,y)做成关于xy的三维图.我用写程序计算的时候,不知道为什么总是无法把xy带如数值计算.具体的函数如附件所示
麻烦Matlab高手帮忙指点下这个小程序.
我是matlab新手,不会写程序,自己忙了几天总是出问题,我的做法是把函数z=fun(s,x,y)写成M文件函数,其中的s就是我要积分的变量.
function f=f1(s,x,y)
syms s x y
f=sin(s)^2*exp((x*sin(s)^2+y*cos(s)^2)/sqrt(1+sin(s)));
之后我就是想对对函数进行积分
Q = quad(@(s)f1(s,x,y),0,2)
用的是上述函数,本来打算求完积分后就直接
做Q的图象,可是提示有错误,不知道程序哪里有问题
提示的错误是
??? Error: File: C:\Documents and Settings\Administrator\桌面\Untitled2.m Line: 1 Column: 11
"identifier" expected, "(" found.
麻烦Matlab高人帮小弟看看.
谢谢!

watcher
2008-06-17, 12:49
function f=f1(s,x,y)
syms s x y%去掉这一行
f=sin(s).^2.*exp((x.*sin(s).^2+y.*cos(s).^2)./sqrt(1+sin(s).^2));

至于你贴出来的错误,由于不知道Untitled2.m文件的内容,也没法说清,不过看提示,估计是拼写方面的问题了。

fanxing39
2008-06-19, 01:23
主程序:clear
clc
[x,y]=meshgrid(-10:0.5:10);
[m,n]=size(x);
for i=1:m
for j=1:n
P(i,j)=quad(@(s)fun2(s,x(i,j),y(i,j)),0,2);
end
end
surf(P)
副程序:function f=fun2(s,x,y)
f=sin(s).^2.*exp((x.*sin(s).^2+y.*cos(s).^2)./sqrt(1+sin(s)));

fanxing39
2008-06-19, 01:27
上面的方法是
1.先产生x,y的网格矩阵
2.将(x,y)每个点的 f(x,y)利用quad (数值积分)进行求解
3. surf (P) 画出曲面图

程序里用了2个for 循环,这个是我不希望看到的,但是又没有找到更好的方法,这里修改下的话,运算速度才比较快!