1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > std输入参数太多matlab 错误使用函数 输入参数太多怎么解决

std输入参数太多matlab 错误使用函数 输入参数太多怎么解决

时间:2020-09-29 03:57:45

相关推荐

std输入参数太多matlab 错误使用函数 输入参数太多怎么解决

请各位大神帮帮忙,实在想不明白问题在哪。我想用二分法求零点,待求函数为HS(t)的调用函数。代码如下

主程序是这个:

%二分法迭代求解思路

%初始化

clc

cla

clear all

close all

%输入参数

a=1.44;

b=0.66;

mc=0.2;

er=0.2;

%迭代

t1=300;

t2=3000;

d=0.1;

l=t2-t1;

cc=0;

while l>d

t=(t1+t2)/2;

if HS(t1)*HS(t)<0

t2=t;

else if HS(t1)*HS(t)>0

t1=t;

else

t1=t;t2=t;

end

l=l/2;cc=cc+1;

end

x=(t1+t2)/2;

end

调用函数是这个:

function hs

clear;clc

res=HS(t)

function H =HS(t)

%先求中间参数w,m,H1

w=(12+a+16*b)*mc/(18*(1-mc));

m=er*(1+0.25*a-0.5*b);

H1=-118049.96+w*(-285830); %反应物焓变

%k1,k2需要t值即可求解

k(1)=exp(7082.848/t-6.567*log(t)+7.466*10^(-3)*t/2 -2.164*10^(-6)*t^2/6 +0.5*0.701*10^(-5)/t^2+32.541);%独立反应的平衡常数解k1和k2

k(2)=10^(5.47301*10^(-12)*t^4-2.57479*10^(-8.0)*t^3+4.63742*10^(-5.0)*t^2-3.91500*10^(-2.0)*t+13.2097);

%利用fsolve函数求解非线性方程组未知数x1~x5

%未知数个数n

n=5;

%迭代初值

x0=rand(n,1);

%迭代精度E为0.001

options=optimoptions('fsolve','Display','iter','Tolfun',1e-3,'TolX',1e-4);

%迭代方程组如下:

f=@(x)[

x(2)+x(3)+x(5)-1;

x(2)+2*x(3)+x(4)-w-b-2*m;

x(5)-k(1)*x(1)^2;

x(1)*x(3)-k(2)*x(2)*x(4);

2*x(1)+2*x(4)+4*x(5)-a-2*w;];

%迭代解

x=fsolve(f,x0,options);

%各产物焓变h:需要代入t值即可得到

Ho2=0.0030*t^2+28.5508*t-182.0309-(0.0030*298^2+28.5508*298-182.0309);%氧气

Hco2=0.008398*t^2+ 36.79*t-2592-(0.008398*298^2+ 36.79*298-2592)-393520;%二氧化碳

Hh2o= 0.005957*t^2+ 29.28*t+669.4-(0.005957*298^2+ 29.28*298+669.4)-241820;%水

Hch4=-5.746e-06*t^3+0.03734*t^2+14.01*t+2593-(-5.746e-06*298^3+0.03734*298^2+14.01*298+2593)-74850;%甲烷

Hco=0.0029*t^2+27.17*t+289.1-(0.0029*298^2+27.17*298+289.1)-110530;%一氧化碳

Hn2=0.002736*t^2+27.07*t+336-(0.002736*298^2+27.07*298)+336;%氮气

Hh2=0.0013*t^2+27.79*t+85.75-(0.0013*298^2+27.79*298+85.75);%氢气

%各产物焓变综合:需要h以及t值即可得到

H2=x(3)*Hco2+x(4)*Hh2o+x(5)*Hch4+x(2)*Hco+x(1)*Hh2+3.76*m*Hn2;

%系统焓变求解如下

H=H1-H2;

end

end

请大神帮忙看下,为什么每次运行怎么修改都提示在函数调用那条语句显示有:

错误使用 HS

输入参数太多。

出错 diedaichengxu (line 23)

if HS(t1)*HS(t)<0

请各位大神帮我看看,(1)我能不能把函数直接放到主程序里,不用调用省去麻烦,(2)如果不能放主程序那调用出现这个问题是为什么,我怎么更改呢?谢谢各位大神帮忙!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。