MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 390|回复: 9|关注: 0

[已答复] matlab初学者,定积分求参数

[复制链接]

新手

5 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
发表于 2017-6-19 08:45:56 | 显示全部楼层 |阅读模式
请问一下,已知定积分的值,怎么用matlab编程求参数,我是matlab小白,,谢谢,指导~

  • 函数表达式:f=ψ(x)/ψ`(x),其中ψ(x)=(1-t)θ,θ为指数幂- -!,已知函数f在区间[0,1]上积分值为0.785,求参数
    θ的值,求matlab程序怎么写呢?

新手

5 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2017-6-19 08:52:44 | 显示全部楼层
>> syms t a
>> f = (1-t).^a

f =

(1 - t)^a

>> df =diff(f,t)

df =

-a*(1 - t)^(a - 1)

>> F=0.785;
>> t = solve(int(f/df,t,0,1)-F,t)
警告: Explicit solution could not be found.
> In solve at 179

t =

[ empty sym ]



请问问题出在哪里?我这种写法正确吗

新手

5 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2017-6-19 08:53:23 | 显示全部楼层
本帖最后由 huazai_ 于 2017-6-19 08:54 编辑

>> syms t a
>> f = (1-t).^a

f =

(1 - t)^a

>> df =diff(f,t)

df =

-a*(1 - t)^(a - 1)

>> F=0.785;
>> t = solve(int(f/df,t,0,1)-F,t)
警告: Explicit solution could not be found.
> In solve at 179

t =

[ empty sym ]

请问问题出在哪里呢?我的编程有问题吗??谢谢大神指导!

论坛优秀回答者

中级

1196 麦片

财富积分


5001500


2

主题

2473

帖子

278

最佳答案
  • 关注者: 90
发表于 2017-6-19 09:06:25 | 显示全部楼层
f/df的积分是有解析形式的
压根不需要软件,这问题手算就是了

新手

5 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2017-6-19 09:15:37 | 显示全部楼层
本帖最后由 huazai_ 于 2017-6-19 09:19 编辑
halleyhit 发表于 2017-6-19 09:06
f/df的积分是有解析形式的
压根不需要软件,这问题手算就是了

好久没算过了,还是自己太懒了:L
但是真的用matlab的话,问题在哪呢?因为求解方程比较复杂,好几个这样的呢,这只是其中之一

谢谢:)

MATLAB 基础讨论
版块优秀回答者

入门

350 麦片

财富积分


50500


43

主题

807

帖子

68

最佳答案
QQ
  • 关注者: 10
发表于 2017-6-19 09:21:41 | 显示全部楼层
clear;clc;clf
w2=1;
F2=1;
t=linspace(0,1,2001);
deltat=mean(diff(t));
K1K=0;
w3=0;
while min(F2)>1e-2&&K1K<10&&abs(w3-w2)>1e-3;
    w3=w2;
    K1K=K1K+1;
    theta2=linspace(w2-1/K1K/2,w2+1/K1K/2,100);
    for NtN=1:numel(theta2)
        theta=theta2(NtN);
        f=(1-t).^theta;
        F(NtN)=sum(f)*deltat;
    end
    F2=abs(F-0.785);
    w2=theta2(F2==min(F2))
end
w2
plot(theta2,F,'r-o')
axis tight
grid on


t=linspace(0,1,20001);
deltat=mean(diff(t));
K2K=0;
w3=0;
while min(F2)>1e-5&&K2K<50&&abs(w3-w2)>1e-4;
    w3=w2;
    K2K=K2K+1;
    theta2=linspace(w2-1/K2K/2,w2+1/K2K/2,100);
    for NtN=1:numel(theta2)
        theta=theta2(NtN);
        f=(1-t).^theta;
        F(NtN)=sum(f)*deltat;
    end
    F2=abs(F-0.785);
    w2=theta2(F2==min(F2))
end
w2
plot(theta2,F,'r-o')
axis tight
grid on


论坛优秀回答者

中级

1196 麦片

财富积分


5001500


2

主题

2473

帖子

278

最佳答案
  • 关注者: 90
发表于 2017-6-19 09:26:29 | 显示全部楼层
huazai_ 发表于 2017-6-19 09:15
好久没算过了,还是自己太懒了
但是真的用matlab的话,问题在哪呢?因为求解方程比较复杂,好几个这样的 ...

用软件的话
外层是fsolve解方程
内层是sum或者trapz求数值积分

新手

5 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2017-6-19 09:39:41 | 显示全部楼层
yanglidar 发表于 2017-6-19 09:21
clear;clc;clf
w2=1;
F2=1;

:L很赞。不过确实有点麻烦了,考虑的重点不一样,谢谢解答
学习一下:)

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
发表于 2017-6-19 09:42:35 | 显示全部楼层
请问关于积分上限为无穷的该怎么编程呢?函数为xf(x),f(x)是均值为90,标准差为20倍更号3,积分下限为95,上限为无穷,谢谢啦。

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
发表于 2017-6-19 09:45:21 | 显示全部楼层
halleyhit 发表于 2017-6-19 09:26
用软件的话
外层是fsolve解方程
内层是sum或者trapz求数值积分

请问关于积分上限为无穷的该怎么编程呢?函数为xf(x),f(x)是均值为90,标准差为20倍更号3,积分下限为95,上限为无穷,谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表