查看: 328|回复: 3|关注: 0

[已答复] 矩阵变量赋值的问题

[复制链接]

新手

34 麦片

财富积分


050


4

主题

16

帖子

0

最佳答案
发表于 2020-6-16 20:37:42 | 显示全部楼层 |阅读模式
10 财富积分
定义了两个1*20的矩阵变量x,y,x=[x1,x2……x20],y=[y1,y2……y20]
已知递推关系,其中a,b,c,d都是常数,且有和x1和y20为已知

                               
登录/注册后可看大图

现在我根据x1和递推关系将x(i)和y(i)都表示成了y1的函数,y20=f(y1)已知,因此可以求出y1的值
但是现在x,y还是带有y1的形式,比如y=[y1, y1+1, y1+1.1,……]这种形式,现在我想将求出的y1,带回到定义的变量x,y中,将x,y表示成具体的数的形式,应该怎么办呢?

clear all
clc
n=20;a=1;b=1.2;c=1.5;d=2;
x = sym(zeros(1,n));%将x定义为x=[x1,x2,……xn]形式
for i=1:n
cmd = sprintf('sym(''x%i'')',i);
x(i) = eval(cmd);
end
y = sym(zeros(1,n));%将y定义为y=[y1,y2,……yn]形式
for i=1:n
cmd = sprintf('sym(''y%i'')',i);
y(i) = eval(cmd);
end

x(1)=0;%(x1已知)

for(i=1:n-1) %根据递推关系和x1初值得到x(i),y(i)的表达式,
       y(i+1)=b*x(i)-c*x(i)+d;
       x(i+1)=a*x(i)-c*y(i)+d;

end
res=solve(y(20)-2.5,y(1));%根据y(20)=2.5,解出y1的值
vpa(x)%将分数形式转换为小数形式
vpa(y)
vpa(res)

回复主题 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2020-6-23 22:33:51 | 显示全部楼层
xuexiyixa,港入门
回复此楼 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2020-6-23 22:34:23 | 显示全部楼层
港入门,学习一下,好厉害哦
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

360 麦片

财富积分


50500


19

主题

215

帖子

41

最佳答案
  • 关注者: 4
发表于 2020-6-28 10:12:12 | 显示全部楼层
用eval;我将你代码后面加入了三行你看下,xx,yy存放成具体的数的形式。
  1. clear all
  2. clc
  3. n=20;a=1;b=1.2;c=1.5;d=2;
  4. x = sym(zeros(1,n));%将x定义为x=[x1,x2,……xn]形式
  5. for i=1:n
  6. cmd = sprintf('sym(''x%i'')',i);
  7. x(i) = eval(cmd);
  8. end
  9. y = sym(zeros(1,n));%将y定义为y=[y1,y2,……yn]形式
  10. for i=1:n
  11. cmd = sprintf('sym(''y%i'')',i);
  12. y(i) = eval(cmd);
  13. end

  14. x(1)=0;%(x1已知)

  15. for(i=1:n-1) %根据递推关系和x1初值得到x(i),y(i)的表达式,
  16.        y(i+1)=b*x(i)-c*x(i)+d;
  17.        x(i+1)=a*x(i)-c*y(i)+d;

  18. end
  19. res=solve(y(20)-2.5,y(1));%根据y(20)=2.5,解出y1的值
  20. vpa(x)%将分数形式转换为小数形式
  21. vpa(y)
  22. vpa(res)

  23. %% xx,yy存放成具体的数的形式
  24. y1=vpa(res);
  25. xx=eval(x);
  26. yy=eval(y);
复制代码
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表