一道MATLAB题,求助啊

作者&投稿:正居 (若有异议请与网页底部的电邮联系)
Matlab的一道题目,有大神能帮忙解决一下吗?谢谢~~

我首先编写了函数文件iteraplot.m,如下
function iteraplot(n,x0,y0) x = x0*ones(1,n); y = y0*ones(1,n); for i = 1:n-1 x(i+1) = 1+y(i)-1.4*x(i)^2; y(i+1) = 0.3*x(i); end plot(x,y,'.');end运行
iteraplot(30000,0,0)结果如下图

(1)plot方法:
t=0:0.01:pi;
x=sin(3*t).*cos(t);
y=sin(3*t).*sin(t);
plot(x,y)

(2)ezplot方法:
syms x y t;
x=sin(3*t)*cos(t);
y=sin(3*t)*sin(t);
ezplot(x,y)

题主并没有把问题描述清楚。


其实这是一个单一设施选址问题,其中的ai对应的是平面上点的坐标,wi为各点的权重。所谓【f是一个特定函数】说的很含糊,其实f是所选点与各已知点距离的加权和,而迭代的目标则是让f达到最小值。

这是一个无约束优化问题,可用fminunc直接求解:

% 常数定义
a1 = [2; 0]; a2 = [4; 10]; a3 = [8; 3]; a4 = [3; 5]; a5 = [5; 7];
w1 = 6; w2 = 2; w3 = 7; w4 = 5; w5 = 4;
e = 1e-6;

% 为便于统一处理,使用数组
A = [a1 a2 a3 a4 a5];
W = [w1 w2 w3 w4 w5];

% 初值
x0 = rand(2,1) * 10;

% 定义求范数和目标函数的匿名函数
n = @ (x) arrayfun( @ (i) norm( A(:,i) - x), 1:length(W) );
f = @ (x) sum( W .* n(x) ); 
x=fminunc(f,x0,optimset('LargeScale','off', 'display', 'off'))

 

如果用题主贴出的来式子编程序,代码如下:

% 常数定义
a1 = [2; 0]; a2 = [4; 10]; a3 = [8; 3]; a4 = [3; 5]; a5 = [5; 7];
w1 = 6; w2 = 2; w3 = 7; w4 = 5; w5 = 4;
e = 1e-6;
% 为便于统一处理,使用数组
A = [a1 a2 a3 a4 a5];
W = [w1 w2 w3 w4 w5];
% 初值
x0 = rand(2,1) * 10;
% 定义求范数和目标函数的匿名函数
n = @ (x) arrayfun( @ (i) norm( A(:,i) - x), 1:length(W) );
f = @ (x) sum( W .* n(x) );
% 迭代
while true
    N = n(x0);
    x = sum( [W; W] .* A ./ [N; N], 2 ) / sum( W ./ N, 2 );
    
    % 若满足精度要求,退出循环
    if abs( f(x) - f(x0) ) <= f(x0) * e
        break
    end
    x0 = x;
end
x

其实,迭代的终止条件除题主所给的目标函数相对误差(TolFun)之外,常见的还有变量本身的允许误差(TolX)以及迭代次数(MaxIter)等。

 

下面给出一个增加了绘图示意的版本。等值线为目标函数,各已知点根据权重以不同大小表示,动画示意了从不同初值经迭代到达最优点的过程。

% 常数定义
a1 = [2; 0]; a2 = [4; 10]; a3 = [8; 3]; a4 = [3; 5]; a5 = [5; 7];
w1 = 6; w2 = 2; w3 = 7; w4 = 5; w5 = 4;
e = 1e-6;
% 为便于统一处理,使用数组
A = [a1 a2 a3 a4 a5];
W = [w1 w2 w3 w4 w5];
% 初值(随机生成)
x0 = rand(2,1) * 10;
% 定义求范数和目标函数的匿名函数
n = @ (x) arrayfun( @ (i) norm( A(:,i) - x), 1:length(W) );
f = @ (x) sum( W .* n(x) );
% 绘图
clf
ezcontour(@(x,y)arrayfun(@(x,y)f([x;y]),x,y),[-3 12 -1 11])
hold on
for i = 1 : length(W)
    plot(A(1,i), A(2,i), 'o', 'MarkerSize', W(i)*2, 'MarkerFace', 'c' );
    text(A(1,i)+0.4, A(2,i), sprintf('(%g, %g)', A(:,i)));
