24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1945  |  回复: 16

zyj8119

木虫 (著名写手)

[交流] 【求助】帮忙看一个程序已有3人参与

%IAST(理想吸附溶液理论通过单组份的吸附数据获得多组分的吸附数据)
function [p1,p2,x1]=IAST(b1,b2,p,y1)
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
q1=q2;
p*y1=p1*x1;
p*(1-y1)=p2*(1-x1);
end
function q=integral(f,a,b,eps)
%被积函数:f
%积分左端点:a
%积分右端点:b
%eps:精度
%积分结果:q
%step 积分的子区间数
if(nargin==3)
    eps=1.0e-4;                      %默认精度为0.0001
end
n=1;
h=(b-a)/2;
q1=0;
q2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(q2-q1)>eps
    n=n+1;
    h=(b-a)/n;
    q1=q2;
    q2=0;
    for i=0:n-1       %第n次复合梯形积分
        x=a+h*i;
        x1=x+h;
        q2=q2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+...
            subs(sym(f),findsym(sym(f)),x1));
    end
end
q=q2;
end


report 报告:
2: Function return value 'p1' appears to never be set.
2: Function return value 'p2' appears to never be set.
2: Function return value 'x1' appears to never be set.
2: Input argument 'y1' appears never to be used.
5: The value assigned here to variable 'q1' might never be used.
7: The value assigned here to variable 'q1' might never be used.
8: Parse error at '=': usage appears to be invalid MATLAB syntax.
9: Parse error at '=': usage appears to be invalid MATLAB syntax.
回复此楼

» 收录本帖的淘帖专辑推荐

混合气体吸附理论研究

» 猜你喜欢

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

好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


kuhailangyu(金币+1):欢迎参与 2010-06-14 22:39:02
zyj8119(金币+3): 2010-06-15 00:41:34
q1=q2;
p*y1=p1*x1;
p*(1-y1)=p2*(1-x1);

你想表达啥意思?
2楼2010-06-14 21:57:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by change0618 at 2010-06-14 21:57:30:
q1=q2;
p*y1=p1*x1;
p*(1-y1)=p2*(1-x1);

你想表达啥意思?

就是要满足这3个条件啊,要满足这3个条件该怎么办?
好好学习,天天向上。
3楼2010-06-15 00:41:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

自己再顶一下。。
好好学习,天天向上。
4楼2010-06-15 13:15:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


robert2020(金币+1):多谢专家意见,辛苦了! 2010-06-15 23:08:20
引用回帖:
Originally posted by zyj8119 at 2010-06-15 13:15:13:
自己再顶一下。。

大致了解一下 试试
function [p1,p2,x1]=IAST(b1,b2,p,y1)
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
while (q1~=q2 & p*y1~=p1*x1  & p*(1-y1)~=p2*(1-x1))
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
end
end

[ Last edited by lijinfeng042 on 2010-6-15 at 15:40 ]
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
5楼2010-06-15 15:38:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by lijinfeng042 at 2010-06-15 15:38:54:

大致了解一下 试试
function [p1,p2,x1]=IAST(b1,b2,p,y1)
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
while (q1~=q2 & p*y1~=p1*x1  & p*(1-y1)~=p ...

q1~=q2这里加个~是什么意思?
好好学习,天天向上。
6楼2010-06-15 15:54:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

还是有3个错误:
2: Function return value 'p1' appears to never be set.
2: Function return value 'p2' appears to never be set.
2: Function return value 'x1' appears to never be set.
好好学习,天天向上。
7楼2010-06-15 15:59:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

%IAST(理想吸附溶液理论通过单组份的吸附数据获得多组分的吸附数据)
%f1,f2是langmuir吸附等温式
%x1是吸附相的浓度
%y1是主体相的浓度
%p1,p2是吸附相不同吸附质的标准蒸汽压
%p是主体相的总压力
function [p1,p2,x1]=IAST(b1,b2,p,y1)
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
while (q1~=q2 && p*y1~=p1*x1  && p*(1-y1)~=p2*(1-x1))
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
end
end
function q=integral(f,a,b,eps)
%被积函数:f
%积分左端点:a
%积分右端点:b
%eps:精度
%积分结果:q
%step 积分的子区间数
if(nargin==3)
    eps=1.0e-4;                      %默认精度为0.0001
end
n=1;
h=(b-a)/2;
q1=0;
q2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(q2-q1)>eps
    n=n+1;
    h=(b-a)/n;
    q1=q2;
    q2=0;
    for i=0:n-1       %第n次复合梯形积分
        x=a+h*i;
        x1=x+h;
        q2=q2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+...
            subs(sym(f),findsym(sym(f)),x1));
    end
end
q=q2;
end
好好学习,天天向上。
8楼2010-06-15 16:05:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


zyj8119(金币+3):感谢您的关注,但是我是有三个方程的,三个未知数,应该能解得出来,有一个方程是积分方程。 2010-06-15 18:52:44
robert2020(金币+1):辛苦了~~ 2010-06-15 23:08:36
引用回帖:
Originally posted by zyj8119 at 2010-06-15 16:05:26:
%IAST(理想吸附溶液理论通过单组份的吸附数据获得多组分的吸附数据)
%f1,f2是langmuir吸附等温式
%x1是吸附相的浓度
%y1是主体相的浓度
%p1,p2是吸附相不同吸附质的标准蒸汽压
%p是主体相的总压力
functio ...

看来一下你的程序
function [p1,p2,x1]=IAST(b1,b2,p,y1)
f1=b1/(1+b1*p);
f2=b2/(1+b2*p);
q1=integral(f1,0,p1,eps);
q2=integral(f2,0,p2,eps);
你没有传入p1 p2的值 按定义 p1 p2是返回值啊 你的意图是???????乱了
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
9楼2010-06-15 17:43:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


zyj8119(金币+2):这个只是用经典LANGMUIR式子了,如果遇到多元的就不好弄了,编程才是最终解决问题的办法,不管怎么样,还是感谢兄弟你关注! 2010-06-15 18:53:42
robert2020(金币+1):多谢应助,辛苦了! 2010-06-15 23:09:27
对于单组份吸附方程f=b/(1+b*p); 当b*p~=-1时, 积分式子为F=ln(1+b*p) ;
你的以下三行命令q1=integral(f1,0,p1,eps); q2=integral(f2,0,p2,eps);q1=q2;
可以变成了ln(1+b1*p1)= ln(1+b2*p2);
即b1*p1= b2*p2;
结合p*y1=p1*x1;  p*(1-y1)=p2*(1-x1);
三个方程三个未知数,完全用手就可以算, 但前提是b1*p1~=-1, b2*p2~=-1.

[ Last edited by change0618 on 2010-6-15 at 18:15 ]
10楼2010-06-15 18:14:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见