一个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。谢谢
有更简单的程序代码没?
函数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
<