Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can*From*: Adrien Escande <adrien.escande@xxxxxxxxx>*Date*: Tue, 8 Sep 2020 09:04:12 +0900*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=yP5c/b+rAQNtaeh9dpLFgBWSmi7lJbCzZbG2HuOY9Tg=; b=KAF4Ccr3q6sC6MzvlbvvxVHjsj5DJFBO+rbxVkerc+LA5N2ErT19FKXZ/otby0dVDE k1570WjYjwXNsQrd18HWCR/8Ygdj1T1US11I8C7OIQvrz4ZPaV5aU09Mhz/RDlBXzIC3 XYkTMqsU/614VYeGFA3AKmZFqxxrKAHl155raYqc5cdvB3v07bZuDJO9ZidRn1ZbLzJ/ itblXDlc9WEiEIATBm5ftvPOH1ysWE+gVyau1RJjW79BQ8VcddyyaicTJobckoHlgLgQ o9/hopFHKjrnqMXdp3oQHmufvFMAUCTcuKKfLlAAa6tamUvabEGzk/sduuGU7PmShPsD f+bQ==

I was able to confirm the results of Eigen in Matlab using a simple x = A.lu().solve(b); (your matrix has a condition number of about 200, so we're good on the numerical issue front).

My best guess is that you have I/O problems. Did you confirm that the matrix you are using in Eigen is the matrix you intend to use? In particular: are you using the full precision of the file, and, most importantly, did you pay attention to the fact Eigen's matrices are column major (while reading your file sequentially is akin to having row major data) ?

Adrien

On Tue, Sep 8, 2020 at 8:32 AM ztdepyahoo <ztdepyahoo@xxxxxxxxx> wrote:

Thanks I solve it withI have a exact solution of "cos(6*Pi*x)*cos(6*Pi*y)", so i can obtain the absolute error. the order of error from Armadillo is "-14", while Eigen's error has an order of "1". I also tried other methods "fullPivLu()", "householderQr()", the situation doesn't change.But if i compute the relative error with Eigen's " double relative_error = (A*x - b).norm() / b.norm()", the relative_error is very small. I am confused by this situations.

On 9/8/2020 07:18，Adrien Escande<adrien.escande@xxxxxxxxx> wrote：Hi there,could you be more precise: how did you try to solve your problem with Eigen? How do you know/check that the problem is not solved correctly ?Best regards,Adrien EscandeOn Tue, Sep 8, 2020 at 12:55 AM ztdepyahoo <ztdepyahoo@xxxxxxxxx> wrote:Dear sir:The matrix is generated from the spectral method of a simple heat diffusion problems, the dimension is 841.Attachment please find the a and rhs output from Armadillo.I am wandering why eigen's dense linear sover cann't solve it correctly.Regards

**Follow-Ups**:

**References**:**[eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can***From:*ztdepyahoo

**Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can***From:*Adrien Escande

**Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can***From:*ztdepyahoo

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can** - Next by Date:
**Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can** - Previous by thread:
**Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can** - Next by thread:
**Re: [eigen] help: eigen cann't solve this simple ax correctly, but Armadillo c++ can**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |