24小时热门版块排行榜    

查看: 447  |  回复: 2

090180119

金虫 (小有名气)

[求助] matlab的运行求助已有1人参与

本人matlab不通,纯菜鸟一枚,现有代码如下:
主函数:(shuizhi)
function shuizhi
E(18)=0;
E(=2;
U(18)=0;
U(=5;
K=0.0151;
Cj(18)=0;
Cj(1)=10;
Dt=0.1;
Dx=0.5;
j=0;
while (j<10)
    Cj=HLSZAD(E,U,Dt,Dx,K,Cj);
    j=j+1;
    if j>=10
        Cj(1)=0;
    end
    n=length(Cj);
    fprintf('\n第%d′次各断面浓度\n',j)
    for i=1:n
        fprintf('\t%f',Cj(i));
    end        
end
子函数(HLSZAD)
function [Cj]=HLSZAD(E,U,Dt,Dx,K,Cj)
%E- j时刻各断面的纵向扩散系数
%U-j时刻各断面的平均流速
%Dt-时间步长
%Dx-空间步长
%K-综合衰减系数
%Cj-j时刻各断面浓度
n=length(U)-1;
a(n)=0;
b(n)=0;
c(n)=0;
d(n)=0;
for i=1:n
    a(i)=-E(i+1)/Dx^2;
    b(i)=1/Dt+2*E(i+1)/Dx^2+K/2;
    c(i)=-E(i+1)/Dx^2;
    d(i)=Cj(i+1)*(1/Dt-U(i+1)/Dx)+Cj(i)*(U(i+1)/Dx-K/2);
end
A=zeros(n,n);
for i=1:n
    A(i,i)=b(i);
    if(i>1)
        A(i,i-1)=a(i);
    end
    if(i<n)
        A(i,i+1)=c(i);
    end
end
A(n,n-1)=a(n)-c(n);
A(n,n)=b(n)+2*c(n);
d(1)=d(1)-a(1)*Cj(1);
CK=fzhuigan(A,d);%解三对角方程
Cj(2:n+1)=CK;
子函数(fzhuigan)
function [x]=fzhuigan(A,b)
n=rank(A);
for i=1:n-1
    m=A(i+1,i)/A(i,i);
    A(i+1,i:i+1)=A(i+1,i:i+1)-m*A(i,i:i+1);
    b(i+1)=b(i+1)-m*b(i);
end
x=zeros(1,n);
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
    x(i)=(b(i)-A(i,i+1)*x(i+1))/A(i,i);
end
不知道应如何运行 ,主函数和子函数一起复制在同一个板块吗,还望大神们不吝赐教,我自己鼓捣半天也没有鼓捣出来
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

090180119

金虫 (小有名气)

亲们,快来帮帮我吧
2楼2014-05-20 10:12:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
090180119: 金币+5, ★★★★★最佳答案, 非常感谢 2014-05-21 11:05:57
把这两函数复制到同一个代码编辑文档中,如果不知道是什么,在matlab窗口运行edit,就会出来一个新的Editor窗口,复制到里面去之后保存,matlab会自动监测到主函数的名称(即shuizhi),保存成为shuizhi.m文件,然后在matlab窗口键入shuizhi运行即可。
PS: 所要运行的函数文件必须在当前的工作目录或matlab搜索路径下面,若不知道当前工作目录,键入cd回车就会出来当前目录,而要想将其加入matlab搜索路径下面,你需要自己上网查matlab是如何运行函数的,网上有很多详细的介绍。

祝好运。
What would Jesus do?
3楼2014-05-20 10:19:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 090180119 的主题更新
信息提示
请填处理意见