matlab 含参数定积分参数函数,参数赋值并求定积分。

查看: 2464|回复: 5|关注: 0
请教关于定积分中含有参数的问题
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
int.JPG (5.04 KB, 下载次数: 0)
11:17 上传
f1(x,y),f2(x,y)已知,
最终想画出一个随y变化的f曲线,由于积分函数中含有两个变量,又好像不能用二重积分,如果用符号积分,又不知如何写程序?
请大侠们多多赐教,谢谢啊!
<h1 style="color:#3 麦片财富积分
关注者: 7
f1(x,y),f2(x,y)已知,那到底是什么东西
宁静致远,淡泊明志!
<h1 style="color:# 麦片财富积分
f1(x,y)=s(x,y)sin(2*pi*x*y)sin(pi*x*y)
s(x,y) =(m1*sin(pi*x/m2)/(pi*x))^2
m1,m2为已知参数
f2(x,y)函数形式与f1类似
<h1 style="color:#3 麦片财富积分
关注者: 7
m1,m2为已知参数, 那到底是什么东西
宁静致远,淡泊明志!
<h1 style="color:# 麦片财富积分
先对x积分再对y积分呗,int里面套用int就是了
帖子最佳答案
关注者: 319
回复 1# lvzhou 的帖子
在每个循环里y不是固定的嘛,就是定积分了。用循环即可,每次改变y的值,然后定积分。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:/.html
站长推荐 /2
Powered by&作者:长沙理工大学 交通运输工程学院 王航臣
显然这个函数是单词differential(微分)的简写,用于计算微分。实际上准确来说计算的是差商。
如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算一阶导数的有限差分近似。
(1)符号微分
&1.常用的微分函数
函数:diff(f) & & 求表达式f对默认自变量的一次微分值
& & && diff(f,x) &求表达式f对自变量x的一次积分值
& & && diff(f,n)& 求表达式f对默认自变量的n次微分值
& & && diff(f,t,n)求表达式f对自变量t的n次微分值
&& diff(x)
例1:求矩阵中各元素的导数
求矩阵[1/(1+a)& (b+x)/cos(x)
&&&&&&&& 1/(x*y)&& exp(x^2)]
对x的微分,可以输入以下命令
A = sym('[1/(1+a),(b+x)/cos(x);1,exp(x^2)]');
B = diff(A,'x')
&可得到如下结果:
例2:求偏导数
求的偏导数。
f = x*exp(y)/y^2;
fdx = diff(f,x)
fdy = diff(f,y)
&可得到如下结果:
例3:求复合函数的导数
y = 'x*f(x^2)'
y1 = diff(y,'x')
&得到结果如下:
例4:求参数方程的导数
对参数方程求导
syms a b t
f1 = a*cos(t);
f2 = b*sin(t);
A = diff(f2)/diff(f1) %此处代入了参数方程的求导公式
B = diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/diff(f1)^3
%求二阶导数
&可得到如下结果:
例5:求隐函数的导数
求的一阶导数
p = 'x*y(x)-exp(x+y(x))'
%隐函数可进行整体表示
%注意y(x)这种写法,它代表了y是关于x的函数
p1 = diff(p,x)
&可得到如下结果:
2.符号积分
&1符号函数的不定积分
功能:求取函数的不定积分
& & & & &int(f) &&
& & & & &int(f,x)
说明:第一个是求函数f对默认自变量的积分值;第二个是求自变量f对对自变量t的不定积分值。
例:分别求函数f(x)=(3-x2)3、的不定积分。
x = sym('x');%函数的输入
f1 = (3-x^2)^3;
f2 = sqrt(x^3 + x^4);%对函数进行积分
intf1 = int(f1)
intf2 = int(f2)
&可得结果如下:
2符号函数的定积分
功能:求取函数的定积分
& & & & &int(f,a,b)
& & & & &int(f,x,a,b)
说明:第一个是求表达式f对默认自变量的定积分值,积分区间为
[a,b];第二个是求表达式f对自变量x的定积分值,积分区间为[a,b]。
例:分别求、、、的定积分。
%输入函数方程式
f1 = abs(1-x);
f2 = 1/(1+x^2);
f3 = 4*t*x;
f4 = x^3/(x-1)^100;
%求取函数积分
intf1 = int(f1,1,2)
intf2 = int(f2,-inf,+inf)
intf3 = int(f3,2,sin(t))
intf4 = int(f4,2,3)
&可得到如下结果:
(2)数值微分
在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff。
功能:求取数值微分
& & & & & DX = diff(X)
& & & & & DX = diff(X,n)
& & & & & DX = diff(X,n,dim)
说明:第一个计算向量X的向前差分,即DX(i) = X(i+1)-X(i),i=1,2,...,n-1。第二个是计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))。第三个计算矩阵A的n阶差分,当dim=1或缺省状态时,按行计算差分;dim=2,按列计算差分。
&例:设x由[0,2&]间均匀分布的10个点组成,求sinx的1到3阶差分。
x = linspace(0,2*pi,10);y = sin(x);Dy = diff(y)Dy2 = diff(y,2)Dy3 = diff(y,3)plot(x,y,'B');hold onplot(Dy,'Y');plot(Dy2,'G');plot(Dy3,'R');title('sinx的1到3阶差分')xlabel('x');ylabel('y')
可得到结果如下
注:二维图形常用设置选项
例:求函数的数值微分,并画出函数图比较
x = 0:0.01:2 %数值微分&积分需要先确定数值的范围,这一点与符号微分&积分有所不同。
f = x.^2.*cos(x)./(3*x+2)
Df = diff(f)
plot(x,f,'r')
y = x(1:200);
plot(y,Df,'b')
legend('函数图','微分图')
可得到如图所示图线
求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿-科特斯(Newton-Cotes)法等都是经常采用的方法。他们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i = 1,2,&,n,其中x1=a,xn+1=b。这样求定积分问题就变成了求和问题。
1、变步长辛普森法
基于变步长辛普森法,MATLAB给出了quad函数来求定积分。
函数:quad
功能:求取基于变步长辛普森法的数值定积分。
语法:[I,n]=quad('fname',a,b,tol,trace)
说明:fname是被积函数名(需要新建一个函数)。a和b分别是定积分的上限和下限。tol用来控制积分精度,缺省时取tol = 10-6,。trace控制是否展现积分过程,取非0为展现积分过程,取0则不展现,缺省时trace = 0.返回参数I即定积分值,n为被积函数的调用次数。
例:用变步长辛普森法计算函数f(x)=e-0.2xsin(x+&/3)在区间[0.3&]的定积分
首先建立被积函数文件fesin.m
function f = fesin(x)
f = exp(-0.2*x).*sin(x+pi/3);
然后调用数值积分函数quad来求定积分
[S,n] = quad('f',0,3*pi)
2、牛顿-科斯特法
在MATLAB中,使用Newton-Cotes来求取定积分函数为quadl。
函数:quadl
功能:基于Newton-Cotes法来求数值定积分
语法:[I,n] = quadl('fname',a,b,lol,trace)
说明:参数的含义和quad函数相似,只是tol的缺省值取10-6。该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证以更高的效率求出所需的定积分值。
阅读(...) 评论()MATLAB数值积分求法讲解_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
MATLAB数值积分求法讲解
上传于||暂无简介
大小:57.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢matlab 求定积分,积分的上限是变量,函数带有其他参数积分表达式为:y=1/(t+2(r-sqrt(r^2-(m/2-x)^2))),积分区间为(0,m),其中0
>> syms t r m x>> y=1/(t+2*(r-sqrt(r^2-(m/2-x)^2)));>> f=int(y,0,m);f=simple(f);f1/2*(-i*t*atanh((4*r^2+(-t*(t+4*r))^(1/2)*m)/((t+2*r)^2)^(1/2)/(-m^2+4*r^2)^(1/2))+2*t*atan(m/(t^2+4*t*r)^(1/2))-i*t*atanh((-4*r^2+(-t*(t+4*r))^(1/2)*m)/((t+2*r)^2)^(1/2)/(-m^2+4*r^2)^(1/2))-2*i*atanh((-4*r^2+(-t*(t+4*r))^(1/2)*m)/((t+2*r)^2)^(1/2)/(-m^2+4*r^2)^(1/2))*r-2*atan(1/(-m^2+4*r^2)^(1/2)*m)*(t*(t+4*r))^(1/2)+4*atan(m/(t^2+4*t*r)^(1/2))*r-2*i*atanh((4*r^2+(-t*(t+4*r))^(1/2)*m)/((t+2*r)^2)^(1/2)/(-m^2+4*r^2)^(1/2))*r)/(t*(t+4*r))^(1/2)
为您推荐:
其他类似问题
扫描下载二维码MATLAB中计算定积分时可否将一个函数作为积分变量?比如说我想计算:其定积分确实可用图像求得,但是可否用MATLAB代码实现计算,
幻世萌_小虳
提供两种解法供参考.&1、解析解法作变量置换t=1/x,则积分上限为1,下限为inf:&&&syms&x&t&&&f=(1+1/x)^x/x;&&&f_t=subs(f,x,1/t);&&&int(f_t,inf,1)ans&=-Inf代码在2007b和2013a上实测通过.&2、数值解法直接对关于x的函数1/x求微分,但得到的函数表达式用解析方法无法得到显式解,所以,使用数值方法积分:&&&syms&x&&&f=(1+1/x)^x/x;&&&f_x=eval([&#39;@(x)&#39;&vectorize(f*diff(1/x))]);&&&integral(f_x,0,1)ans&=&&-Inf其中integral是2012a版之后才引入的函数,早期的版本可以使用quadgk代替.
用第二种方法求:出现了问题。我用的是 MATLAB R2010b,能否帮助解决一下,谢谢!
我现在有点疑惑,积分上下限(0,0.25)究竟是指x,还是指x^2?之前我理解为x,但现在觉得,也许之前理解错了。
数值积分的函数在被积函数为常数时的确会出问题。原因是,在计算数值积分时,如果输入参数x是向量,被积函数一般是x的点运算形式,其返回的函数值应该也是向量,但如果函数的形式是标量常数,则返回的函数值只是一个标量,所以会导致错误。&避免这个错误的方法是,对于常数形式的函数,给额外加上一项与x有关的项,使之能够返回和输入相同维数的向量:&&&syms&x&&&f=1/(2*x);&&&f_x=eval([&#39;@(x)x*0+&#39;&vectorize(f*diff(x^2))]);&&&quadgk(f_x,0,sqrt(0.25))ans&=&&&&0.5000
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 matlab给输出参数赋值 的文章

 

随机推荐