MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]一复杂函数的画图问题! (https://www.labfans.com/bbs/showthread.php?t=3627)

djliu2006 2008-06-17 10:27

[求助]一复杂函数的画图问题!
 
2 个附件
我现在做的是把函数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)
[COLOR="Red"]syms s x y[/COLOR]%去掉这一行
f=sin(s)[COLOR="red"].[/COLOR]^2[COLOR="red"].[/COLOR]*exp((x[COLOR="red"].[/COLOR]*sin(s)[COLOR="red"].[/COLOR]^2+y[COLOR="red"].[/COLOR]*cos(s)[COLOR="red"].[/COLOR]^2)[COLOR="red"].[/COLOR]/sqrt(1+sin(s)[COLOR="red"].^2[/COLOR]));

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

fanxing39 2008-06-19 01:23

2 个附件
[SIZE="3"]主程序:[/SIZE][SIZE="4"]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)[/SIZE]
[SIZE="4"]副程序:[/SIZE][SIZE="4"]function f=fun2(s,x,y)
f=sin(s).^2.*exp((x.*sin(s).^2+y.*cos(s).^2)./sqrt(1+sin(s)));[/SIZE]

fanxing39 2008-06-19 01:27

[SIZE="4"]上面的方法是
1.先产生x,y的网格矩阵
2.将(x,y)每个点的 f(x,y)利用quad (数值积分)进行求解
3. surf (P) 画出曲面图[/SIZE]

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


所有时间均为北京时间。现在的时间是 06:31

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.