用MATLAB求解积分方程

用MATLAB求解积分方程,matlab,integration,equation,solver,Matlab,Integration,Equation,Solver,我想用MATLAB解下一个方程: 除了p以外的所有参数都是已知的,所以我只需要解p。但是因为我需要考虑积分的符号,在它里面有一个绝对值的符号,我不知道如何解决它。有人能帮忙吗?谢谢。这是一个有趣的问题,所以我来试一试。出于好奇,这是什么方程式 %This code just displays an error about not enough input arguments in line 4. I'm still working on fixing this bug, but wanted

我想用MATLAB解下一个方程:


除了p以外的所有参数都是已知的,所以我只需要解p。但是因为我需要考虑积分的符号,在它里面有一个绝对值的符号,我不知道如何解决它。有人能帮忙吗?谢谢。

这是一个有趣的问题,所以我来试一试。出于好奇,这是什么方程式

%This code just displays an error about not enough input arguments in line 4.  I'm still working on fixing this bug, but wanted to provide an update.
function y = yourFunc(m,q,t,p)
    if exist('p') == 0
        syms p
        fun = @(theta,p) ((1/pi) .* sign( 1 - p + (q .* sind(t))) .* (abs(1 - p + (q .* sind(t))) .^ m));
        eqn = (integral(@(theta)fun(theta,p),(-pi/2),(pi/2)) == 1);
        y = solve(eqn,p);
    end
end

function x = runCode()
    x = yourFunc(10,0.5,0:10:90)
end
你的参数是向量吗?我不确定,但这段代码无论如何都应该适用于元素操作。我还把1/pi放在被积函数中,因为它是一个常数,并且不是积分的。还有一个警告:我从未在被积函数中见过“符号”函数,所以我把它放在了代码中,但我不完全确定它是什么数学符号。我没有MATLAB在我面前,但我认为这应该工作;如果你有任何问题,请评论,我会修复我的代码。祝你的项目好运

,,
这是一个有趣的问题,所以我想试一试。出于好奇,这是什么方程式

%This code just displays an error about not enough input arguments in line 4.  I'm still working on fixing this bug, but wanted to provide an update.
function y = yourFunc(m,q,t,p)
    if exist('p') == 0
        syms p
        fun = @(theta,p) ((1/pi) .* sign( 1 - p + (q .* sind(t))) .* (abs(1 - p + (q .* sind(t))) .^ m));
        eqn = (integral(@(theta)fun(theta,p),(-pi/2),(pi/2)) == 1);
        y = solve(eqn,p);
    end
end

function x = runCode()
    x = yourFunc(10,0.5,0:10:90)
end
你的参数是向量吗?我不确定,但这段代码无论如何都应该适用于元素操作。我还把1/pi放在被积函数中,因为它是一个常数,并且不是积分的。还有一个警告:我从未在被积函数中见过“符号”函数,所以我把它放在了代码中,但我不完全确定它是什么数学符号。我没有MATLAB在我面前,但我认为这应该工作;如果你有任何问题,请评论,我会修复我的代码。祝你的项目好运

,,

谢谢。实际上,所有参数都只是标量(m=10,q=0.5)。我尝试了您的代码,但出现了一个错误:使用integralCalc/finalInputChecks(第511行)的错误输入函数必须返回“double”或“single”值。找到“sym”。我不明白这里有什么问题。也许“符号”符号有问题?也许吧。你想让它成为什么数学函数?这对我来说只是一个词。还有,第511行的代码是什么?这是唯一的错误消息吗?实际上它首先出现在第20行,即“eqn=(integral(@(theta)fun(theta,p),(-pi/2),(pi/2))==1”);“符号函数应该是正确的,但MATLAB无法识别整个函数。另一种方法是直接使用int函数,即“eqn=int((1/pi)*符号(1-p+(q*sin(theta)))*(abs(1-p+(q*sin(θ))^m)),θ,a,b)==1;“但是,MATLAB返回错误:未定义的函数或变量‘θ’。Cal_p(第26行)方程中的错误=int((1/pi)*符号(1-p+(q*sin(θ))*(abs(1-p+(q*sin(θ)))^m)),θ,a,b)==1;你把你的号码直接插入代码了吗?如果要编写脚本或UDF,请事先初始化它们。如果没有,只需将数字直接输入命令窗口中的函数即可。谢谢。实际上,所有参数都只是标量(m=10,q=0.5)。我尝试了您的代码,但出现了一个错误:使用integralCalc/finalInputChecks(第511行)的错误输入函数必须返回“double”或“single”值。找到“sym”。我不明白这里有什么问题。也许“符号”符号有问题?也许吧。你想让它成为什么数学函数?这对我来说只是一个词。还有,第511行的代码是什么?这是唯一的错误消息吗?实际上它首先出现在第20行,即“eqn=(integral(@(theta)fun(theta,p),(-pi/2),(pi/2))==1”);“符号函数应该是正确的,但MATLAB无法识别整个函数。另一种方法是直接使用int函数,即“eqn=int((1/pi)*符号(1-p+(q*sin(theta)))*(abs(1-p+(q*sin(θ))^m)),θ,a,b)==1;“但是,MATLAB返回错误:未定义的函数或变量‘θ’。Cal_p(第26行)方程中的错误=int((1/pi)*符号(1-p+(q*sin(θ))*(abs(1-p+(q*sin(θ)))^m)),θ,a,b)==1;你把你的号码直接插入代码了吗?如果要编写脚本或UDF,请事先初始化它们。如果没有,只需将数字直接输入命令窗口中的函数即可。