matlab 二分法汇总
matlab二分法

matlab二分法MATLAB二分法是一种常用的求解非线性方程的数值解法,它通过不断地将定义域分成若干个子区间,从而找到近似解。
与梯形法和牛顿迭代法相比,MATLAB 二分法又称为“分治法”,是一种简单、直观、快速和有效的求解非线性方程的数值解法。
1. 二分法原理MATLAB 二分法是根据“分而治之”的思想来求解非线性方程的数值解的。
它的基本思想是,将定义域分成两个子区间,其中一个子区间的函数值的符号一定是固定的,另一个子区间的函数值的符号也是固定的,只有当它们的符号相反时,才能确定解存在于这两个子区间之间。
然后,再对缩小的子区间重复以上操作,进而确定非线性方程的近似解,也就是所谓的“黄金分割法”。
2. MATLAB 二分法的步骤(1)始条件首先,要将定义域分成两个子区间,在每一个子区间内,假定函数值的符号是固定的;确定迭代初值 $x_0,比如$x_0=0.5;(2)代计算求出迭代第二值 $x_1,即 $x_1=x_0+frac{b-x_0}{2},计算出$x_1$值,计算函数值的符号;(3)晕条件当求得的函数值的符号与定义域中一边的函数值的符号相反时,认为解存在于此子区间之间,继续将所取得的子区间继续缩小,直到定义域中的某两个端点接近,或者函数值的绝对值小于指定的误差范围,此时称为收敛;(4)的输出将收敛时的根 $x_n$ 作为解的输出。
3. MATLAB 二分法的优缺点(1) MATLAB 二分法的优点MATLAB 二分法具有简单、直观、快速和有效的特点,只要能够确定函数在定义域中的一边的函数值的符号,就可以求出近似解。
(2) MATLAB 二分法的缺点MATLAB 二分法容易收敛到局部极小值,而无法收敛到全局最优值;同时,它也不适用于函数值在定义域内不连续或周期变化的情况。
4. MATLAB 二分法的应用MATLAB 二分法在实际工程中广泛应用,主要用于求解非线性方程、解决二次规划问题、求解非线性最小化问题、结构优化问题等。
matlab 二分法汇总

二分法的matlab主程序function [k,x,wuca,yx]=erfen(a,b,abtol)a(1)=a; b(1)=b;ya=fun(a(1)); yb=fun(b(1)); %程序中调用的fun.m 为函数if ya* yb>0,disp('注意:ya*yb>0,请重新调整区间端点a和b.'), return endmax1=-1+ceil((log(b-a)- log(abtol))/ log(2)); % ceil是上取整for k=1: max1+1a;ya=fun(a); b;yb=fun(b); x=(a+b)/2;yx=fun(x); wuca=abs(b-a)/2; k=k-1;[k,a,b,x,wuca,ya,yb,yx]if yx==0a=x; b=x;elseif yb*yx>0b=x;yb=yx;elsea=x; ya=yx;endif b-a< abtol , return, endendk=max1; x; wuca; yx=fun(x);区间二分法:与对分查找法相同1 区间二分法求出的仅仅是方程的一个单根,如果方程有重根或者多个根时,在做区间二分法时就会出现分叉,这样方程有几个根,就会产生几个实数序列,每一个实数序列的极限便是方程的一个根2 通常用区间二分法为一些迭代法提供靠近x^*的初始选代值;3 区间二分法的缺点是不能求方程的复数根。
format longa=5;b=6;x1=a;x2=b;f1=4*cos(x1)+4*sin(x1)+0.5*x1-2; f2=4*cos(x2)+4*sin(x2)+0.5*x2-2;step=0.000001;ii=0;while abs(x1-x2)>stepii=ii+1;x3=(x1+x2)/2;f3=4*cos(x3)+4*sin(x3)+0.5*x3-2;if f3~=0if f1*f3<0x2=x3;elsex1=x3;endendendx3f=[4*cos(x3)+4*sin(x3)+0.5*x3] disp(['迭代次数:',num2str(ii),'次'])牛顿迭代法求解:在方程f(x)=0有实数根的情况下,若能够将方程等价地转化成x=g(x)的形式,然后取一个初始值x0代入x=g(x)的右端,算得x1=g(x0),再计算x2=g(x1),这样依次类推x(k+1)=g(x(k))可以得到一个序列xk,通常称g(x)为迭代函数,序列xk为由迭代函数产生得迭代序列,x0为迭代初始值。
matlab用二分法求方程近似根

matlab用二分法求方程近似根在MATLAB中,可以使用以下代码使用二分法求解方程的近似根:```matlabfunction root = bisection_method(func, a, b, tol, max_iter)% 输入参数:% func: 待求解方程的函数句柄% a, b: 取值范围% tol: 容差% max_iter: 最大迭代次数fa = func(a);fb = func(b);if fa * fb > 0error('在该区间内没有根存在');endfor k = 1:max_iterc = (a + b) / 2;fc = func(c);if abs(fc) < tolroot = c;return;endif fa * fc < 0b = c;fb = fc;elsea = c;fa = fc;endenderror('未达到收敛条件');end```使用该函数时,首先需要定义待求解方程的函数句柄。
例如,若要求解方程x^2 - 4 = 0的近似根,则可以定义如下函数:```matlabfunction f = equation(x)f = x^2 - 4;end```然后,可以通过调用`bisection_method`函数求解方程的近似根:```matlaba = 1; % 取值范围的下界b = 3; % 取值范围的上界tol = 1e-6; % 容差max_iter = 100; % 最大迭代次数root = bisection_method(@equation, a, b, tol, max_iter);disp(root);```在上述代码中,设置了取值范围的下界为1,上界为3,容差为1e-6,最大迭代次数为100。
运行代码后,MATLAB将输出方程的一个近似根。
matlab程序运行修改版 二分法等等

1、拉格朗日插值公式:function y=lage(X,Y,x)% 拉格朗日插值函数n=length(X);y=zeros(size(x));for k=1:nw=ones(size(x));for j=[1:k-1 k+1:n]w=(x-X(j))./(X(k)-X(j)).*w;endy=y+w*Y(k);end调用方法:在matlab中新建一个script窗口,把上述程序保存成(lage.m)文件,然后在命令窗口调用y=lage(A,B,x),其中A,B均为列向量,分别代表插值点的横坐标和纵坐标,x为待求点横坐标例如:现有x0=1,x1=2,x2=4,y0=3,y1=2,y2=7;要求x=1.5处的估计值。
过程:则A=[1 2 3]’,B=[3 2 7]’,x=1.5在命令窗口输入如下命令:A=[1 2 3]’;B=[3 2 7]’;x=1.5;y=lage(A,B,x)(注意:这个直接占到命令窗口会出现符号问题,请自行修改)y即为所求结果2、牛顿插值公式:function f=niudun(X,Y,x)n=length(X);A=zeros(n,n);%A用于存储均差表(空余位置设为0)A(:,1)=Y;t=A(1,1);for j=2:nfor i=j:nl=1;A(i,j)=(A(i,j-1)-A(i-1,j-1))./(X(i)-X(i-j+1));%算出均差表if i==j%只取每列非0的第一个数for k=1:j-1l=l.*(x-X(k));%通项计算endt=t+l.*A(i,j);%各项累加求结果endendendf=t;在matlab中新建一个script窗口,把上述程序保存成(niudun.m)调用方法:y=niudun(A,B,x) A,B,x的定义与拉格朗日函数相同3、雅克比迭代法:function [y,n]=yacobi(a,d)format long;x=[0;0;0]; %³õʼÏòÁ¿stop=1.0e-4 ; %µü´úµÄ¾«¶ÈL=-tril(a,-1);U=-triu(a,1);A=(diag(diag(a)));D=inv(A);X=D*(L+U)*x+D*d; % Jµü´ú¹«Ê½n=1;while norm(X-x,inf)>=stop % ʱµü´úÖÐÖ¹·ñÔò¼ÌÐøx=X;X=D*(U+L)*x+D*d;n=n+1;endy=X;或:function yacobia=[3 0 -2;0 8 1;-1 1 6 ];d=[3;2;2];x=[0;0;0]; %初始向量stop=1.0e-4 ; %迭代的精度L=-tril(a,-1);U=-triu(a,1);A=(diag(diag(a)));D=inv(A);X=D*(L+U)*x+D*d; % J迭代公式n=1;while norm(X-x,inf)>=stop % 时迭代中止否则继续x=X;X=D*(U+L)*x+D*d;n=n+1;endXn在matlab中新建一个script窗口,在这个窗口中(即.m文件中)直接运行(run)上述程序,若题目要求Ax=b,则将a矩阵内容换为A,d内容换为b。
matlab编程实现二分法牛顿法黄金分割法最速下降matlab程序代码

