初学matlab,有几道程序设计的题不会。急需帮助!

初学matlab,有几道程序设计的题不会。急需帮助!,第1张

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 = 

g =

h =

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编程题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10007684.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存