end
h2 = plot(x0(1), x0(2), ':.', 'color', [1 1 1]*0.8);
h1 = plot(x0(1), x0(2), 'r*');
h3 = title('');
axis equal
colorbar
X = x0;
% 迭代
while true
    N = n(x0);
    x = sum( [W; W] .* A ./ [N; N], 2 ) / sum( W ./ N, 2 );
    
    % 更新绘图
    X = [X x];
    set(h2, 'XData', X(1,:), 'YData', X(2,:))
    set(h1, 'XData', x(1), 'YData', x(2))
    set(h3, 'str', sprintf('Current point: (%.4f, %.4f), f(x) = %.6f', x, f(x)) );
    drawnow
    pause(0.5)
    
    % 若满足精度要求,退出循环,否则以新的值继续迭代
    if abs( f(x) - f(x0) ) <= f(x0) * e
        set(h1, 'Color', 'g', 'Marker', 'p', 'MarkerFace', 'g')
        break
    end
    x0 = x;
end

参考:

Weiszfeld 算法



QQ号给我,我知道


哪位大佬可以帮忙解答,matlab如何做这道题?
【求解答案】拟合函数的表达式为 y=0.87283237x²-2.64547206x+1.82466281 【求解思路及解决方案】该题可以最小二乘求得拟合函数的系数。1、假设给出的数据,符合抛物线回归函数,即 y=b1x²+b2x+b3 2、根据已知x变量序列,创建一个新的X变量矩阵和Y变量矩阵,即 3、用matlab的regress...

数学建模软件题-matlab
1.Matlab的数据类型有6种,写出四种:int short long double logical char 自己挑吧 2.已知A=[0 2 3;1 3 0];B=[1 0 3;1 5 0];写出下列个指令运行结果 A+B ans= [1 2 6;2 8 0]A==B ans= [0 0 1;1 0 1]A.\/B ans= [0 Inf 1;1 0.6 NaN]3.已知A是矩阵,求A的...

MATLAB程序题
用subplot函数在整个图形窗口分割成几个分图。实现代码 x=linspace(0,10,20);y=2.*sin(x);subplot(2,2,1)bar(x,y,'r')title('条形图');subplot(2,2,2)stairs(x,y,'k')title('阶梯图');subplot(2,2,3)stem(x,y,'b')title('杆图');subplot(2,2,4)fill(x,y,'m')title(...

一道matlab题,望哪位大虾帮忙做一下哈,今天急需!!!1
解:设第一年投资给A、D分别为x1、x2,第二年投资给A、C、D分别为x3、x4、x5,第三年投资给A、B、D分别为x6、x7、x8,第四年投资给x9、x10,第五年投资给D为x11,y为第五年末的本息总额,则约束条件为:x1+x2=10 x3+x4+x5=x2*1.06 x6+x7+x8=x1*1.15+x5*1.06 x9+x10=x3*1...

MATLAB作业,没学好都不会做,共十几道题,追加100分
感谢大神,多发些答案,我也上matlab。第7题答案是:MATLAB 的GUI的基本图形对象分为控件对象uicontrol和用户界面菜单对象uimenu(包括固定菜单和现场菜单),简称控件和菜单。一,控件对象及属性(Object and its attributes of controller))1. GUI控件对象类型(The mode of controller object)控件对象是事件...

求解两道MATLAB的题
1、其实上面说了是平面任意力系,所以假设是平面直角坐标系,则任意一个力(向量)都可以用a(1,0),b(0,1)表示,所以F(i)=(x(i),y(i)),所以合力就是向量相加。应该就是这样。2、利用牛顿切线法 这里做第二题 代码:clear,clc f=@(x)3*x^5-4*x^3+2*x-1;df=@(x)15*x...

求matlab大神,4道题程序,急
5、参考代码:x=-1:0.1:1;y1=1+x;y2=1+x+x.^2\/2;y3=cos(x);y4=exp(x);plot(x,[y1;y2;y3;y4])legend('1+x','1+x+x^2\/2','cos(x)','e^x',2)6、参考代码 >> f=inline('x^3-2*x+5');>> x=fzero(f,2)x = -2.0946>> ezplot(f,[-4 4])>> ...

matlab经典题目和答案
matlab经典题目和解题方法如下:1、Matlab是一款广泛应用于科学计算、算法开发、数据分析、图像处理、视频处理、信号处理等领域的软件,它提供了丰富的函数库和工具箱,为使用者提供了便利和高效的工作方式。以下是一些经典的Matlab题目和答案。2、这些题目可以帮助初学者更好地理解和掌握Matlab的基本概念和用法...

求人教我用MATLAB做这两题。 要代码的,谢谢
问题3 clc clear all;close all;total=0;%人数 sum=0;%总成绩 average=0;%平均成绩 failed=0;%不及格人数 good=0;%90分以上的人数 begin=input('是否开始输入学生成绩(1:开始,其他:不开始):');if(begin==1)marks=input('请输入学生成绩,结束请输入(-1):');while(marks~=-1)t...

