请教MATLAB中积分问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:13:46
我想问下
clc
clear
syms x
p=5.4;
p1=-1;
p2=-2;
p3=1;
f=1./log((p-x)/(p-p3))
f22=inline('f') %x<p
f4=quad(f22,p1,p2)
这段程序和
f22=inline('1./log(5.4-x)/(5.4-1)'); %x<p
f4=quad(f22,-1,-2);我就是想求1./log((p-x)/(p-p3))它的积分,其中P和P3是前面已经输入了的数。为什么2次结果不一样?该怎么实现?
我认为应该用第二个.

第一个f22=inline('f')实际上定义了一个f22=f的function,这个function和y=x没什么两样,因为f并没有从 f=1./log((p-x)/(p-p3))传递到f22.

可以把第一个改为
f=1./log((p-x)/(p-p3))
f22=inline(f); %x<p
f4=quad(f22,p1,p2);

这样两个的计算结果基本是一致的,有小数点后第二位不同,是由于matlab计算误差产生。

针对你的回答我很感谢,可是上面第二种方法算出来的是-0.0178可是用这种方法算出来的是
>> p=5.4;
>> p1=-1;
>> p2=-2;
>> p3=1;
>> f=1./log((p-x)/(p-p3));
>> f22=inline(f); %x<p
>> f4=quad(f22,p1,p2)

f4 =

-2.2468

答案还是不一样啊

我认为应该用第二个.

第一个f22=inline('f')实际上定义了一个f22=f的function,这个function和y=x没什么两样,因为f并没有从 f=1./log((p-x)/(p-p3))传递到f22.

可以把第一个改为
f=1./log((p-x)/(p-p3))
f22=inline(f); %x<p
f4=quad(f22,p1,p2);

这样两个的计算结果基本是一致的,有小数点后第二位不同,是由于matlab计算误差产生。

********************************************

不会啊,我算出来的一个是-2.24,一个是-2.28啊。
clc
clear
syms x
p=5.4;
p1=-1;
p2=-2;
p3=1;

f=1./log((p-x)/(p-p3))
f22=inline(f); %x<p
f4=quad(f22,p1,p2);

%%
f22=inline('1./(log(5.4-x)/(5.4-1))');
f4=quad(f22,-1,-2);
%%

***********************************

你第二个log公式写错了。