求解一道matlab作业题?
- 资格考试
- 2023-07-27 17:44:17
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. 已知五个点,如果曲面方上一篇
教师资格证答辩时能看教案吗
下一篇
返回列表