作业帮 > 综合 > 作业

matlab中关于符号向量的计算问题,求帮助

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 08:23:09
matlab中关于符号向量的计算问题,求帮助
clc
clear
u2=zeros(1,100);
for i=1:101
u=sym('u',[1,101]);
end
for i=1:100
b=sym('b',[1,100]);
d=sym('d',[1,100]);
a=sym('a',[1,100]);
end
u(1,1)=1;
t=0:1:100;
for i=1:100
b(1,i)=u(i+1)/2;
d(1,i)=3^u(1,i);
a(1,i)=b(i)*d(i);
solve('u(1,i+1)-u(1,i)-a(1,i)','u(1,i+1)');
u2(i)=vpa(u(1,i+1));
end
u2
一下是运行时的问题:
Warning: 2 equations in 0 variables.
Warning: Explicit solution could not be found.
> In solve at 81
In Untitled at 18
? The following error occurred converting from sym to double:
Error using ==> mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
Error in ==> Untitled at 19
u2(i)=vpa(u(1,i+1));
clc % 改了下程序.还有问题,告诉我题目,我帮你编程.
clear
uu2=zeros(1,100);
u=sym('u',[1,101]) % 建符号矩阵
b=sym('b',[1,100]);
d=sym('d',[1,100]);
a=sym('a',[1,100]);
u(1,1)=1;
t=0:1:100;
for i=1:100 % 如果没猜错的话!
b(i)=u(i+1)/2;
d(i)=3^u(i);
a(i)=b(i)*d(i);
u(i+1) =solve(u(i+1)-u(i)-a(i),u(i+1));
uu2(i)=vpa(u(i+1));
end
uu2
再问: 这是我专业有关的一个程序的一部分,solve函数的求解表达式为“solve(‘a+b-c','u(i+1)');其中a、b、c都为u(i)和u(i+1)的函数,通过赋初值即u(1,循环中每一步u(i)由上一步求出,再由solve函数求出u(i+1),又可计算下一循环。(程序其它部分没难度,就是参数不断赋值的过程,主要是循环中的solve函数以及syms或sym定义符号向量出问题。)
再答: 那就好。可能有多解问题。
for i=1:3 % 建议先少算几个

b(i)=u(i+1)/2;
d(i)=3^u(i);
a(i)=b(i)*d(i);
u(i+1) =solve(u(i+1)-u(i)-a(i),u(i+1));
uu2(i)=vpa(u(i+1));
end
符号计算很费时。
再问: 这种方式,我试了一下,行不通,如果你得到了解决方法,希望能继续提供给我,还有我这个程序的循环次数是比较大的,谢谢。
再答: clear
uu2=zeros(1,100);
u=sym('u',[1,101]);

b=sym('b',[1,100]);

d=sym('d',[1,100]);
a=sym('a',[1,100]);
u(1)=1; % u(1,1)=1;

t=0:1:100;
for i=1:100 % 2 %
b(i)=u(i+1)/2;
d(i)=3^u(i);
a(i)=b(i)*d(i); % u(i+1)-u(i)-(3^u(i) * u(i+1)/2)=0
u(i+1) = u(i)/(1 - 3^u(i) /2)
uu2(i)=vpa(u(i+1));

end
uu2
这是我优化后的程序,尽力了。
再不行,只能考虑题目或逻辑问题。