matlab中需要定义一个函数比如说是f(x,y,z),g(x,y,z)这种关于三个变量的函数,不知道怎么定义,做的时候需要做成网格状,x,y,z是以1为单位变化的我现在知道液面的边界条件,就是通过给我的初始条
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 07:22:34
matlab中需要定义一个函数比如说是f(x,y,z),g(x,y,z)这种关于三个变量的函数,不知道怎么定义,做的时候需要做成网格状,x,y,z是以1为单位变化的我现在知道液面的边界条件,就是通过给我的初始条
matlab中需要定义一个函数比如说是f(x,y,z),g(x,y,z)这种关于三个变量的函数,不知道怎么定义,
做的时候需要做成网格状,x,y,z是以1为单位变化的
我现在知道液面的边界条件,就是通过给我的初始条件,能够求出网格里第一行的21个点,另外知道一个左右的边界条件,再由内部各点的条件知道各点的关系,然后求出各点的φ值,具体的题目,我可以邮件给你的.
function w=φ(x,y,z)
x=meshgrid(1:11);%11个行向量
y=meshgrid(1:21);%21个列向量
z=meshgrid(1:2);%这看成是时刻1,时刻2
t=0.0012%时刻1,时刻2
g=9.8%一个值下面会用到
h=1%一个值下面会用到
A(:,:,1)=zeros(11,21);%1时刻的φ
A(:,:,2)=zeros(11,21);%2时刻的φ
B(:,:,1)=zeros(11,21);%1时刻的u
B(:,:,2)=zeros(11,21);%2时刻的u
for(j=1:21)
A(1,j,2)-A(1,j,1)=B(1,j,1)*t
B(1,j,2)-B(1,j,1)=[A(1,j,2)-A(1,j,2)]*g*t/h%自由液面的条件
A(10,j,2)-A(11,j,2)=0%底部边界条件
end%自由液面的条件
for(i=1:11)
A(i,2,2)-A(i,1,2)=0
A(i,21,2)-A(i,20,2)=0
end%左右边界条件
for(i=1:11)
for(j=1:21)
A(i+1,j,2)-2*A(i,j,2)+A(i-1,j,2)+A(i,j+1,2)-2*A(i,j,2)+A(i,j-1,2)=0
end
end%内部各点的条件
w=A%将A(i,j,k)付值给φ(x,y,z)
matlab中需要定义一个函数比如说是f(x,y,z),g(x,y,z)这种关于三个变量的函数,不知道怎么定义,做的时候需要做成网格状,x,y,z是以1为单位变化的我现在知道液面的边界条件,就是通过给我的初始条
首先确定xyz的范围,比如说xyz都是从1到10,那么
[x,y,z]=meshgrid(1:10);
这时x,y,z都是3维矩阵,因此后面无法进行乘法运算是吧.因此函数没法写.你是这个地方卡住了是吧?
可以这样解决:
x=x(:);y=y(:);z=z(:);这样将xyz变成向量.就可以像平时一样定义函数了.