clear;clc
xa=0.85;
R=8.314;
i=1;
t=0:1000;
k=0:1000;
t0=300.15;
tr=273.15;
k0=0.551;
t(1)=t0;
k(1)=k0*exp(-10000/(R*t(1)));
x=0:xa/1000:xa;
for 1:1000
i=i+1;
t(i)=t(i-1)+(47.4*1000-30*(t(i-1)-273.15))*2*2*xa/1000/(6+6*x);
k(i)=k0*exp(-10000/(8.314*t(i)));
end
knots=9;
k=4;
sp=spap2(knots,k,t,x);
xplot=linspace(t(1),t(end),1000);
yplot=fnval(sp,xplot);
plot(t,x,'o',xplot,yplot,'-')
v=quadl(@fun,0,xa,[],[],sp)
%------------------------------------------------
function f=fun(x,sp)
R=8.314;
t=fnval(sp,x);
k=k0.*exp(-10000./(R*t));
f=2*0.1./(k.*(1-x));
运行后出现错误
??? Error using ==> chckxywp
The number of sites, 1002, does not match the number of values, 1.
Error in ==> spap2>spap21 at 148
if isempty(w), [x,y,sizeval] = chckxywp(x,y,1);
Error in ==> spap2 at 142
sp = spap21(knots,k,x,y,w);
Error in ==> ping5 at 18
sp=spap2(9,4,t,x);
??? Error: File: E:\matlab7.0\ping5.m Line: 14 Column: 5
Missing MATLAB operator.
??? Error: File: E:\matlab7.0\ping5.m Line: 14 Column: 5
Missing MATLAB operator.
14行,因写一个变量名,比如 for q = 1:1000,尽管你没有使用q。
16行,t(i)=t(i-1)+(47.4*1000-30*(t(i-1)-273.15))*2*2*xa/1000/(6+6*x); 注意亏迅丛到,最后的x是销樱一个数组,6*x还是个数组,最终昌游的运算结果却给到t(i)这个单元里,我猜测你想写的是x(i):
t(i)=t(i-1)+(47.4*1000-30*(t(i-1)-273.15))*2*2*xa/1000/(6+6*x(i));
修改后,我是运行成功了,不知道你怎么样。
function ping5
clear;clc
xa=0.85;
R=8.314;
t=0:1000;
k=0:1000;
t0=300.15;
tr=273.15;
k0=0.551;
t(1)=t0;
k(1)=k0*exp(-10000/(R*t(1)));
x=0:xa/1000:xa;
for i=2:1001
t(i)=t(i-1)+(47.4*1000-30*(t(i-1)-273.15))*2*2*xa/1000/(6+6*x(i));
k(i)=k0*exp(-10000/(8.314*t(i)));
end
knots=9;
k=4;
sp=spap2(knots,k,t,x);
xplot=linspace(t(1),t(end),1000);
yplot=fnval(sp,xplot);
plot(t,x,'圆携o',xplot,yplot,'-')
v=quadl(@fun,0,xa,[],[],sp)
修改了一下你的程序部分错误,你世腔碧再运行试搜举试
错误提示第14行有错误,就是下面这行
for 1:1000
应该是“for 变量=1:1000”的格式。搏搏裤
看你程序下银备面有i=i+1的语句,for变量应该不是i,如果只是为了循环1000次,可以改为
for j=1:1000
再试试
不基简明白你程序的意思,不知道这样改对不?看意思应该差不多。
for 1:1000
有问题。。。
好像是反应动力学的问题吧?
原问题是什么啊
