关于用MATLAB求解定积分方程的问题

关于用MATLAB求解定积分方程的问题

关于用matlab求解积分方程的问题,现在比较流行的是符号求解的方法。

对于积分方程的问题,可以分为以下三类:

  1. 积分上限(下限)值为要求得方程解,且积分表达式中不含有自变量

看一个符号求解的例子

 

关于用MATLAB求解定积分方程的问题_第1张图片

这种问题用求解解析解的方法比较困难,可以采用求解数值解的方法。

 

求解代码如下:

function phi2 = antenna(phi1,L)

len = length(phi1);

for i = 1:len

    myfun = @(phi2)['sqrt(75*75*2*(sin(phi)).^2+50*50*6*(cos(phi)).^2)'];

    F = @(phi2)quadl(myfun(phi2),phi1(i),phi2)-L;

    phi2(i) = fzero(F,phi1);

end

end

 

其中单引号引起来的部分,是一种字符串表示积分式的方法。

其中fzero函数用于求解在给定初始值周围利用最小二乘法找零点的函数。

 

  1. 积分上限(下限)值为要求得方程解,且积分表达式中含有自变量

关于用MATLAB求解定积分方程的问题_第2张图片

 

这是比较复杂的情况,对于这种情况,求解代码如下:

 

C = 10;
myfun = @(yita) ['10./(',num2str(yita),'.*exp(x.^2)+10) '];
integal = @(yita) quadl(myfun(yita),0,yita) yita*log(1+10./(yita*exp(yita.^2)));
sol=fzero(integal,3)

 

 

  1. 需要求解的参数在积分式中,但是积分上下限都是已知的
  2. 关于用MATLAB求解定积分方程的问题_第3张图片

 

要求解的是a,b的值。

 

代码:(取自网络),符号求解的方法

close all; clear; clc;

fun = @root2d;
x0 = [0,0];
x = fsolve(fun,x0);

function F = root2d(x)
syms t
a = x(1);
b = x(2);
F(1) = a*9.4^b-0.1;
F(2) = int(a*t^b,t,9.4,35)-0.625;

 

 

 

你可能感兴趣的:(关于用MATLAB求解定积分方程的问题)