matlab中如何求解如下变上限积分方程?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 13:02:41
matlab中如何求解如下变上限积分方程?
想请问一下,matlab中如何求解如下变上限积分方程,其中x为概率(0
想请问一下,matlab中如何求解如下变上限积分方程,其中x为概率(0
x=0.6时,y=68.581359956511627574834151414947
close all
clear,clc
x=0:0.05:1;
y=zeros(1,length(x));
syms y Y
ex1=int(int('exp(-(t-50)^2/200)',-inf,y),0,Y);
ex2=int(int('exp(-(t-50)^2/200)',-inf,0.6*y),0,0.6*Y);
ex1=ex1/(75*sqrt(2)*pi^(1/2));
ex2=ex2/(75*sqrt(2)*pi^(1/2));
for i=1:length(x)
y(i)=solve((1-x(i))*ex1+x(i)*ex2-1);
if x(i)==0.6
yy=y(i);
end
end
plot(x,y,'g-')
disp('x=0.6时,y=')
disp(yy)
再问: 大哥,帮忙在看看这个,我照您的方法这个总是报错,实在是不好意思,还望您能帮帮忙。x为概率,y为需求。我愿意追加分数~~~
再答: 我运行了没有问题啊,matlab R2010b(7.11),这是图像 你又给的这个方程有问题,多了个参数t,你再看看吧
再问: 下面总是报错: syms x y z y1 f11 f12 f13 f2 f3 f4 f5 f6 f11=(1/(sqrt(2*pi)*10))*(exp(-(z-50)^2/200)); f12=(z^2)*f11; f13=2*z*f11; f2=int(f11,0,0.6*y1); f3=int(f12,0,0.6*y1); f4=int(f13,0,0.6*y1); i=1; for x1 = 0.1: 0.1: 1.0, f5 =x1*(2600-60*y1+0.36*y1*y1-0.36*y1*y1*f2+y1*f4-f3)-200; f6= f5; y11(i) = solve(f6,'y1'); x11(i) = x1; i=i+1; end
再答: 首先,你的代码写的不对。其次你想求解的方程在x=0.1,0.2,0.3,0.4的时候都是有解的,但是从0.5开始貌似就没有解了,所以说就算程序写对了也没法得到你想要的结果 还有如果按照你说的,只是把t放进去,那我怀疑“f5 =x1*(2600-60*y1+0.36*y1*y1-0.36*y1*y1*f2+y1*f4-f3)-200”这个里边的200是不是应该是300?“y1*f4”是不是应该是“0.6*y1*f4”? 如果像我猜测的这样,那么图像如下:
再问: 您好,那能不能把您改过运行成功的代码发给我看看。 y1*f4确实是0.6*y1*f4。那个300、200都行的。 非常感谢您的回答,谢谢您。
再答: 分成两个部分,首先新建一个函数(function)myfun7.m,内容如下: function F=myfun7(x,yy) syms z y f1=1/2*erf((-50+z)/sqrt(200)); f2z=(-100*exp(-(-50+z)^2/200)+250*sqrt(2*pi)*erf((-50+z)/sqrt(200)))/sqrt(50*pi); fz2=(-100*exp(-(-50+z)^2/200)*(50+z)+13000*sqrt(2*pi)*erf((-50+z)/sqrt(200)))/sqrt(200*pi); F1=subs(f1,z,3/5*y)-subs(f1,z,0); F2z=subs(f2z,z,3/5*y)-subs(f2z,z,0); Fz2=subs(fz2,z,3/5*y)-subs(fz2,z,0); F=x*(2600-60*y+0.36*y^2-0.36*y^2*F1+0.6*y*F2z-Fz2)-300; F=subs(F,y,yy); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 然后新建一个普通的m文件(或者直输入到命令窗口),内容如下: close all clear,clc x=0.1:0.05:1; y=1:length(x); for i=1:length(x) F=@(yy)myfun7(x(i),yy); y(i)=fsolve(F,100*rand); end plot(x,y,'g-') 上边这段代码必须个myfun7.m放在同一路径下执行
close all
clear,clc
x=0:0.05:1;
y=zeros(1,length(x));
syms y Y
ex1=int(int('exp(-(t-50)^2/200)',-inf,y),0,Y);
ex2=int(int('exp(-(t-50)^2/200)',-inf,0.6*y),0,0.6*Y);
ex1=ex1/(75*sqrt(2)*pi^(1/2));
ex2=ex2/(75*sqrt(2)*pi^(1/2));
for i=1:length(x)
y(i)=solve((1-x(i))*ex1+x(i)*ex2-1);
if x(i)==0.6
yy=y(i);
end
end
plot(x,y,'g-')
disp('x=0.6时,y=')
disp(yy)
再问: 大哥,帮忙在看看这个,我照您的方法这个总是报错,实在是不好意思,还望您能帮帮忙。x为概率,y为需求。我愿意追加分数~~~
再答: 我运行了没有问题啊,matlab R2010b(7.11),这是图像 你又给的这个方程有问题,多了个参数t,你再看看吧
再问: 下面总是报错: syms x y z y1 f11 f12 f13 f2 f3 f4 f5 f6 f11=(1/(sqrt(2*pi)*10))*(exp(-(z-50)^2/200)); f12=(z^2)*f11; f13=2*z*f11; f2=int(f11,0,0.6*y1); f3=int(f12,0,0.6*y1); f4=int(f13,0,0.6*y1); i=1; for x1 = 0.1: 0.1: 1.0, f5 =x1*(2600-60*y1+0.36*y1*y1-0.36*y1*y1*f2+y1*f4-f3)-200; f6= f5; y11(i) = solve(f6,'y1'); x11(i) = x1; i=i+1; end
再答: 首先,你的代码写的不对。其次你想求解的方程在x=0.1,0.2,0.3,0.4的时候都是有解的,但是从0.5开始貌似就没有解了,所以说就算程序写对了也没法得到你想要的结果 还有如果按照你说的,只是把t放进去,那我怀疑“f5 =x1*(2600-60*y1+0.36*y1*y1-0.36*y1*y1*f2+y1*f4-f3)-200”这个里边的200是不是应该是300?“y1*f4”是不是应该是“0.6*y1*f4”? 如果像我猜测的这样,那么图像如下:
再问: 您好,那能不能把您改过运行成功的代码发给我看看。 y1*f4确实是0.6*y1*f4。那个300、200都行的。 非常感谢您的回答,谢谢您。
再答: 分成两个部分,首先新建一个函数(function)myfun7.m,内容如下: function F=myfun7(x,yy) syms z y f1=1/2*erf((-50+z)/sqrt(200)); f2z=(-100*exp(-(-50+z)^2/200)+250*sqrt(2*pi)*erf((-50+z)/sqrt(200)))/sqrt(50*pi); fz2=(-100*exp(-(-50+z)^2/200)*(50+z)+13000*sqrt(2*pi)*erf((-50+z)/sqrt(200)))/sqrt(200*pi); F1=subs(f1,z,3/5*y)-subs(f1,z,0); F2z=subs(f2z,z,3/5*y)-subs(f2z,z,0); Fz2=subs(fz2,z,3/5*y)-subs(fz2,z,0); F=x*(2600-60*y+0.36*y^2-0.36*y^2*F1+0.6*y*F2z-Fz2)-300; F=subs(F,y,yy); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 然后新建一个普通的m文件(或者直输入到命令窗口),内容如下: close all clear,clc x=0.1:0.05:1; y=1:length(x); for i=1:length(x) F=@(yy)myfun7(x(i),yy); y(i)=fsolve(F,100*rand); end plot(x,y,'g-') 上边这段代码必须个myfun7.m放在同一路径下执行