
n=input('输入学生个数:');
score=zeros(n,3);
aver=zeros(n,1);
levels=zeros(1,5);
lname={'A','B','C','D','E'};
for i=1:n
for j=1:3
score(i,j)=input(sprintf('输入第%d名学生第%d门课成绩',i,j));
end
aver(i) = (score(i,1) + score(i,2) + score(i,3)) / 3;
if aver(i) >= 90
l = 1;
else if aver(i) >= 80
l = 2;
else if aver(i) >= 70
l = 3;
else if aver(i) >= 60
l = 4;
else
l = 5;
end
end
end
end
levels(l) = levels(l) + 1;
disp(strcat('该学生成绩等级为',lname{l}));
end
for i=1:5
fprintf(1,'%4c',lname{i});
end
disp(' ');
for i=1:5
fprintf(1,'%4d',levels(i));
end
disp(' ');
在Matlab中分别输入上述三个矩阵,各题的答案如下:
1)计算C=b'-AX',若C的单元中出现负数,说明相应的食物供给不足。但实际计算得到C=[300,200,150],所以食物供给充足。
2)计算for i=1:4
D(i)=min(C/A(:,i))
end
最后算得结果分别是200,150,100,100。
3)记Y=X(1:3)=[1000,500,350],B=A(:,1:3),计算结果为min(B\b'-Y')
注意斜杠的方向哦。/和\在矩阵计算中是不同的。另外,点除“/”和除“/”也是不一样的。
x1=-pi/2:001:pi/2;
syms x y
y1=cos(x1)^05;
y2=(x^2)/4+(y^2)/16;
subplot(2,2,2);
plot(x1,y1);
subplot(2,2,3);
ezsurf(y2,[-2,2,-4,4]);
新建一个m文件myfunm,内容如下:
function T = myfun(x)
T = x(1)^2+2x(2)^2-x(1);
新建一个m文件myconm,内容如下:
function [c, ceq] = mycon(x)
c(1) = x(1)^2+x(2)^2-1;
ceq = [];
在matlab command window里输入:
x0=[0;0];
[x, fval] = fmincon(@myfun, x0, [], [], [], [], [], [], @mycon)
以上是求最冷点,求最热点的话把myfunm中的T函数改成
T = -(x(1)^2+2x(2)^2-x(1));
其他的不需要改动,算出结果的时候把fval的符号换一下就行了
①A = randint(6,6,[5,85])
②Y = A(3:5,[1 5 6])
③C = A;
C(1,:) = 10
④D = [A,C]
E = [A;C]
⑤D(find(D == 10)) = 0
2
a = input('请输入一个3位数:')
b(1) = mod(a,10);
b(2) = mod(floor(a/10),10);
b(3) = floor(a / 100)
c = b(1) 100 + b(2) 10 + b(3)
前两题答案
>
楼上的回答存在问题。
诚然,Mathematica在符号运算方面总体上优于MATLAB,推荐使用Mathematica没问题;但楼上关于MATLAB符号运算的说法却纯粹是想当然,像这样误导人的做法以后还是应该少一些。
其实,当solve返回多个输出参数的时候,其顺序是按照字母表顺序,而不是你通过输入参数指定的变量顺序,也不是楼上所说的按照变量出现的先后顺序。所以不小心很容易搞错(对于当前这个例子没问题)。
从solve函数的说明中摘录一段:
>> help solve
SOLVE Symbolic solution of algebraic equations
Three different types of output are possible For one equation and one
output, the resulting solution is returned, with multiple solutions to
a nonlinear equation in a symbolic vector For several equations and
an equal number of outputs, the results are sorted in lexicographic
order and assigned to the outputs For several equations and a single
output, a structure containing the solutions is returned
现在应该明白怎么做了吧?调用时应该是
[t,x,y,z] = solve(f,g,h,k);再检验一下结果看看:
f=simple(subs(f))g=simple(subs(g))
h=simple(subs(h))
k=simple(subs(k))
f =
0
g =
0
h =
0
k =
0
比 较好的做法是返回一个输出参数,该参数为结构体,然后再获得结构体的域即可:
s=solve();fns = fieldnames(s);
for i=1:length(fns)
eval([fns{i} '=s' fns{i}]);
end
在MATLAB中同样也可以用一个命令解决:
>> s=solve('x+z-a', '(2^(1/2)mx)/2 + (2^(1/2)my)/2+(2^(1/2)mt)/2 - (2^(1/2)mz)/2-b', 'm^2(y- t)-m^2c', '(2^(1/2)m^3(y-x+z+t))/2-m^2d')s =
t: [1x1 sym]
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]
后面用st、sx之类的符号就可以引用求得的结果了。
以上就是关于初学matlab,有几道程序设计的题不会。急需帮助!全部的内容,包括:初学matlab,有几道程序设计的题不会。急需帮助!、matlab编程应用题、来来来,帮我做道matlab编程题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)