当前位置:首页 > 资格考试 > 正文

求解一道matlab作业题?

MATLAB作业?

题主的MATLAB问题,可以这样解决:

1、确定频率比a/b分别是有理数和无理数,如k=a/b=1.5,pi,2*pi

2、将已有的频率比,赋值给k变量,即 k=[3/2,1/3,1/2];

3、使用numden函数分解分子a和分母b,即

[a,b] = numden(sym(k));

4、利用for循环语句,计算当k为某值时的x、y值,即

t=0:0.5:10;

x=sin(a*t);

y=sin(b*t);

5、用plot函数绘制质点的运动轨迹图,即

plot(x,y),hold on

legend(str,'Location','southeast');

xlabel('x'),ylabel('y')

title('质点的运动轨迹图')

6、完成代码后,运行可以得到如下结果

一道MATLAB题,求助啊

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


其实这是一个单一设施选址问题,其中的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=[a1a2a3a4a5];
W=[w1w2w3w4w5];
%初值
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=[a1a2a3a4a5];
W=[w1w2w3w4w5];
%初值
x0=rand(2,1)*10;
%定义求范数和目标函数的匿名函数
n=@(x)arrayfun(@(i)norm(A(:,i)-x),1:length(W));
f=@(x)sum(W.*n(x));
%迭代
whiletrue
N=n(x0);
x=sum([W;W].*A./[N;N],2)/sum(W./N,2);

%若满足精度要求,退出循环
ifabs(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=[a1a2a3a4a5];
W=[w1w2w3w4w5];
%初值(随机生成)
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),[-312-111])
holdon
fori=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',[111]*0.8);
h1=plot(x0(1),x0(2),'r*');
h3=title('');
axisequal
colorbar
X=x0;
%迭代
whiletrue
N=n(x0);
x=sum([W;W].*A./[N;N],2)/sum(W./N,2);

%更新绘图
X=[Xx];
set(h2,'XData',X(1,:),'YData',X(2,:))
set(h1,'XData',x(1),'YData',x(2))
set(h3,'str',sprintf('Currentpoint:(%.4f,%.4f),f(x)=%.6f',x,f(x)));
drawnow
pause(0.5)

%若满足精度要求,退出循环,否则以新的值继续迭代
ifabs(f(x)-f(x0))<=f(x0)*e
set(h1,'Color','g','Marker','p','MarkerFace','g')
break
end
x0=x;
end

参考:

Weiszfeld 算法

求解一道matlab的题!!!

十分简单。把以下程序存为:average.m function y = average(X) y = sum(X)/length(X); 运行时: >> x=1:5 x = 1 2 3 4 5 >> average(x) ans = 3 可以type mean,看平均值的求法。 >>type mean function y = mean(x,dim) %MEAN Average or mean value. % For vectors, MEAN(X) is the mean value of the elements in X. For % matrices, MEAN(X) is a ro

用matlab解数学题?

由于题主给出的求和问题是包含x变量的,所以该问题只能用数值解的形式来表示可以。求解途径:

1、给出一系列x值,如 x=0~10,并建立x向量。即

x=0:0.5:10

2、使用for循环语句,用symsum函数求出当x为某值时对应的f(x)值:

fx=symsum(1/((2*n+1)*(2*x+1))^(2*n+1),n,0,+inf)

3、使用plot函数绘出其数值解的图形,即

plot(x,fx)

运行结果及图形。

求解matlab一道经典简单题,高分求解!

1. 已知五个点,如果曲面方程有5个系数,则可直接求出这5个系数。 如: f(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y Coefficients: p00 = -2850 p10 = -178.3 p01 = 1570 p20 = 162 p11 = -305.7 又如: f(x,y) = p00 + p10*x + p01*y + p11*x*y + p02*y^2 Coefficients: p00 = 7.326 p10 = 1675 p01 = -2192 p11 = -479.5 p02 = 646.5 2. 已知五个点,如果曲面方
展开全文阅读