《精通MATLAB最优化计算》一书中Funval函数应用

《精通MATLAB最优化计算》一书中Funval函数应用,第1张

%%我用这个函数调试成功了

function fv = Funval(f,varvec,varval)

var = symvar(f);

varc = symvar(varvec);

s1 = length(var);

s2 = length(varc);

m =floor((s1-1)/3+1);

varv = zeros(1,m);

if s1 ~= s2

for i=0: ((s1-1)/3)

k = strfind(varc,var(3i+1));

index = (k-1)/3;

varv(i+1) = varval(index+1);

end

fv = subs(f,var,varv);

else

fv = subs(f,varvec,transpose(varval));

end

end

clc

clear all

% 本程序主要用来计算根据灰色理论建立的模型的预测值。

% 应用的数学模型是 GM(1,1)。

% 原始数据的处理方法是一次累加法。

y=[166287 21634 196535 247248 290066 303493 27555 3207 3462];%已知数据

n=length(y);

yy=ones(n,1);

yy(1)=y(1);

for i=2:n

yy(i)=yy(i-1)+y(i);

end

B=ones(n-1,2);

for i=1:(n-1)

B(i,1)=-(yy(i)+yy(i+1))/2;

B(i,2)=1;

end

BT=B';

for j=1:n-1

YN(j)=y(j+1);

end

YN=YN';

A=inv(BTB)BTYN;

a=A(1);

u=A(2);

t=u/a;

t_test=4;  %需要预测个数

i=1:t_test+n;

yys(i+1)=(y(1)-t)exp(-ai)+t;

yys(1)=y(1);

for j=n+t_test:-1:2

ys(j)=yys(j)-yys(j-1);

end

x=1:n;

xs=2:n+t_test;

yn=ys(2:n+t_test);

plot(x,y,'^r',xs,yn,'-b');

det=0;

for i=2:n

det=det+abs(yn(i)-y(i));

end

det=det/(n-1);

disp(['百分绝对误差为:',num2str(det),'%']);

disp(['预测值为: ',num2str(ys(n+1:n+t_test))]);

输出结果:

百分绝对误差为:2283113%

预测值为: 3710152      39782142      42656442      45738413

以上就是关于《精通MATLAB最优化计算》一书中Funval函数应用全部的内容,包括:《精通MATLAB最优化计算》一书中Funval函数应用、matlab中灰色模型改进的背景值代码怎么写、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10623593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存