matlab编程实现二分法牛顿法黄金分割法最速下降matlab程序代码二分法(Bisection Method)是一种寻找函数零点的数值计算方法。
该方法的基本思想是:首先确定一个区间[a, b],使得函数在这个区间的两个端点处的函数值异号,然后将区间逐步缩小,直到找到一个区间[a', b'],使得函数在这个区间的中点处的函数值接近于零。
以下是使用MATLAB实现二分法的示例代码:```matlabfunction [x, iter] = bisection(f, a, b, tol)fa = f(a);fb = f(b);if sign(fa) == sign(fb)error('The function has the same sign at the endpoints of the interval');enditer = 0;while (b - a) / 2 > tolc=(a+b)/2;fc = f(c);if fc == 0break;endif sign(fc) == sign(fa)a=c;fa = fc;elseb=c;fb = fc;enditer = iter + 1;endx=(a+b)/2;end```牛顿法(Newton's Method)是一种用于寻找函数零点的数值计算方法。
该方法的基本思想是:通过迭代来逼近函数的零点,每次迭代通过函数的切线来确定下一个近似值,直到满足收敛条件。
以下是使用MATLAB实现牛顿法的示例代码:```matlabfunction [x, iter] = newton(f, df, x0, tol)iter = 0;while abs(f(x0)) > tolx0 = x0 - f(x0) / df(x0);iter = iter + 1;endx=x0;end```黄金分割法(Golden Section Method)是一种用于寻找函数极值点的数值计算方法。
二分法matlab

二分法matlab二分法是一种常用的数值计算方法,也被称为二分查找或折半查找。
它通过将搜索范围逐渐缩小一半来快速定位目标值。
在MATLAB中,我们可以利用二分法来解决一些数值计算问题,下面将介绍二分法的原理和应用。
二分法的基本思想是将搜索范围一分为二,然后确定目标值位于左半部分还是右半部分,然后继续将该部分一分为二。
重复这个过程直到找到目标值或者确定目标值不存在。
二分法的核心就是不断将搜索范围缩小一半。
首先,我们需要确定搜索范围的初始值。
通常情况下,我们会选择数组或者有序列表的首尾元素作为搜索范围的边界。
然后,我们计算出搜索范围的中间位置,并将中间位置的值与目标值进行比较。
如果中间位置的值等于目标值,那么我们就找到了目标值;如果中间位置的值大于目标值,那么目标值可能在左半部分;如果中间位置的值小于目标值,那么目标值可能在右半部分。
根据比较结果,我们可以缩小搜索范围,重复上述步骤直到找到目标值或者确定目标值不存在。
二分法在MATLAB中的应用非常广泛。
下面以两个例子来说明二分法在MATLAB中的使用。
第一个例子是求解方程的根。
假设我们需要求解方程f(x)=0的根,其中f(x)是一个连续函数。
我们可以利用二分法来逼近方程的根。
首先,我们需要确定一个初始搜索范围[a, b],使得f(a)和f(b)的符号不同。
然后,我们可以使用二分法来逐步缩小搜索范围,直到找到一个近似的根。
第二个例子是查找有序列表中的某个元素。
假设我们有一个有序列表A,我们需要查找其中的某个元素x。
我们可以利用二分法来快速确定x是否在列表中,并返回其索引位置。
首先,我们需要确定初始搜索范围的左右边界。
然后,我们可以使用二分法来逐步缩小搜索范围,直到找到x或者确定x不存在于列表中。
二分法是一种常用的数值计算方法,在MATLAB中也有广泛的应用。
通过将搜索范围一分为二,二分法可以快速定位目标值,解决方程的根或者查找有序列表中的元素。
熟练掌握二分法的原理和应用,对于解决一些数值计算问题非常有帮助。
在matlab用二分法求方程近似解的实验分析与讨论以及实验总

在matlab用二分法求方程近似解的实验分析与讨论以及实验总二分法也称为折半法,是一种求解非线性方程近似解的常用方法。
其基本思路是:利用函数在某个区间上的符号变化来找到方程的根,每次减半区间长度直到满足精度要求为止。
在Matlab中,我们可以利用循环结构和if语句来实现二分法求解非线性方程的近似解。
具体步骤如下:1. 定义函数f,并确定区间[a,b]和精度要求tol。
2. 利用while循环,当区间长度小于精度要求tol时停止循环,否则继续。
3. 每次循环先计算区间中点c=(a+b)/2,并计算函数值fc=f(c)。
4. 判断fc的符号和f(a)的符号是否相同,如果相同,则将区间左端点a赋值为c,否则将区间右端点b赋值为c。
5. 循环结束后,输出近似解x=(a+b)/2。
接下来我们以求解方程x^3-3x+1=0在区间[0,1]上的近似解为例,进行实验分析。
代码如下:```matlabfunction [x] = bisection_method()f = @(x) x^3-3*x+1; % 定义函数fa = 0; % 区间左端点b = 1; % 区间右端点tol = 1e-6; % 精度要求while (b-a)/2 > tol % 判断区间长度是否小于精度要求c = (a+b)/2; % 计算区间中点fc = f(c); % 计算函数值if f(a)*fc > 0 % 判断符号是否相同a = c; % 更新区间左端点elseb = c; % 更新区间右端点endendx = (a+b)/2; % 输出近似解end```我们运行该代码,可以得到方程的近似解为:```matlab>> bisection_method()ans =0.3473```实验分析:1. 二分法求解非线性方程的收敛性是保证的,即对于满足某些条件的方程和初始估计,二分法可以保证收敛到方程的根。
2. 在确定初始区间时,需要考虑到方程根的数量和分布。
二分法及其matlab程序-经典

避免数值不稳定性
对于涉及大量计算或迭代的过程,要注意数值稳定性问题, 采取适当的算法或技巧,如使用稳定的算法、增加迭代次 数等。
利用MATLAB内置函数
二分法及其matlab程序-经典
目录
• 二分法基本原理 • MATLAB编程实现二分法 • 二分法在数值计算中应用举例 • MATLAB程序优化与改进策略 • 总结与展望
01
二分法基本原理
二分法定义与思想
定义
二分法是一种求解非线性方程近似根的有效算法,其基本思想是通过不断将区间一分为二,逐步缩小求解范围, 直到满足精度要求为止。
end
root = (a + b) / 2;
VS
关键代码片段展示
end
```
运行结果分析与讨论
• 假设我们要求解非线性方程f(x)=x^3-2x-5=0在 区间[2, 3]内的根,可以调用上述bisection函数进 行求解
运行结果分析与讨论
```matlab f = @(x) x^3 - 2*x - 5;
精度控制
当区间长度|b - a|小于给定 精度时,可取中点或任一端 点作为近似最优解。
求解矩阵特征值问题
• 特征多项式构建:对于n阶矩阵A,构建特征多项式f(λ) = |A - λI|。 • 初始区间选择:确定包含特征值的初始区间[a, b]。 • 二分迭代:取中点c = (a + b) / 2,计算f(c)。若f(c) == 0,则c为特征值;否则根据f(a)、f(b)、f(c)的大小关
缺点
二分法收敛速度较慢,需要多次迭代才能得 到精确解,且对于多峰函数或者复杂函数可 能无法找到全局最优解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二分法的matlab主程序function [k,x,wuca,yx]=erfen(a,b,abtol)a(1)=a; b(1)=b;ya=fun(a(1)); yb=fun(b(1)); %程序中调用的fun.m 为函数if ya* yb>0,disp('注意:ya*yb>0,请重新调整区间端点a和b.'), return endmax1=-1+ceil((log(b-a)- log(abtol))/ log(2)); % ceil是上取整for k=1: max1+1a;ya=fun(a); b;yb=fun(b); x=(a+b)/2;yx=fun(x); wuca=abs(b-a)/2; k=k-1;[k,a,b,x,wuca,ya,yb,yx]if yx==0a=x; b=x;elseif yb*yx>0b=x;yb=yx;elsea=x; ya=yx;endif b-a< abtol , return, endendk=max1; x; wuca; yx=fun(x);区间二分法:与对分查找法相同1 区间二分法求出的仅仅是方程的一个单根,如果方程有重根或者多个根时,在做区间二分法时就会出现分叉,这样方程有几个根,就会产生几个实数序列,每一个实数序列的极限便是方程的一个根2 通常用区间二分法为一些迭代法提供靠近x^*的初始选代值;3 区间二分法的缺点是不能求方程的复数根。
format longa=5;b=6;x1=a;x2=b;f1=4*cos(x1)+4*sin(x1)+0.5*x1-2; f2=4*cos(x2)+4*sin(x2)+0.5*x2-2;step=0.000001;ii=0;while abs(x1-x2)>stepii=ii+1;x3=(x1+x2)/2;f3=4*cos(x3)+4*sin(x3)+0.5*x3-2;if f3~=0if f1*f3<0x2=x3;elsex1=x3;endendendx3f=[4*cos(x3)+4*sin(x3)+0.5*x3] disp(['迭代次数:',num2str(ii),'次'])牛顿迭代法求解:在方程f(x)=0有实数根的情况下,若能够将方程等价地转化成x=g(x)的形式,然后取一个初始值x0代入x=g(x)的右端,算得x1=g(x0),再计算x2=g(x1),这样依次类推x(k+1)=g(x(k))可以得到一个序列xk,通常称g(x)为迭代函数,序列xk为由迭代函数产生得迭代序列,x0为迭代初始值。
同一个方程,不同等价形式的转换产生的迭代法可能收敛,也有可能发散.关于迭代法的敛散性判定有下面的定理(也称李普希兹(Lipschitz定理):如果迭代函数g(x)在区间[a,b]上连续,且满足以下条件,1 对于任意的x=[a,b],有g(x)=[a,b]2 在区间内(a,b)内,函数g(x)满足Lipschitz条件,即存在常数L>0,使得对于任意的x,y=(a,b),都有|g(x)-g(y)|=<L|x-y|,如果有L<1,则迭代格式xk+1=g(xk),k=0,1,2,..对于任意的迭代初始值x0=[a,b]均是收敛的这里与x和y无关的正常数L称为Lipschitz常数。
一种较为特殊得迭代法为牛顿(Newton)迭代法xk+1=xk-f(xk)/f'(xk)相应迭代函数为g(x)=x-f(x)/f'(x)Newton迭代法的几何意义:它的第k+1次迭代值就是曲线y=f(x)在点(xk,f(xk))处切线y-f(xk)=f'(xk)(x=xk)与轴的交点的横坐标,%解方程:f=4*(cos(x1)+sin(x1)+0.5*x1-2)=0x0=9.6;x1=x0-(4*(cos(x0)+sin(x0))+0.5*x0-2)/(4*(cos(x0)-sin(x0))+0.5);while abs(x1-x0)>0.000001x0=x1;x1=x1-(4*(cos(x0)+sin(x0))+0.5*x0-2)/(4*(cos(x0)-sin(x0))+0.5);endf=4*(cos(x1)+sin(x1)+0.5*x1-2)弦截法:单点弦截法:连接两个端点与作弦(a,f(a)) 与(b,f(b))作弦,此弦与轴交点的横坐标设为x1. 如果f(x1)=0,则x1即为所求根,否则选取(x1,f(x1))点和点(a,f(a))(该点的选取要满足条件f(a)与f''(x)同号,并改记为(x0,f(x0))。
再做弦此弦与轴交点的横坐标设为x2,依次类推,其迭代格式即为xk+1=xk-f(xk)*(xk-x0)/(f(xk)-f(x0)双点弦截法:无固定点xk+1=xk-f(xk)*(xk-xk-1)/(f(xk)-f(xk-1)format longnx=[];nx(1)=5;nx(2)=nx(1)-(2^nx(1)-nx(1)^2-1)/(2^nx(1)*log(2)-2*nx(1));k=1;while abs(nx(k+1)-nx(k))>=10^(-6)k=k+1;nx(k+1)=nx(k)-(2^nx(k)-nx(k)^2-1)/(2^nx(k)*log(2)-2*nx(k));endnk=k+1; disp(['牛顿迭代法迭代次数:',num2str(nk),blanks(4),'方程的解:',num2str(nx(nk))])dx=[];dx(1)=5; dx(2)=dx(1)-(2^dx(1)-dx(1)^2-1)/((2^3-3^2-1)-(2^5-5^2-1))*(3-5);k=1;while abs(dx(k+1)-dx(k))>=10^(-6)k=k+1;dx(k+1)=dx(k)-(2^dx(k)-dx(k)^2-1)/((2^dx(k)-dx(k)^2-1)-(2^5-5^2-1))*( dx(k)-5); enddisp(['单点迭代法迭代次数:',num2str(k),blanks(4),'方程的解:',num2str(dx(k))]) sx=[];sx(1)=5;sx(2)=3;k=1;while abs(sx(k+1)-sx(k))>=0.000001k=k+1;sx(k+1)=sx(k)-((2^sx(k)-sx(k)^2-1)/((2^sx(k)-sx(k)^2-1)-(2^sx(k-1)-sx(k-1)^2-1)) )*(sx(k)-sx(k-1));endsk=k+1;disp(['双点迭代法迭代次数:',num2str(sk),blanks(4),'方程的解:',num2str(sx(sk))])x=3:0.05:5;y=2.^x-x.^2-1;yn=zeros(1,nk);yd=zeros(1,sk);subplot(1,2,1)plot(x,y,sx,yd,'*')title('双点弦截法')gtext('y=2^x-x^2-1')subplot(1,2,2)plot(x,y,nx,yn,'*')title('牛顿迭代法')gtext('y=2^x-x^2-1')二分法function approx_root=bisect (a,b,tol)fa =bifun(a);fb =bifun(b);while(abs(b-a)> tol)c=(a+b)/2;approx_root=c;fc=bifun(c);[a,c,b;fa,fc,fb]if ( sign(fb) * sign(fc)<=0)a=c;fa=fc;elseb=c;fb=fc;endend%----------------------------------function f=bifun(x)f=x^3-sin(x);%输入你的方程f(x)=0 a b为区间a=4.0,b=4.6牛顿法x0=4.6 n为迭代上限,tol为精度function y=newton1(x0,n,tol)x(1)=x0;b=1;i=1;A(i)=x(i);B(i)=b;C(i)=1while(abs(b)>eps*x(i))x(i+1)=x(i)-fun1(x(i))/dfun1(x(i));b=x(i+1)-x(i);i=i+1;A(i)=x(i);B(i)=b;C(i)=feval(@fun1,x(i));if(i>n)error('n is full');endendy=x(i)[A' C' B']function y=fun1(x)y=x^2-sin(x);function f=dfun1(x)syms xf=double(diff('fun1',x))solve('(-1*x^3*cos(40*x)-sin(40*x))*(2*sinh(40*x)+1*x^3*(cos(40*x)-cosh(40*x)))+(1* x^3*sin(40*x)+1*x^3*sinh(40*x)-cos(40*x)-cosh(40*x))*1*x^3*(sinh(40*x)-sin(4 0*x))+(1*x^3*cosh(40*x)-sinh(40*x))*(2*sin(40*x)+1*x^3*(cos(40*x)-cosh(40*x) ))=0')syms xf=inline((-1*x^3*cos(40*x)-sin(40*x))*(2*sinh(40*x)+1*x^3*(cos(40*x)-cosh(40* x)))+(1*x^3*sin(40*x)+1*x^3*sinh(40*x)-cos(40*x)-cosh(40*x))*1*x^3*(sinh(40* x)-sin(40*x))+(1*x^3*cosh(40*x)-sinh(40*x))*(2*sin(40*x)+1*x^3*(cos(40*x)-co sh(40*x))),'x')x0=2[x,fv]=fsolve(f,x0,optimset('TolFun',1e-16))f=@(x)(-1*x.^3*cos(40*x)-sin(40*x))*(2*sinh(40*x)+1*x.^3*(cos(40*x)-cosh(40*x)))+(1 *x.^3*sin(40*x)+1*x.^3*sinh(40*x)-cos(40*x)-cosh(40*x))*1*x.^3*(sinh(40*x)-si n(40*x))+(1*x.^3*cosh(40*x)-sinh(40*x))*(2*sin(40*x)+1*x.^3*(cos(40*x)-cosh( 40*x)));x=fsolve(f,[-10:1:10])f=@(x)(-1*x^3*cos(40*x)-sin(40*x))*(2*sinh(40*x)+1*x^3*(cos(40*x)-cosh(40*x)))+(1*x^3*sin(40*x)+1 *x^3*sinh(40*x)-cos(40*x)-cosh(40*x))*1*x^3*(sinh(40*x)-sin(40*x))+(1*x^3*cosh(40*x)-sinh(4 0*x))*(2*sin(40*x)+1*x^3*(cos(40*x)-cosh(40*x)));x=fsolve(f,[0:1:10])。