std输入参数太多matlab,错误使用函数,输入参数太多怎么解决
請(qǐng)各位大神幫幫忙,實(shí)在想不明白問(wèn)題在哪。我想用二分法求零點(diǎn),待求函數(shù)為HS(t)的調(diào)用函數(shù)。代碼如下
主程序是這個(gè):
%二分法迭代求解思路
%初始化
clc
cla
clear all
close all
%輸入?yún)?shù)
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
調(diào)用函數(shù)是這個(gè):
function hs
clear;clc
res=HS(t)
function H =HS(t)
%先求中間參數(shù)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); %反應(yīng)物焓變
%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);%獨(dú)立反應(yīng)的平衡常數(shù)解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函數(shù)求解非線性方程組未知數(shù)x1~x5
%未知數(shù)個(gè)數(shù)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);
%各產(chǎn)物焓變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;%氮?dú)?/p>
Hh2=0.0013*t^2+27.79*t+85.75-(0.0013*298^2+27.79*298+85.75);%氫氣
%各產(chǎn)物焓變綜合:需要h以及t值即可得到
H2=x(3)*Hco2+x(4)*Hh2o+x(5)*Hch4+x(2)*Hco+x(1)*Hh2+3.76*m*Hn2;
%系統(tǒng)焓變求解如下
H=H1-H2;
end
end
請(qǐng)大神幫忙看下,為什么每次運(yùn)行怎么修改都提示在函數(shù)調(diào)用那條語(yǔ)句顯示有:
錯(cuò)誤使用 HS
輸入?yún)?shù)太多。
出錯(cuò) diedaichengxu (line 23)
if HS(t1)*HS(t)<0
請(qǐng)各位大神幫我看看,(1)我能不能把函數(shù)直接放到主程序里,不用調(diào)用省去麻煩,(2)如果不能放主程序那調(diào)用出現(xiàn)這個(gè)問(wèn)題是為什么,我怎么更改呢?謝謝各位大神幫忙!
總結(jié)
以上是生活随笔為你收集整理的std输入参数太多matlab,错误使用函数,输入参数太多怎么解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab四条曲线围成面,matlab
- 下一篇: agv matlab应用,简单介绍一下a