Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-12-24
年龄: 46
帖子: 6
声望力: 0 ![]() |
![]()
帮忙看一下这段代码,为什么不能实现?
式中:n就是一个离散点数,给定具体n值后,就会得出n个s 和F的函数值,s1是对于给定的n值所得的实部,s2是所得到的虚部,在这一项D=2*exp(a*t)*(symsum(s1,n,1,5000)-symsum(s2,n,1,5000)-0.5*s3);中,我就是想实现当取n从1取到5000,把s1计算出来的实部全部相加,s2把虚部相加,由于我也是初学,这样简单的问题也没搞定,希望大家给我看看那里有错误? syms n F s1 s2 s3 a T k L u m g F1 D t for t=1:0.1:10 s = a + 2*n*pi*i/T; m = 500; k = 100000; u = 0.01; T = 20; L = 5000; a = 0.5; g = 9.8; F = -k*m*s*u*(m*s*s+2*k)/((m*s*s+k)*(m*s*s+2*k)-k*k)+2*m*g/s; F1 = -k*m*s*u*(m*a*a+2*k)/((m*a*a+k)*(m*a*a+2*k)-k*k)+2*m*g/a; s1=real(F*cos(2*n*pi*t/T)); s2=imag(F*sin(2*n*pi*t/T)); s3=real(F1); D=2*exp(a*t)*(symsum(s1,n,1,5000)-symsum(s2,n,1,5000)-0.5*s3); end plot(t,D,'-') hold on |
![]() |
![]() |
![]() |
#2 |
普通会员
注册日期: 2009-02-22
帖子: 91
声望力: 18 ![]() |
![]()
你的s3是做什么用,里面也有n的,是对n求和还是什么?
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-12-24
年龄: 46
帖子: 6
声望力: 0 ![]() |
![]()
s3也是取F1的实部,其实F1就是一个实数
|
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-12-24
年龄: 46
帖子: 6
声望力: 0 ![]() |
![]()
S3 只是在取不同的t时,s3被(symsum(s1,n,1,5000)-symsum(s2,n,1,5000)-0.5*s3)减一次,
|
![]() |
![]() |
![]() |
#5 |
高级会员
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26 ![]() |
![]()
lz 能否把你在运行该段程序时显示的matlab的整句错误提示贴上来 大家一起讨论一下
|
![]() |
![]() |
![]() |
#6 |
普通会员
注册日期: 2009-02-22
帖子: 91
声望力: 18 ![]() |
![]()
s3中有n,而你没对n作操作,所以没法得到结果
|
![]() |
![]() |
![]() |
#7 |
初级会员
注册日期: 2008-12-24
年龄: 46
帖子: 6
声望力: 0 ![]() |
![]()
我写错了,不好意思,F1中的那个s是a。我写错了,要是a
的化,就可以得到把 |
![]() |
![]() |
![]() |
#8 |
普通会员
注册日期: 2009-02-22
帖子: 91
声望力: 18 ![]() |
![]()
试试这样:
syms n T = 20; m = 500; k = 100000; u = 0.01; L = 5000; a = 0.5; g = 9.8; s = a + 2*n*pi*i/T; w=0; for t=1:0.1:10 w=w+1; F = -k*m*s*u*(m*s*s+2*k)/((m*s*s+k)*(m*s*s+2*k)-k*k)+2*m*g/s; F1 = -k*m*a*u*(m*a*a+2*k)/((m*a*a+k)*(m*a*a+2*k)-k*k)+2*m*g/a; s1=real(F*cos(2*n*pi*t/T)); s2=imag(F*sin(2*n*pi*t/T)); s3=real(F1); f1=symsum(s1,n,1,5000);%%5000的话数值太大,很耗时间的,机子需要时间的 f2=symsum(s2,n,1,5000); D(w)=2*exp(a*t)*(f1-f2-0.5*s3); end t=1:0.1:10; plot(t,double(D)) |
![]() |
![]() |
![]() |
#9 |
初级会员
注册日期: 2008-12-24
年龄: 46
帖子: 6
声望力: 0 ![]() |
![]()
谢谢楼主的答复,我运行可一下,的确很慢,还有就是在end后面的t=1:0.1:10;是不是不需要了把,前面已经有个循环了
|
![]() |
![]() |