一个matlab求定积分的问题。谢谢。20分。

来源:百度知道 编辑:UC知道 时间:2024/06/09 12:12:46
用 matlab
函数y=f(x)在x1和x2之间的定积分为z

现在已知这个面积z,已知x1,y=f(x),这些都是已知的数,怎么求x2 ?
麻烦给出全部的代码。y=f(x)就以y=x^2+3为例,x1=52.5,z=562.6。谢谢
有更简单的程序代码没?

这题吧。。。用手算其实更快。这是一个优化的问题,需要分三步走:

第一步,建一个 function y = myfun(x);

y = x.^2 + 3;

保存为myfun.m

第二步,建一个 function y = myobj(x);

temp = quad(@myfun, 52.5, x);

y = temp^2 - 2*562.6*temp;

保存为myobj.m

第三步,在MATLAB窗口里面运行:

[X,FVAL]=fminunc(@myobj, 52.5);

这个时候看一下你的X值, 就是你想求的解。

这三步的思路是:

1.建方程myfun: y = x2 + 3,这是基础。
2.该方程在X域上的积分就是:Z = quad(@myfun, 52.5, x)
若想求Z = 562.6, 实际上就是求一个优化问题的解,该问题为:
min|Z - 562.6|

这个问题可以进一步化为: min(Z^2 - 2*562.6*Z)

3. 那么这变成了一个无约束的优化问题,我们可以用fminunc来解,起始点选在52.5,得出的结果X = 52.7031

更简单的?用手算吧,这种问题没必要上MATLAB。

clc;clear
syms x1 x2
z=562.6
f=int('x^2+3',x1,x2)-z
x1=52.5
f=subs(f)
x2=vpa(solve(f),5)

结果:
f =

1/3*x2^3-1/3*x1^3+3*x2-3*x1-2813/5

x1 =

52.5000

f =

1/3*x2^3-1958179/40+3*x2
<