24小时热门版块排行榜    

查看: 1963  |  回复: 9

大海的声音

新虫 (小有名气)

[求助] MATLAB求某一式子怎么求不出结果 已有1人参与

如图,
每个x对应一个w,x有一列数,求其对应的w;
x=[    ];  //数据输入
c=[662.3012161 1.235047160711485 0.003402653539486 -0.421886852153956];
syms n;
u=symsum((-1)^n.*x.^(n*c(4)+2)/((c(4)*n+2)*c(3)^(n*c(4))*prod(n)),n,1,300);
w=c(1).*x.^2*(1-c(2))/2+c(1)*c(2).*x.^2/2+c(1)*c(2).*u-c(1).*x.^2.*(1-c(2)*(1-exp(-(x/c(3)).^c(4)))).^2/2;
plot(x,y,'*');
一直Busy,怎么没有反应,求各位指点迷津!

MATLAB求某一式子怎么求不出结果
chuan.jpg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kabaisun

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
大海的声音: 金币+4, ★★★很有帮助 2015-01-16 20:28:03
你这个式子求u时很费时,所以一直出不来结果,你要看怎么把计算u的时间缩短。如果x个数给的比较少的话,像取十个x就比较快;提升速度还可以把n调小些。

以下是修改的代码,
CODE:
c=[662.3012161 1.235047160711485 0.003402653539486 -0.421886852153956];
x=1:10;
syms n ;
u=single(symsum((-1)^n.*x.^(n*c(4)+2)/((c(4)*n+2)*c(3)^(n*c(4))*prod(n)),n,1,100));
w=c(1).*x.^2*(1-c(2))/2+c(1)*c(2).*x.^2/2+c(1)*c(2).*u-c(1).*x.^2.*(1-c(2)*(1-exp(-(x/c(3)).^c(4)))).^2/2;
plot(x,w,'*');

严实诚勇
2楼2015-01-16 19:28:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大海的声音

新虫 (小有名气)

引用回帖:
2楼: Originally posted by kabaisun at 2015-01-16 19:28:31
你这个式子求u时很费时,所以一直出不来结果,你要看怎么把计算u的时间缩短。如果x个数给的比较少的话,像取十个x就比较快;提升速度还可以把n调小些。

以下是修改的代码,

c=;
x=1:10;
syms n ;
u=single ...

谢谢,我这个x=[0.000006 0.000008 0.00001 0.000012 0.000014 0.00003 .....]由小到大无规律排列的一列数,有14000多个数,看来只能把n缩小点了,虽然这样是有误差的。
3楼2015-01-16 19:35:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kabaisun

专家顾问 (正式写手)

引用回帖:
3楼: Originally posted by 大海的声音 at 2015-01-16 19:35:37
谢谢,我这个x=由小到大无规律排列的一列数,有14000多个数,看来只能把n缩小点了,虽然这样是有误差的。...

x数据太多可以试试把u的计算式换成矩阵乘法,把syms符号计算去掉。
严实诚勇
4楼2015-01-16 20:28:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大海的声音

新虫 (小有名气)

引用回帖:
4楼: Originally posted by kabaisun at 2015-01-16 20:28:37
x数据太多可以试试把u的计算式换成矩阵乘法,把syms符号计算去掉。...

这个不好换吧?我这里面u表示的是无穷级数求和。
5楼2015-01-16 20:31:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kabaisun

专家顾问 (正式写手)

引用回帖:
5楼: Originally posted by 大海的声音 at 2015-01-16 20:31:51
这个不好换吧?我这里面u表示的是无穷级数求和。...

不是算到无穷,n可以取较小的数。
严实诚勇
6楼2015-01-16 20:41:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大海的声音

新虫 (小有名气)

引用回帖:
6楼: Originally posted by kabaisun at 2015-01-16 20:41:47
不是算到无穷,n可以取较小的数。...

10或者5?
7楼2015-01-16 20:43:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kabaisun

专家顾问 (正式写手)

引用回帖:
7楼: Originally posted by 大海的声音 at 2015-01-16 20:43:06
10或者5?...

不晓得了,具体值试几个看差距大不大,分别取10,20,30看看

[ 发自小木虫客户端 ]
严实诚勇
8楼2015-01-16 21:09:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大海的声音

新虫 (小有名气)

引用回帖:
8楼: Originally posted by kabaisun at 2015-01-16 21:09:41
不晓得了,具体值试几个看差距大不大,分别取10,20,30看看
...

3q,我试试,
9楼2015-01-16 21:12:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大海的声音

新虫 (小有名气)

引用回帖:
8楼: Originally posted by kabaisun at 2015-01-16 21:09:41
不晓得了,具体值试几个看差距大不大,分别取10,20,30看看
...

还想问你一个问题,这里面u用符号变量表示算的的确比较慢,能不能把“u=symsum((-1)^n.*x.^(n*c(4)+2)/((c(4)*n+2)*c(3)^(n*c(4))*prod(n)),n,1,300);”改为一个循环结构改的对吗?
for n=1:300;
   if n=1
      u=-x.^(c(4)+2)/(c(3)^c(4)*(c(4)+2))
   else
     u=u+  (-1)^n.*x.^(n*c(4)+2)/((c(4)*n+2)*c(3)^(n*c(4))*prod(n));
     n=n+1;
   end;
  end;
谢谢!
10楼2015-01-18 15:32:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 大海的声音 的主题更新
信息提示
请填处理意见