24小时热门版块排行榜    

查看: 564  |  回复: 4

m76acxb

铜虫 (小有名气)

[求助] 循环积分的问题 已有1人参与

<clc,clear
x=0:0.01:1;
for i=1:length(x);
y=x.^2+x;
y1=quad(inline('y'),0,x(i))
plot(x(i),y1)
end>
这个程序感觉有问题,为什么我改变y的函数形式,y1的值不变(就是最后一次循环的值),希望能够帮忙改正一下。
思路:就是想在x的每个步长里面积分一次得到一次值,每次循环的值我没保存,因为当我改变函数形式时,最后一次循环我发现算出来的值一直不变。
回复此楼

» 猜你喜欢

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

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

fmying

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
m76acxb: 金币+20, ★★★很有帮助 2015-12-30 09:50:04
如果没有命令
hold on
的话,每次plot都会擦出上次plot的结果。由于你计算的每次都是一个值,因此最后只是得到一个点而已。
另外,quad需要第一个参数为函数表达式。我用的是2015b,测试后以下方案可行:

1 建立文件 myfunc.m,内容如下:
function y=myfunc(x)
y=x.^2+x;

2 主代码如下:
x=0:0.01:1;
N=length(x);
y1=zeros(1,N);
for i=1:N
y1(i)=quad(@myfunc,0,x(i));
end
plot(x,y1)

有关一些命令/函数的详细用法,可以用help查看。比如 help quad就可以得到quad函数的详细用法,还有例子。
我不是很清楚你用的matlab版本,我的2015b提示说quad函数就要被淘汰了,今后算积分推荐用integral函数,用法和quad一样。
上善若水
2楼2015-12-30 09:20:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

m76acxb

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by fmying at 2015-12-30 09:20:27
如果没有命令
hold on
的话,每次plot都会擦出上次plot的结果。由于你计算的每次都是一个值,因此最后只是得到一个点而已。
另外,quad需要第一个参数为函数表达式。我用的是2015b,测试后以下方案可行:

1 建 ...

非常感谢,我用的2012a版本的,你说的每次,后来我也是定义函数之后在积分的,inline函数的使用还是有一些限制条件的
3楼2015-12-30 09:51:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

m76acxb

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by fmying at 2015-12-30 09:20:27
如果没有命令
hold on
的话,每次plot都会擦出上次plot的结果。由于你计算的每次都是一个值,因此最后只是得到一个点而已。
另外,quad需要第一个参数为函数表达式。我用的是2015b,测试后以下方案可行:

1 建 ...

能不能再麻烦一下,就是变上限积分,我想问一下,看下面一段程序,为什么计算结果是[ empty sym ];
<clc,clear
P11=@(x)quad(@(x)(x.^2+1),0,x)
P22=@(x)quad(@(x)(x+1),0,x)
x=solve('P11-P22=0','x')>
主要是想求这两个积分函数相等时的坐标值
4楼2015-12-30 14:46:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)

引用回帖:
4楼: Originally posted by m76acxb at 2015-12-30 14:46:01
能不能再麻烦一下,就是变上限积分,我想问一下,看下面一段程序,为什么计算结果是;
<clc,clear
P11=@(x)quad(@(x)(x.^2+1),0,x)
P22=@(x)quad(@(x)(x+1),0,x)
x=solve('P11-P22=0','x')>
主要是想求 ...

empty sym表示没有定义自变量。
另外,quad和integral是计算数值积分的,似乎没有办法弄到方程中。
我这里给一个可行的代码:

syms x P11 P22; %定义变量
P11=int(x.^2+x,0,x); %定义P11的积分表达式
P22=int(x+1,0,x); %定义P22的表达式
solve(P11-P22) %求解P11-P22=0
上善若水
5楼2015-12-30 17:27:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 m76acxb 的主题更新
信息提示
请填处理意见