【问题标题】:how do I integrate, a function with many arguments using matlab如何使用 matlab 集成具有许多参数的函数
【发布时间】:2012-03-17 20:30:46
【问题描述】:

如果我要集成一个功能

y = -((F+h)M^3(cosh(h*M)+M*beta*sinh(h*M)))/(h*M*cosh( h*M)+(-1+h*M^2*beta)*sinh(h*M))- (alpha*(M^2*(F+h)*(-1+2*h^2* M^2+ cosh(2*h*M)-2*h*M*sinh(2*h*M)))/(8*(h*M*cosh(h*M)+(-1+h) *M^2*beta)*sinh(h*M))^2));

关于 x,其中

phi = 0.6;
x = 0.5;
M = 2;
theta = -1:0.5:1.5;
F = theta - 1;
h = 1 + phi*cos(2*pi*x);
alpha = 0.2;beta = 0.0;

我写了一个Mfile

function r = parameterIntegrate(F,h,M,beta,alpha,theta,phi)
% defining a nested function that uses one variable
phi = 0.6;
x = 0.5;
r = quad(@testf,0,1 + phi*cos(2*pi*x));
% simpson's rule from 0 to h
function y = testf(x)
h = 1 + phi*cos(2*pi*x);
theta = -1:0.5:1.5;
F = theta - 1;
M = 2;
beta = 0;
alpha = 0;
y = -((F+h)*M^3*(cosh(h*M)+M*beta*sinh(h*M)))/(h*M*cosh(h*M)+(-1+h*M^2*beta)*sinh(h*M))- (alpha*(M^2*(F+h)*(-1+2*h^2*M^2+ cosh(2*h*M)-2*h*M*sinh(2*h*M)))/(8*(h*M*cosh(h*M)+(-1+h*M^2*beta)*sinh(h*M))^2));
end
end

并调用函数

tol = [1e-5 1e-3];
q = quad(@parameterIntegrate, 0, h,tol)
or
q = quad(@parameterIntegrate, 0,1 + phi*cos(2*pi*0.5),tol)

它不工作它给我

Error using ==> plus
Matrix dimensions must agree.

【问题讨论】:

    标签: matlab int


    【解决方案1】:

    您的错误消息的意思是,对于某些代码行,有 2 个矩阵,但维度不匹配,因此无法添加它们。我建议您解决此问题的方法如下:

    1. 准确找出导致问题的代码行。
    2. 如果该行包含大量变量,请将它们简化一些。
    3. 请记住,如果有任何矩阵,并且您不想进行矩阵乘法/除法,请使用 .*./.^

    我怀疑如果您使用第 3 步更改乘法/除法,您的问题就会消失。

    【讨论】:

    • 谢谢。我尝试了第 3 步,我仍然收到相同的消息。我会尝试检查代码中的每一行。
    猜你喜欢
    • 2015-04-28
    • 2016-11-14
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多