请教matlab 的一道题
a=100:200;x=a(mod(a,18)==0)x = 108 126 144 162 180 198

桑日县18734496750: 求一道matlaB题答案啊.急用.编写程序证明任何一个大于等于6的偶数n总可以分解成两个奇素数的和.要求:(1) 对输入数字n做出合理性判断,对不合理情... -
通文仙利:[答案] 第一题答案 function decomposetoprime(r) %证明大于6的任意整数都能分解为两个质数之和 if ~isvector(r),return;end;%向量判定 if size(r,1)>1|| size(r,2)>1 ,return;end;%单数判定 if ~(r==fix(r)),return;end;%整数判定 if ~(r>=6),return;end;%大于6判...

桑日县18734496750: 一道MATLAB题目.建立一个10阶方阵,其第1:4行、第1:4列为单位矩阵;其第1:4行、第5:8列为魔方矩阵;其第5:8行、第1:4列为全零矩阵;其第5:8行、第5:... -
通文仙利:[答案] M=zeros(10,10);M(1:4,1:4)=eye(4);M(1:4,5:8)=magic(4);M(5:8,5:8)=diag([1,2,3,4]);M(9:10,1:4)=rand(2,4);M(9:10,5:8)=ones(2,4);M(:,9)=(1:3:30)';M(:,10)=(0.1:0.1:1)';MATLAB 7.0.1测试无误.

桑日县18734496750: matlab一道题,希望大神帮忙解答!! -
通文仙利: function t=tayor(x) %talor函数 t=0; i=zeros(100); for i=1:10000temp=(-1)^(i-1)*x^(2*i-1)/(2*i-1);t=t+temp; end command window:pi/4ans = 0.7854tayor(1)ans = 0.7854 tayor(1/2)+ tayor(1/3)ans = 0.7854 这证明下式的确正确

桑日县18734496750: 请问一道MATLAB求子矩阵的题目,急得到一个矩阵A,行n和列m都大于等于2,求他的行列式最大值的2*2子矩阵 -
通文仙利:[答案] max=0; for i=1:n-2 for j=1:m-2 A_son=A(i:i+1,j:j+2)); if(det(A_son)>max) max=det(A_son); end end end

桑日县18734496750: 求助,一道matlab的题目! -
通文仙利: 用法:morsecode=morse('matlabsky baidu wacs5',0) %编码srccode=morse(morsecode,1) %解码morsecode(2)='.'; %修改码srccode=morse(morsecode,1) %错误的morse码进行解码=============以下是m文件==========function Dst=...

桑日县18734496750: 求问一道用Matlab的题目. -
通文仙利: 代码比较简单,但K和a的值未明确指定,只能随意取来说明问题了. (1)取a=0.5,K=1(求阶跃响应需要),绘制根轨迹:a=0.5; K=1; GH=zpk(-a,[0 0 -1],K); rlocus(GH) 求单位阶跃响应:step(feedback(GH,1)) (2)a在0-1之间取值,分别绘制根轨迹和...

桑日县18734496750: matlab一个很小的编程题目,求助!!! -
通文仙利: 楼上两位的回答都很用心,也很精彩,赞一个. 我的代码主要有以下优点:(1)用稀疏矩阵存储a,克服内存不足问题(N取100万,使用的内存还不到20M).(2)绘图动态显示N次模拟过程中r/R的变化. 代码如下(同时已作为附件上传):N ...

桑日县18734496750: 求教一道matlab题 -
通文仙利: 1,B = reshape(A,m,n) returns the m-by-n matrix B whose elements are taken column-wise from A. An error results if A does not have m*n elements.reshape返回m*n维数组,其中元素都是A中的元...

桑日县18734496750: matlab中的一道题 求教 -
通文仙利: 用matlab绘制半球面z=sqrt(1-x^2-y^2)与圆柱面z=x^2+y^2的交线图形的方法是:第一步,用fmesh()分别绘制半球面三维图形和圆柱面三维图形 第二步,用solve()求出半球面和圆柱面的交线坐标点(x,y,z) 第三步,用plot3()绘制空间交线图形 如需要详细的程序代码,可以私信与我.

桑日县18734496750: 求解一道matlab作业题 -
通文仙利: p1=1+0.0168; p2=1+0.0055; p3=1-0.045; t=[0:24]; figure,hold on; plot(t,round(100*t^p1),t,round(100*t^p2),t,round(100*t^p3)); legend('较好条件','中等条件','较差条件'); hold off;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网