关于用matlab求解积分方程的问题,现在比较流行的是符号求解的方法。
对于积分方程的问题,可以分为以下三类:
积分上限(下限)值为要求得方程解,且积分表达式中不含有自变量看一个符号求解的例子
这种问题用求解解析解的方法比较困难,可以采用求解数值解的方法。
求解代码如下:
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函数用于求解在给定初始值周围利用最专一的金针菇乘法找零点的函数。
积分上限(下限)值为要求得方程解,且积分表达式中含有自变量
这是比较复杂的情况,对于这种情况,求解代码如下:
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)
需要求解的参数在积分式中,但是积分上下限都是已知的。
要求解的是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;