24小时热门版块排行榜    

查看: 2099  |  回复: 9

hym5701

木虫 (小有名气)

[求助] 怎么能加速,太慢了 已有1人参与

大家好,我有一个积分要计算,主要是积分区间是-inf到inf,算的太慢了,即使是把积分区间换成(-1,1)好像也很慢,怎么回事,有没有什么方法能加速提高运算速度呢?谢谢!要是把积分区间换成(-1,1)怎么结果还是一个表达式呢,不应该是一个数值吗?
clc;clear
syms x
a=0.5;
b=0.8;
c=1;
d=2;
e=0.1;
fxfz=(a-i*(x-b))*(c+i*(x-d))*x*exp(e*x);
fxfm=(a^2+(x-b)^2)*(c^2+(x-d)^2)*(exp(e*x)-1)^2;
fjf=int(fxfz/fxfm,-inf, inf)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cob

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
hym5701: 金币+20, ★★★★★最佳答案, 感谢你的指导 2015-09-24 12:38:04
xzhdty: 谢谢参与 2015-09-24 19:01:19
不用 syms x, 会快很多
2楼2015-09-22 06:31:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hym5701

木虫 (小有名气)

引用回帖:
2楼: Originally posted by cob at 2015-09-22 06:31:19
不用 syms x, 会快很多

不syms x 那怎么行,它不是变量吗
3楼2015-09-22 20:22:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cob

木虫 (正式写手)

引用回帖:
3楼: Originally posted by hym5701 at 2015-09-22 20:22:52
不syms x 那怎么行,它不是变量吗...

在matlab网站上找的例子,我没有实验。你实验下。应该会快很多。我以前也用过syms,发现它很慢。换了,就快多了。


Create the function f(x) = 1/(x3 – 2x – c) with one parameter, c.

fun = @(x,c) 1./(x.^3-2*x-c);
Evaluate the integral from x=0 to x=2 at c=5.

q = integral(@(x)fun(x,5),0,2)
4楼2015-09-22 21:33:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hym5701

木虫 (小有名气)

引用回帖:
4楼: Originally posted by cob at 2015-09-22 21:33:23
在matlab网站上找的例子,我没有实验。你实验下。应该会快很多。我以前也用过syms,发现它很慢。换了,就快多了。


Create the function f(x) = 1/(x3 – 2x – c) with one parameter, c.

fun = @(x,c) 1. ...

谢谢你的提示,我用一个简单的例子,提示Inner matrix dimensions must agree.,,帮忙看看哪里不对,而且结果怎么还是一个表达式呢,不应该是一个数值吗
clc;clear
% syms x
a=0.5;
b=0.8;
c=1;
d=2;
e=0.1;
fun=@(x)x.^2*exp(e*x)*((x-a)+i*b)/(((x-a).^2+b.^2)*(exp(e*x)-1).^2);
q=integral(@(x)fun(x),-1,1)
5楼2015-09-23 10:16:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cob

木虫 (正式写手)

引用回帖:
5楼: Originally posted by hym5701 at 2015-09-23 10:16:30
谢谢你的提示,我用一个简单的例子,提示Inner matrix dimensions must agree.,,帮忙看看哪里不对,而且结果怎么还是一个表达式呢,不应该是一个数值吗
clc;clear
% syms x
a=0.5;
b=0.8;
c=1;
d=2;
e=0. ...

'i' 没定义
方程
fun=@(x)(x.^2).*(exp(e*x)).*(((x-a)+i*b))./(((x-a).^2+b^2).*(exp(e*x)-1).^2);
6楼2015-09-23 19:51:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hym5701

木虫 (小有名气)

引用回帖:
6楼: Originally posted by cob at 2015-09-23 19:51:18
'i' 没定义
方程
fun=@(x)(x.^2).*(exp(e*x)).*(((x-a)+i*b))./(((x-a).^2+b^2).*(exp(e*x)-1).^2);...

谢谢,i表示是虚数,不需要定义,另外问下,公式里的每个乘除为什么都要用点乘.*和点除./又不是矩阵,要是矩阵还是用点乘和点除吗?
7楼2015-09-24 12:36:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cob

木虫 (正式写手)

引用回帖:
7楼: Originally posted by hym5701 at 2015-09-24 12:36:13
谢谢,i表示是虚数,不需要定义,另外问下,公式里的每个乘除为什么都要用点乘.*和点除./又不是矩阵,要是矩阵还是用点乘和点除吗?...

正常的矩阵运算直接+ - * /
用"." 就对应数的计算
例如
A =
     1     2
     3     4
B =
     5     6
     7     8
A * B=
19    22
43    50
A.*B=
  5    12
  21    32
A./B =
    0.2000    0.3333
    0.4286    0.5000

» 本帖已获得的红花(最新10朵)

8楼2015-09-24 18:54:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hym5701

木虫 (小有名气)

送红花一朵
引用回帖:
8楼: Originally posted by cob at 2015-09-24 18:54:14
正常的矩阵运算直接+ - * /
用"." 就对应数的计算
例如
A =
     1     2
     3     4
B =
     5     6
     7     8
A * B=
19    22
43    50
A.*B=
  5    12
  21    32
A./B ...

这个我清楚,我想问的是那个公式里就每个不是就一个数值吗,干嘛得用.*和./呢,.*和./对于矩阵来说有很大的区别,但是那个式子里每个就只有一个值,相乘本来就是对应的计算啊,为什么一定要用. 呢?这个用和不用有很大的区别,为什么?
9楼2015-09-25 09:47:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cob

木虫 (正式写手)

引用回帖:
9楼: Originally posted by hym5701 at 2015-09-25 09:47:20
这个我清楚,我想问的是那个公式里就每个不是就一个数值吗,干嘛得用.*和./呢,.*和./对于矩阵来说有很大的区别,但是那个式子里每个就只有一个值,相乘本来就是对应的计算啊,为什么一定要用. 呢?这个用和不用有 ...

对x积分,是个范围 【-1,+1】,x 不是一个值.
在每一段 dx , x(i)到 x(i+1) 内,用各种算法(Mid-point rule, Simpson's rule ,Romberg integration 等)求x(i)到 x(i+1)的积分值,之后在把所有的加起来。
int 具体怎么离散x的,积分是怎么算的。我没找到具体的介绍。
10楼2015-09-25 18:59:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hym5701 的主题更新
信息提示
请填处理意见