Matlab中disp,fprintf和sprintf有什么区别
申克博士
2024-05-16 广告
2024-05-16 广告
关于这个问题,您可以联系公司官网的客户服务部门获取相关信息。以下为该公司的基本信息:申克博士测试设备(昆山)有限公司上海分公司是申克博士测试设备(昆山)有限公司的上海分公司,位于中国(上海)自由贸易试验区。该公司是德国申克博士测试设备有限公...
点击进入详情页
本回答由申克博士提供
2017-10-24
展开全部
f=inline('x^2-7*x+10','x');
a=2;
b=8;
epsilon=0.25;
x1=b-0.618*(b-a);
f1=f(x1);
x2=a+0.618*(b-a);
f2=f(x2);
for k=1:7
fprintf(1,'迭代次数 k=%3.0f\n',k)
if f1<=f2
b=x2;
x2=x1;
f2=f1;
x1=b-0.618*(b-a);
f1=f(x1);
else
a=x1;
x1=x2;
f1=f2;
x2=a+0.618*(b-a);
f2=f(x2);
end
x=0.5*(b+a);
fprintf(1,'迭代区间-左端 a=%3.4f\n',a)
fprintf(1,'试点1坐标值 a=%3.4f\n',x1)
fprintf(1,'函数值 f1=%3.4f\n',f(x1))
fprintf(1,'迭代区间-右端 b=%3.4f\n',b)
fprintf(1,'试点2坐标值 x2=%3.4f\n',x2)
fprintf(1,'函数值 f2=%3.4f\n',f(x2))
fprintf(1,'区间中点 x=%3.4f\n',x)
% disp''
end
让disp函数不工作,即可,不过看起来你这编的是0.618算法。好像网上有源代码
不过你这是控制迭代次数,下面我给了你控制迭代精度的代码,希望对你有所帮助,
如果你喜欢我的回答,那就给个精华吧
clc
clear all;
a=1; %区间下限
b=7; %区间上限
e=0.1; %精确度
f = inline('x^2-7*x+10');
%构造的目标函数
x1=a+0.382*(b-a);
y1=f(x1);
x2=a+0.618*(b-a);
y2=f(x2);
while abs(b-a)>e
if y1<y2
b=x2;
x2=x1;
y2=y1;
x1=a+0.382*(b-a);
y1=f(x1);
else
a=x1;
x1=x2;
y1=y2;
x2=a+0.618*(b-a);
y2=f(x2);
end
end
xp=0.5*(a+b); %算出目标值
fp=f(xp);
sprintf('xp=%f,\nfp=%f',xp,fp)
a=2;
b=8;
epsilon=0.25;
x1=b-0.618*(b-a);
f1=f(x1);
x2=a+0.618*(b-a);
f2=f(x2);
for k=1:7
fprintf(1,'迭代次数 k=%3.0f\n',k)
if f1<=f2
b=x2;
x2=x1;
f2=f1;
x1=b-0.618*(b-a);
f1=f(x1);
else
a=x1;
x1=x2;
f1=f2;
x2=a+0.618*(b-a);
f2=f(x2);
end
x=0.5*(b+a);
fprintf(1,'迭代区间-左端 a=%3.4f\n',a)
fprintf(1,'试点1坐标值 a=%3.4f\n',x1)
fprintf(1,'函数值 f1=%3.4f\n',f(x1))
fprintf(1,'迭代区间-右端 b=%3.4f\n',b)
fprintf(1,'试点2坐标值 x2=%3.4f\n',x2)
fprintf(1,'函数值 f2=%3.4f\n',f(x2))
fprintf(1,'区间中点 x=%3.4f\n',x)
% disp''
end
让disp函数不工作,即可,不过看起来你这编的是0.618算法。好像网上有源代码
不过你这是控制迭代次数,下面我给了你控制迭代精度的代码,希望对你有所帮助,
如果你喜欢我的回答,那就给个精华吧
clc
clear all;
a=1; %区间下限
b=7; %区间上限
e=0.1; %精确度
f = inline('x^2-7*x+10');
%构造的目标函数
x1=a+0.382*(b-a);
y1=f(x1);
x2=a+0.618*(b-a);
y2=f(x2);
while abs(b-a)>e
if y1<y2
b=x2;
x2=x1;
y2=y1;
x1=a+0.382*(b-a);
y1=f(x1);
else
a=x1;
x1=x2;
y1=y2;
x2=a+0.618*(b-a);
y2=f(x2);
end
end
xp=0.5*(a+b); %算出目标值
fp=f(xp);
sprintf('xp=%f,\nfp=%f',xp,fp)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询